如何解决R 中使用最小函数的贝叶斯 LMM 不能提供合理的估计
最小函数在模型拟合中可能会出现问题,因为它们引入了太多的自由度。我仍然想拟合这样一个模型来回答一个理论问题。它是一个由两条路线组成的线性混合效应模型。这个想法是对某些项目的预测响应是由 route1 或 route2 做出的——无论哪个路由做出较小的预测。 rstan
代码(至少对于模型而言)如下所示:
model {
real mu_route1;
real mu_route2;
real mu; //priors
u ~ normal(0,sigma_u); //subj random effects
w ~ normal(0,sigma_w); //item random effects
pp ~ normal(0.5,100); //penalty - high SD due to uncertainty about effect
// priors based on other data
b1 ~ normal(0.252191,0.903787);
b2 ~ normal(0.018582,0.4455987);
b3 ~ normal(0.199111,0.9162555);
b5 ~ normal(-0.052183,0.7654226);
b6 ~ normal(-0.056539,0.8138441);
for (i in 1:N) {
if (x4[i] == -1) { // simple cases
mu = intercept + b1*x1[i] + b2*x2[i] + b3*x3[i] + b5*x5[i] + u[subj[i]] + w[item[i]];
} else if (x4[i] == 1) { // complex cases
mu_route1 = intercept + b1*x1[i] + b2*x2[i] + b3*x3[i] + b6*x6[i] + u[subj[i]] + w[item[i]];
mu_route2 = intercept + b1*x1[i] + b2*x2[i] + b3*x3[i] + b5*x5[i] + pp + u[subj[i]] + w[item[i]];
mu = fmin(mu_route1,mu_route2); // here,the minimum of the two routes is computed
}
y[i] ~ normal(mu,sigma_e);
}
}
在路径 2 中,将惩罚变量添加到预测中。不幸的是,这个惩罚的估计值高得难以置信,也就是说,它大约是 100,而所有其他变量的影响都在 0 和 1 之间(变量被归一化)。想象一下,一个人平均需要一秒钟才能说出诸如“say”之类的单词拼写是否正确。对于更复杂的词,例如“主席”,需要 100 秒是没有意义的。
由于对惩罚的高估计,路由 2 永远不会决定最终的预测。我认为模型收敛于这个值,因为它使拟合更加容易。不过,我想知道我是否可以以不同的方式实现模型,以便估计更合理的惩罚值。从理论上讲,惩罚与一些耗时的过程有关,导致路线 2“赢得比赛”只是有时。
您可以从我的 repository 下载可重现的示例(Rscript、stan-code 和数据)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。