如何使用rstanarm放置不同的先验

时间:2017-08-07 09:35:56

标签: r stan rstan rstanarm

假设我有y=a_{i} + b_{i,1}*x_{1} + b_{2}*x_{2}表单的模型,其中i=1,2,...,12我希望使用rstanarm估算此模型。

是否可以为每个拦截a_{i}设置不同的先验(所以假设前4个有normal(location = 0, scale = 1, autoscale = TRUE),后4个有normal(location = 1, scale = 2, autoscale = TRUE),最后4个student_t(df = 1, location = 0, scale = NULL, autoscale = TRUE) })。我还想为b_{i,1}和最后b_{2}~normal(location = 3, scale = 1, autoscale = TRUE)设置相同的先验。

rstanarm是否可以做到这一点?

1 个答案:

答案 0 :(得分:2)

rstanarm 支持的模型中最多只有一个截距,但您可以通过在公式中包含-1并将虚拟变量上的系数视为系数来抑制截距。对于系数,你可以做类似的事情 prior = student_t(df = c(rep(Inf, 8), rep(1, 4)), location = c(rep(0, 4), rep(1, 4), rep(0, 4)), scale = c(rep(1, 4), rep(2, 4), rep(1, 4)), autoscale = TRUE) 但似乎你打算采用某种层次模型,在这种情况下,与全局参数偏差的先验只能是多元正态。请参阅?prior_decov