假设我有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是否可以做到这一点?
答案 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
。