为 rstanarm 中的每个预测变量指定先验
Specifying priors for each predictor in 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 ∈ (−15,−5) 表示(根据先验信息)我们期望 x1 的系数大致在 -15 到 -5 的范围内, 所以我们选择 mean=-10 和 sd=5 的正态先验,这使得大部分先验概率在 -15 和 -5 之间,并且对该范围之外的值更加怀疑。同样,β2 ∈ (−1,1) 意味着我们期望 x2 的系数在 -1 到 1 的范围内,因此我们选择 mean=0 和 sd= 的正态先验2.这些先验选择在小插图中标记为 β∼Normal((−10,0),(5,0,0,2))(均值和 variance/covariance 的矩阵形式)。
举个具体的例子,假设我们要用 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)
我正在通过 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 的正态先验,这使得大部分先验概率在 -15 和 -5 之间,并且对该范围之外的值更加怀疑。同样,β2 ∈ (−1,1) 意味着我们期望 x2 的系数在 -1 到 1 的范围内,因此我们选择 mean=0 和 sd= 的正态先验2.这些先验选择在小插图中标记为 β∼Normal((−10,0),(5,0,0,2))(均值和 variance/covariance 的矩阵形式)。
举个具体的例子,假设我们要用 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)