为Rstanarm中的每个预测变量指定先验

时间:2019-04-04 18:20:08

标签: r bayesian rstan rstanarm

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

我将如何实施此信息?

感谢您的帮助, 谢谢!

1 个答案:

答案 0 :(得分:1)

β1∈(−15,−5)表示(基于先验信息)我们期望 x1 的系数在-15至-5的范围内,因此我们选择一个法线均值= -10和sd = 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)