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