微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R 中使用最小函数的贝叶斯 LMM 不能提供合理的估计

如何解决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 举报,一经查实,本站将立刻删除。