如何解决如何在R lme4中使用具有0截距的非线性混合模型函数对数据建模?
我想在lme4包中使用nlmer函数对数据建模,但截距为0时我认为lmer函数相对应;
fm <-lmer(log(data$PSAm)~ 0 +data$VN + data$Z1 + data$Fnl +(1|data$EQID) + (1|data$STID),data,REML=FALSE,lmerControl(optimizer ='optimx',optCtrl=list(method='nlminb')))
但是在nlmer函数中我不能写1 | EQID,当我尝试说1在nlmer中没有意义。
具有拦截功能的功能如下:
nlmer_site <- nlmer( log(PSAm) ~ Sandikkaya_NLSite(PSAr,Vs30,h800,b0,b1,b2,b3) ~ b0+ b1 + b2 + b3 +(b0+0|EQID)+ (b0+0|STID),data = data.frame(data),nlmerControl(optimizer = "Nelder_Mead"),start = c(b0=1,b1 = 0.2,b2 = 0.5,b3 =-1),nAGQ = 1L)
与相应的lmer函数给出的结果完全相同
fm <-lmer(log(data$PSAm)~ 1 +data$VN + data$Z1 + data$Fnl +(1|data$EQID) + (1|data$STID),optCtrl=list(method='nlminb')))
但是我不知道如何在nlmer中实现0拦截,我尝试了下面的代码,但是它们与lmer中的0 + ...(1 | EQID)+(1 | STID)不同
nlmer_site <- nlmer( log(PSAm) ~ Sandikkaya_NLSite(PSAr,b3) ~ 0+ b1 + b2 + b3 +(0+b1|EQID)+(0+b2|EQID)+(0+b3|EQID)+ (0+b1|STID)+ (0+b2|STID) + (0+b3|STID),start = c( b1 = 0.2,nAGQ = 1L)
nlmer_site <- nlmer( log(PSAm) ~ Sandikkaya_NLSite(PSAr,b3) ~ 0+ b1 + b2 + b3 +(b1+b2+b3+0|EQID)+ (b1+b2+b3+0|STID),nAGQ = 1L)
上面的第一个代码也对应于
fm <-lmer(log(data$PSAm)~ 0 +data$VN + data$Z1 + data$Fnl +(0+data$VN|data$EQID)+(0+data$Z1|data$EQID)+(0+data$Fnl|data$EQID) + (0+data$VN|data$STID)+ (0+data$Z1|data$STID)+ (0+data$Fnl|data$STID)),optCtrl=list(method='nlminb')))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。