2

我正在通过 rstanarm 开发一个贝叶斯回归模型,该模型将多项式、二项式和比例预测器组合在比例因变量上。作为常规模型,我的模型如下所示:

````
 *
 deaths - scale
 gender - binomial
 hours - scale
 time - multinomial (i.e., morning, night, afternoon)
 *
lm(deaths ~ gender + hours + time)

我试图通过 rstanarm 通过贝叶斯方法创建相同的模型,但是我对如何将不同的先验应用于每个预测变量感到困惑。

````
For example, lets say:
1. gender follows a beta prior
2. hours follows a normal prior
3. time follows a student_t

我将如何实施此信息?

任何帮助表示赞赏,谢谢!

4

1 回答 1

2

β1 ∈ (−15,−5) 意味着(基于先验信息)我们期望x1的系数大致在 -15 到 -5 的范围内,因此我们选择均值 = -10 和 sd= 的正态先验5,它将大部分先验概率置于 -15 和 -5 之间,并且对超出该范围的值持怀疑态度。同样,β2 ∈ (-1,1) 意味着我们期望x2的系数在 -1 到 1 的范围内,因此我们选择均值 = 0 和 sd = 2 的正态先验。这些先验选择在小插图中标记为 β∼Normal((-10,0),(5,0,0,2))(均值和方差/协方差的矩阵形式)。

举一个具体的例子,假设我们想用mtcars数据框拟合以下模型:

mpg ~  wt + hp + cyl

我们想为三个预测变量指定先验。假设我们想要高斯先验,分别具有 -1、0、1 的平均值和 4、2、3 的标准差。我们创建如下:

my_prior <- normal(location = c(-1, 0, 1), scale = c(4, 2, 3), autoscale = FALSE)

同样,我们可以为截距和误差标准差创建先验(prior_aux在这种情况下就是这样):

my_prior_intercept <- student_t(4, 0, 10, autoscale=FALSE)
my_prior_aux <- cauchy(0, 3, autoscale=FALSE)

那么模型函数为:

m1 = stan_glm(mpg ~  wt + hp + cyl, data = mtcars, 
              prior = my_prior, 
              prior_intercept=my_prior_intercept,
              prior_aux=my_prior_aux)
于 2019-04-04T18:47:54.883 回答