0

我试图使用 r 中的 nlme 包来做一个多级线性模型。

对于 6 个不同的位置(州),我将产量作为响应变量,将降雨量作为预测变量,持续 60 年。我想看看降雨是否对所有地区的产量产生相同程度的影响或不同的影响。原则上,我试图查看产量与降雨量的斜率是否在不同地点之间存在显着差异。因此降雨是我的随机效应。我建立了这样的模型:

  # baseline model which only includes intercept
  mdl1<-gls(yield ~ 1,data = data, method="ML")

  #intercept as random effect
  mdl2<-lme(yield ~ 1,data=data,random = ~1|state,method="ML")  

  # slope as random effect
  mdl3<-lme(yield ~ rain, data = data, random = ~rain|state,method="ML")

  ##compare the three model
  anova(mdl1,mdl2,mdl3)
  #this shows me when I add slope as random effect, my model shows better fit compared to baseline model (mdl1)

这一切正常。当我使用另一个预测变量(计数数据)进行相同的分析时,问题就开始了。

 # baseline model which only includes intercept: Works fine
 mdl4<-gls(yield ~ 1,data = data, method="ML")

 #intercept as random effect - works fine
mdl5<-lme(yield ~ 1,data=data,random = ~1|state,method="ML")  

 # include different predictor (break) this time instead of rain
 mdl6<-lme(yield ~ break, data = data, random = ~break|state,method="ML")

当我运行 mdl 6 时,这给了我错误

 Error in lme.formula(res_yld ~ brk, data = data, random = ~brk | state,  : 
 nlminb problem, convergence error code = 1
 message = iteration limit reached without convergence (10)

我完全不知道为什么会这样。我的第一个预测器一切正常,但这不适用于另一个预测器。我在这里做错了什么?我尝试在网上阅读此内容,但这些帖子对我来说不是很清楚。我真的很感激任何人都可以解决这个问题。谢谢

4

1 回答 1

1

从错误消息中,您可以看到在算法收敛之前达到了最大迭代次数。从文档中,您似乎可以通过以下方式增加它:

lmeControl(msMaxIter = 50)

但请注意,缓慢的收敛也可能指向一个不适定问题。因此,请检查您是否确实可以从数据中估算出您要估算的内容。

于 2014-06-05T10:43:02.007 回答