我试着使用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)我完全不知道为什么会发生这种情况。对于我的第一个预测器,一切正常,但在另一个预测器上则不起作用。我在这里做错了什么?我试着在网上读到这个,但帖子对我来说不是很清楚。我真的很感激任何人能在这件事上帮我。谢谢
发布于 2014-06-05 18:43:02
从错误消息中,您可以看到算法在收敛之前已达到最大迭代次数。从文档中看,您似乎可以使用以下内容来增加它:
lmeControl(msMaxIter = 50)但要注意,缓慢的收敛也可能指向不适定的问题。因此,请检查您是否确实可以从您的数据中估计您正在尝试估计的内容。
https://stackoverflow.com/questions/24057528
复制相似问题