r_u*_*ser 4 r bayesian rstan 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)
我将如何实施这些信息?
感谢任何帮助,谢谢!
\xce\xb21 \xe2\x88\x88 (\xe2\x88\x9215,\xe2\x88\x925) 表示(基于先验信息)我们期望 x1 的系数大致在 -15 到 - 范围内5,因此我们选择平均值 = -10 和 sd = 5 的正态先验,这将大部分先验概率置于 -15 和 -5 之间,并且对该范围之外的值更加怀疑。同样,\xce\xb22 \xe2\x88\x88 (\xe2\x88\x921,1) 意味着我们期望x2的系数在 -1 到 1 的范围内,因此我们选择平均值=0 的正态先验,并且标准差=2。这些先前的选择在小插图中表示为 \xce\xb2\xe2\x88\xbcNormal((\xe2\x88\x9210,0),(5,0,0,2)) (均值和方差的矩阵形式/协方差)。
\n举一个具体的例子,假设我们想要将以下模型与mtcars数据框拟合:
mpg ~ wt + hp + cyl\nRun Code Online (Sandbox Code Playgroud)\n我们想要指定三个预测变量的先验。假设我们想要均值分别为 -1、0、1 和标准差为 4、2、3 的高斯先验。我们按如下方式创建它们:
\nmy_prior <- normal(location = c(-1, 0, 1), scale = c(4, 2, 3), autoscale = FALSE)\nRun Code Online (Sandbox Code Playgroud)\n类似地,我们可以为截距和误差标准差创建先验(这就是prior_aux本例中的情况):
my_prior_intercept <- student_t(4, 0, 10, autoscale=FALSE)\nmy_prior_aux <- cauchy(0, 3, autoscale=FALSE)\nRun Code Online (Sandbox Code Playgroud)\n那么模型函数为:
\nm1 = stan_glm(mpg ~ wt + hp + cyl, data = mtcars, \n prior = my_prior, \n prior_intercept=my_prior_intercept,\n prior_aux=my_prior_aux)\nRun Code Online (Sandbox Code Playgroud)\n