Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 理解和纠正glmmTMB和x2B中的错误收敛错误;lme4_R_Lme4_Glmmtmb - Fatal编程技术网

R 理解和纠正glmmTMB和x2B中的错误收敛错误;lme4

R 理解和纠正glmmTMB和x2B中的错误收敛错误;lme4,r,lme4,glmmtmb,R,Lme4,Glmmtmb,我正试图使用glmmTMB来运行我的模型的多次迭代,但不断得到相同的连续错误。我试图在下面解释我的实验,并插入了我试图运行的完整模型 实验背景 我试图建模的因变量是细菌16S基因拷贝数,在本例中用作细菌生物量的代理 实验设计是,我有来自8条河流的河流沉积物,这些河流沿着污染梯度下降(冲击到原始状态)。(系数1=水流,含8个水位) 对于8个流中的每个流,执行以下操作:, 将沉淀物添加到6个托盘中。将其中3个托盘放入加热至13°C的人工流道中,同时将其他3个托盘加热至17°C(系数2=加热处理,2级

我正试图使用
glmmTMB
来运行我的模型的多次迭代,但不断得到相同的连续错误。我试图在下面解释我的实验,并插入了我试图运行的完整模型

实验背景 我试图建模的因变量是细菌16S基因拷贝数,在本例中用作细菌生物量的代理

实验设计是,我有来自8条河流的河流沉积物,这些河流沿着污染梯度下降(冲击到原始状态)。(系数1=水流,含8个水位)

对于8个流中的每个流,执行以下操作:, 将沉淀物添加到6个托盘中。将其中3个托盘放入加热至13°C的人工流道中,同时将其他3个托盘加热至17°C(系数2=加热处理,2级)。共有16个通道,加热处理被随机分配到一个通道

然后,我在四个时间点上重复测量每个河道中的3个托盘(系数3=天,4个水平)

此时此刻,我将托盘视为真正的生物复制品,而不是伪复制品,因为托盘在通道中彼此相距很远,但这有待探索

因此,总结一下:模型术语是(全部指定为因子):

  • 加温处理(13比17摄氏度)
  • 流线(1,2,3,4,5,6,7,8)
  • 日(T1、T4、T7、T14)
我提议的完整模型是

X4_tmb.nb2<-glmmTMB(CopyNo~Treatment*Stream*Time, family=nbinom2, data=qPCR)   
据我从阅读中了解 @第225行,可以使用此软件包在GLMs和GLMMs之间进行交叉比较。你知道我是否理解正确吗

我还使用了
DHARMa
包来帮助验证使用
glmmTMB
未能收敛的模型和版本,通过了KStest、离散度测试、离群值测试和组合调整分位数测试,但理想情况下我不希望出现收敛错误

任何帮助都将不胜感激

这里有一群人

警告信息 不幸的是,很难做到这一点:这是一项艰巨的任务。如图所示,您可以尝试其他优化器,例如include

 control = glmmTMBControl(optimizer = optim, optArgs = list(method="BFGS"))
在你的电话里。希望这将给出一个非常类似的答案(在这种情况下,您会得出结论,收敛警告可能是误报,因为不同的优化器不太可能以相同的方式失败),而没有警告。(作为第三种选择,您可以尝试上面的
method=“CG”
)(请注意,在使用替代优化器时,打印和汇总输出时存在一个小错误;如果在修复程序传播到CRAN之前正在处理此问题,您可能希望安装开发版本。)

“lme4”模型
glm.nb()
函数不是来自
lme4
包,而是来自
MASS
包。如果您在模型中有随机效果,您将使用
glmer.nb()
,它位于
lme4
包中。。。与上面的优化器切换测试一样,如果您使用
glmmTMB
glm.nb
得到类似的答案,您可以得出结论,来自
glmmTMB
的警告(实际上,来自
nlminb()
优化器的
glmmTMB
内部调用)可能是误报

检查来自不同包的可能性/AIC是否相称的最简单方法是在两个包中匹配相同的模型,如果可能的话,例如

library(MASS)
library(glmmTMB)

quine.nb1 <- glm.nb(Days ~ Sex/(Age + Eth*Lrn), data = quine)
quine.nb2 <- glmmTMB(Days ~ Sex/(Age + Eth*Lrn), data = quine,
                     family=nbinom2)
all.equal(AIC(quine.nb1),AIC(quine.nb2))  ## TRUE
这符合(1)整体治疗效果;(2) 河流间的差异,河流间处理效果的差异;(3) 时间点内跨时间和跨流的变化。这仅使用2(固定:截距+处理)+3(截距方差、处理方差及其在流之间的协方差)+2(时间上的方差和时间内流之间的方差)。这不完全是“最大”模型;由于在每个流中每次都对两种处理进行测量,最后一项可以是(处理|时间/StreamID),但这会增加很多模型的复杂性。由于4组对于随机效果来说并不多,您可能会发现您希望将最后一个术语设置为
Time+(1 | Time:StreamID)
,它将时间设置为固定的,并且(时间内的流)设置为随机的…

这里有一组

警告信息 不幸的是,很难做到这一点:这是一项艰巨的任务。如图所示,您可以尝试其他优化器,例如include

 control = glmmTMBControl(optimizer = optim, optArgs = list(method="BFGS"))
在你的电话里。希望这将给出一个非常类似的答案(在这种情况下,您会得出结论,收敛警告可能是误报,因为不同的优化器不太可能以相同的方式失败),而没有警告。(作为第三种选择,您可以尝试上面的
method=“CG”
)(请注意,在使用替代优化器时,打印和汇总输出时存在一个小错误;如果在修复程序传播到CRAN之前正在处理此问题,您可能希望安装开发版本。)

“lme4”模型
glm.nb()
函数不是来自
lme4
包,而是来自
MASS
包。如果您在模型中有随机效果,您将使用
glmer.nb()
,它位于
lme4
包中。。。与上面的优化器切换测试一样,如果您使用
glmmTMB
glm.nb
得到类似的答案,您可以得出结论,来自
glmmTMB
的警告(实际上,来自
nlminb()
优化器的
glmmTMB
内部调用)可能是误报

检查来自不同包的可能性/AIC是否相称的最简单方法是在两个包中匹配相同的模型,如果可能的话,例如

library(MASS)
library(glmmTMB)

quine.nb1 <- glm.nb(Days ~ Sex/(Age + Eth*Lrn), data = quine)
quine.nb2 <- glmmTMB(Days ~ Sex/(Age + Eth*Lrn), data = quine,
                     family=nbinom2)
all.equal(AIC(quine.nb1),AIC(quine.nb2))  ## TRUE
这符合(1)整体治疗效果;(2) 河流间的差异,河流间处理效果的差异;(3) 时间点内跨时间和跨流的变化。这只使用2(固定:截距+处理)+3(截距方差,