我在使用R语言做混合模型时,出现了不收敛的情况。请各位帮忙看看如何改进代码可以收敛,非常感谢。数据我放到附加中。以下是我的程序和报错信息和警告信息:
dat5<-rbind(#使4个响应变量都在y中,以index列区分
+ cbind(plot=data$region,tree=data$plotno,index=1,y=data$wb,
G_wb=data$G,
H69_wb=data$H69,
G_wr=0,
H69_wr=0),
+ cbind(plot=data$region,tree=data$plotno,index=2,y=data$wr,
G_wb=0,
H69_wb=0,
G_wr=data$G,
H69_wr=data$H69))
dat5<-as.data.frame(dat5)
fm24.nlme<-nlme(y~(b12)*G_wb^(b22)*H69_wb^(b32)+ (b14)*G_wr^(b24)*H69_wr^(b34),
data=dat5,
fixed=b12+b22+b32+
b14+b24+b34~1,
random=(b12+b14~1|plot),
weights=varIdent(form = ~1|index),
corr=corSymm(form = ~index|plot/tree),
start=c(b12=0.01206,b22=1.03969,b32=1.48287,
b14=0.4466,b24=1.02909,b34=0.2541),
control=list(maxIter=5000,msMaxIter=5000,msMaxEval=5000))
Error in nlme.formula(y ~ (b12) * G_wb^(b22) * H69_wb^(b32) + (b14) * :
maximum number of iterations (maxIter = 5000) reached without convergence
In addition: There were 35 warnings (use warnings() to see them)
> fm24.nlme
Error: object 'fm24.nlme' not found
> warnings()
警告信息:
1: In nlme.formula(y ~ (b12) * G_wb^(b22) * H69_wb^(b32) + ... :
Iteration 1, LME step: nlminb() did not converge (code = 1). PORT message: singular convergence (7)
2: In nlme.formula(y ~ (b12) * G_wb^(b22) * H69_wb^(b32) + ... :
Singular precision matrix in level -1, block 1
3: In nlme.formula(y ~ (b12) * G_wb^(b22) * H69_wb^(b32) + ... :
Singular precision matrix in level -1, block 1
4: In nlme.formula(y ~ (b12) * G_wb^(b22) * H69_wb^(b32) + ... :
Singular precision matrix in level -1, block 1
5: In nlme.formula(y ~ (b12) * G_wb^(b22) * H69_wb^(b32) + ... :
Singular precision matrix in level -1, block 1