如何使用 rstanarm 放置不同的先验
How to put different priors using 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 做到这一点?
在 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
。
假设我有一个 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 做到这一点?
在 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
。