标签: rstanarm

无法在Ubuntu 18.04 LTS上安装rstanarm

我无法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)

installation r stan rstanarm ubuntu-18.04

11
推荐指数
1
解决办法
528
查看次数

使用贝叶斯图绘制来自多个模型的后验参数估计

我正在使用很棒的绘图库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)

r ggplot2 rstan rstanarm

6
推荐指数
1
解决办法
342
查看次数

How to specify random coefficients priors in rstanarm?

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 …

regression r bayesian rstanarm

6
推荐指数
1
解决办法
204
查看次数

如何从 rstanarm 对象中提取 stan 代码

是否有可能在 rstanarm 中提取用于 MCMC 采样的 stan 代码?

我想将我自己的模型参数化和先前选择与 rstanarm 中使用的参数化进行比较。

r bayesian mcmc stan rstanarm

5
推荐指数
1
解决办法
945
查看次数

从另一个参考级别获取模型估计值,而无需运行新模型?

我想知道是否有一种简单的方法可以在不重新运行大型模型的情况下改变截距中的值,也许是数学上的。举个例子:

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)

r lme4 coefficients rstanarm glmmtmb

5
推荐指数
1
解决办法
203
查看次数

为什么`parameters::model_parameters` 会为负二项式`rstanarm` 模型抛出错误

我正在尝试为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)

r lme4 mixed-models sjplot rstanarm

5
推荐指数
1
解决办法
119
查看次数

从后验预测分布中采样(stan vs inla)

我正在尝试在对象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)

r mixed-models rstan rstanarm r-inla

5
推荐指数
0
解决办法
931
查看次数

在 rstanarm 中指定每个预测变量的先验

我正在通过 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)

我将如何实施这些信息?

感谢任何帮助,谢谢!

r bayesian rstan rstanarm

4
推荐指数
1
解决办法
1369
查看次数

如何在Stan模型中传递不同长度的向量列表和不同维度的矩阵列表?

我需要将数据作为具有不同长度的向量列表和具有相同行数但具有不同列数的矩阵列表传递。有没有办法在 Rstan 中传递数据?

stan rstan rstanarm

2
推荐指数
1
解决办法
1667
查看次数