我试图在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)
我完全不知道为什么会这样。一切都适用于我的第一个预测器,但这不适用于另一个预测器。我在这做错了什么?我尝试在网上阅读这些内容,但帖子对我来说不是很清楚。我真的很感激有人能帮我解决这个问题。感谢
答案 0 :(得分:1)
从错误消息中,您可以看到在算法收敛之前达到了最大迭代次数。从文档中,您似乎可以通过以下方式增加它:
lmeControl(msMaxIter = 50)
但请注意,缓慢的收敛也可能指向一个不适合的问题。因此,请检查您是否确实可以估算出您尝试根据数据估算的内容。