我正在通过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∈(-15,-5)意味着(基于先验信息)我们期望x1的系数在-15到-5的范围内,所以我们选择一个正态先验,其中mean = -10且sd = 5 。同样,β2∈(-1,1)意味着我们期望x2的系数在-1到1的范围内,因此我们选择一个正态先验,其中mean = 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)