问题描述
我正在尝试从 Liu & Abeyratne 的“贝叶斯可靠性的实际应用”中复制示例 8.2。原始示例(与分层模型相关)是在 JAGS 中完成的,我想在 BRMS 上重现它。
我能够创建并运行一个模型,其中 Weibull 形状对所有组都是通用的(在示例中,它是九代产品)。
现在我想制作一个模型,我也可以模拟“平均”形状和每个组的效果,就像拦截一样
这是有效的模型,其中的形状对所有组都是通用的:
priors <-
set_prior("gamma(a,b)",class = "Intercept") +
set_prior("gamma(c,d)",class = "shape") +
set_prior("target += gamma_lpdf(a | 6,0.4) - 1 * gamma_lccdf(0 | 6,0.4) +
gamma_lpdf(b | 2,0.2) - 1 * gamma_lccdf(0 |2,0.2) ",check = FALSE) +
set_prior("target += gamma_lpdf(c | 1,1) - 1 * gamma_lccdf(0 | 1,1) +
gamma_lpdf(d | 1,1) ",check = FALSE)
stanvars <- stanvar(scode = "real<lower=0> a;
real<lower=0> b;
real<lower=0> c;
real<lower=0> d;",block = "parameters")
brmsHyperModel <- brm(ttf | cens(censor) ~ 1 + (1 | gen),family = weibull,data = brmsData,prior = priors,stanvars = stanvars,iter = 41000,warmup = 4000,chains = 4,cores = 4,seed = 4,control = list(adapt_delta = .99))
我想运行这样的东西:
brmsForm <- bf(ttf | cens(censor) ~ 1 + (1 | gen),shape ~ 1 + (1 | gen))
错误:以下先验不对应任何模型参数:shape ~ gamma(c,d)
我试着改变“先验”,而不是添加第二个方程,添加一个组变量来塑造,就像这样:
priors <-
set_prior("gamma(a,class = "shape",group = 'gen' ) +
set_prior("target += gamma_lpdf(a | 6,check = FALSE)
但后来我得到的错误是:
错误:以下先验不对应任何模型参数:shape_gen ~ gamma(c,d)
两者都做也会导致我出错。我想象模型规范和我缺少的先前规范之间存在某种相互作用!
有人可以帮我吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)