我无法rstanarm在上R 3.5.3运行Ubuntu 18.04 LTS。我使用了以下命令:
install.packages("rstanarm")
Run Code Online (Sandbox Code Playgroud)
和
devtools::install_github("stan-dev/rstanarm", build_vignettes = FALSE)
Run Code Online (Sandbox Code Playgroud)
并且都引发以下错误:
Execution halted
Makevars:17: recipe for target 'stan_files/lm.cc' failed
make: *** [stan_files/lm.cc] Error 1
ERROR: compilation failed for package ‘rstanarm’
Run Code Online (Sandbox Code Playgroud)
sessionInfo
sessionInfo()
R version 3.5.3 (2019-03-11)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.2 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] …Run Code Online (Sandbox Code Playgroud) 我正在使用很棒的绘图库bayesplot来可视化我正在使用的模型的后验概率区间rstanarm。我想通过将系数的后验区间放到同一图上来以图形方式比较来自不同模型的绘制。
例如,想象一下,对于beta1, beta2, beta3两个不同模型的三个参数,我从后验中抽取了 1000 次:
# load the plotting library
library(bayesplot)
#> This is bayesplot version 1.6.0
#> - Online documentation and vignettes at mc-stan.org/bayesplot
#> - bayesplot theme set to bayesplot::theme_default()
#> * Does _not_ affect other ggplot2 plots
#> * See ?bayesplot_theme_set for details on theme setting
library(ggplot2)
# generate fake posterior draws from model1
fdata <- matrix(rnorm(1000 * 3), ncol = 3)
colnames(fdata) <- c('beta1', 'beta2', 'beta3')
# fake posterior …Run Code Online (Sandbox Code Playgroud) Suppose I have a following formula for a mixed effects model:
Performance ~ 1 + WorkingHours + Tenure + (1 + WorkingHours + Tenure || JobClass)
Run Code Online (Sandbox Code Playgroud)
then I can specify priors for fixed slopes and fixed intercept as:
prior = normal(c(mu1,mu2), c(sd1,sd2), autoscale = FALSE)
prior_intercept = normal(mean, scale, autoscale = FALSE)
Run Code Online (Sandbox Code Playgroud)
But how do I specify the priors for random slopes and intercept using
prior_covariance = decov(regularization, concentration, shape, scale)
Run Code Online (Sandbox Code Playgroud)
(or)
lkj(regularization, scale, df)
Run Code Online (Sandbox Code Playgroud)
if I know the variance …
是否有可能在 rstanarm 中提取用于 MCMC 采样的 stan 代码?
我想将我自己的模型参数化和先前选择与 rstanarm 中使用的参数化进行比较。
我想知道是否有一种简单的方法可以在不重新运行大型模型的情况下改变截距中的值,也许是数学上的。举个例子:
mtcars$cyl<-as.factor(mtcars$cyl)
summary(
lm(mpg~cyl+hp,data=mtcars)
)
Run Code Online (Sandbox Code Playgroud)
输出:
Call:
lm(formula = mpg ~ cyl + hp, data = mtcars)
Residuals:
Min 1Q Median 3Q Max
-4.818 -1.959 0.080 1.627 6.812
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 28.65012 1.58779 18.044 < 2e-16 ***
cyl6 -5.96766 1.63928 -3.640 0.00109 **
cyl8 -8.52085 2.32607 -3.663 0.00103 **
hp -0.02404 0.01541 -1.560 0.12995
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 3.146 on 28 …Run Code Online (Sandbox Code Playgroud) 我正在尝试为stan_glmer.nb( rstanarm) 输出创建一个表,但是model_parameters从包中parameters抛出一个奇怪的错误,我不确定如何解决。也许这是一个错误。
sessionInfo()版本信息的缩短输出:
R version 4.0.2 (2020-06-22)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
parameters_0.8.2
rstanarm_2.21.1
Run Code Online (Sandbox Code Playgroud)
一个可重现的例子:
library(rstanarm)
library(parameters)
x<-rnorm(500)
dat<-data.frame(x=x,z=rep(c("A","B","C","D","E"),100), y=.2+x*.7)
mod1<-stan_glmer(y~x+(x|z),data=dat)
model_parameters(mod1, effects="all")
Run Code Online (Sandbox Code Playgroud)
我将在此处为您节省输出,因为它并不重要,但该功能有效。现在负二项式模型:
dat.nb<-data.frame(x=rnorm(500),z=rep(c("A","B","C","D","E"),100),
y=rnbinom(500,size=1,prob = .5))
mod2<-stan_glmer.nb(y~x+(x|z),data=dat.nb)
model_parameters(mod2, effects="all")
Run Code Online (Sandbox Code Playgroud)
现在出现错误消息:
Error in `$<-.data.frame`(`*tmp*`, "parameter", value = c("(Intercept)", :
replacement has 3 rows, data has 1
Run Code Online (Sandbox Code Playgroud)
尽管在parameters0.10.1 版本中,@BenBolker 得到一个空白输出,而不是错误(见评论)。不管怎样,这个函数似乎不适用于rstanarm离散分布(见评论)。据我在帮助文档中看到,没有任何内容表明需要指定负二项式模型。此外,该功能适用于lme4模型:
library(lme4)
mod1<-lmer(y~x+(x|z),data=dat)
model_parameters(mod1, effects="all")
mod2<-glmer.nb(y~x+(x|z),data=dat.nb)
model_parameters(mod2, effects="all") …Run Code Online (Sandbox Code Playgroud) 我正在尝试在对象bayesplot上实现包中的函数INLA,并且有点不确定如何从后验预测分布中提取。我想我几乎已经拿到了,但是rstan 抽签比抽签更加多变INLA。
在 中,使用小插图rstan中的简化示例我可以:bayesplot
library(bayesplot)
library(ggplot2)
library(rstanarm)
library(ggpubr)
library(tidyverse)
#rstan model set up
roaches$roach100 <- roaches$roach1 / 100 # pre-treatment number of roaches (in 100s)
fit_poisson <- stan_glm(y ~ roach100 + treatment + senior, offset = log(exposure2), family = poisson(link = "log"), data = roaches, seed = 1111, refresh = 0)
#In order to use the PPC functions from the bayesplot package we need a vector y of outcome …Run Code Online (Sandbox Code Playgroud) 我正在通过 rstanarm 开发一个贝叶斯回归模型,该模型将多项式、二项式和尺度因变量的尺度预测器结合起来。作为常规模型,我的模型如下所示:
````
*
deaths - scale
gender - binomial
hours - scale
time - multinomial (i.e., morning, night, afternoon)
*
lm(deaths ~ gender + hours + time)
Run Code Online (Sandbox Code Playgroud)
我试图通过 rstanarm 通过贝叶斯方法创建相同的模型,但是我对如何将不同的先验应用于每个预测变量感到困惑。
````
For example, lets say:
1. gender follows a beta prior
2. hours follows a normal prior
3. time follows a student_t
Run Code Online (Sandbox Code Playgroud)
我将如何实施这些信息?
感谢任何帮助,谢谢!
我需要将数据作为具有不同长度的向量列表和具有相同行数但具有不同列数的矩阵列表传递。有没有办法在 Rstan 中传递数据?
rstanarm ×9
r ×8
rstan ×4
bayesian ×3
stan ×3
lme4 ×2
mixed-models ×2
coefficients ×1
ggplot2 ×1
glmmtmb ×1
installation ×1
mcmc ×1
r-inla ×1
regression ×1
sjplot ×1
ubuntu-18.04 ×1