【发布时间】:2020-05-18 22:32:42
【问题描述】:
我正在使用零膨胀和过度分散且具有随机效应的计数数据(可用 here)。最适合处理此类数据的软件包是 glmmTMB(详情 here 和故障排除 here)。
在处理数据之前,我检查了它的正态性(它是零膨胀的)、方差同质性、相关性和异常值。数据有两个异常值,我从上面的数据集 linekd 中删除了它们。来自 18 个位置的 351 个观测值 (prop_id)。
数据如下:
euc0 ea_grass ep_grass np_grass np_other_grass month year precip season prop_id quad
3 5.7 0.0 16.7 4.0 7 2006 526 Winter Barlow 1
0 6.7 0.0 28.3 0.0 7 2006 525 Winter Barlow 2
0 2.3 0.0 3.3 0.0 7 2006 524 Winter Barlow 3
0 1.7 0.0 13.3 0.0 7 2006 845 Winter Blaber 4
0 5.7 0.0 45.0 0.0 7 2006 817 Winter Blaber 5
0 11.7 1.7 46.7 0.0 7 2006 607 Winter DClark 3
响应变量为euc0,随机效应为prop_id 和quad_id。其余变量是固定效应(均代表不同植物物种的覆盖百分比)。
我要运行的模型:
library(glmmTMB)
seed0<-glmmTMB(euc0 ~ ea_grass + ep_grass + np_grass + np_other_grass + month + year*precip + season*precip + (1|prop_id) + (1|quad), data = euc, family=poisson(link=identity))
fit_zinbinom <- update(seed0,family=nbinom2) #allow variance increases quadratically
运行seed0代码后我得到的错误是:
optimHess(par.fixed, obj$fn, obj$gr) 中的错误:优化中的梯度 评估为长度 1 而不是 15 另外:有 50 或更多 警告(使用 warnings() 查看前 50 个)
warnings() 给出:
1. In (function (start, objective, gradient = NULL, hessian = NULL, ... :
NA/NaN function evaluation
我通常也指中心化和标准化我的数值变量,但这只会删除第一个错误并保留NA/NaN 错误。我尝试添加 glmmTMBControl 语句,例如 this OP,但它打开了一个全新的错误世界。
我该如何解决这个问题?我做错了什么?
非常感谢您提供详细的解释,以便我将来可以自己学习如何更好地解决此问题。 或者,我对MCMCglmm 解决方案持开放态度,因为该函数也可以处理此类数据(尽管运行时间更长)。
【问题讨论】:
-
您有充分的理由使用身份链接泊松吗?通常,不将响应规模预测限制在响应分布域的链接函数(或特别是反向链接函数)在计算上很棘手。
-
您能说出您认为哪些观察结果是异常值吗?带有
euc0==78的那个看起来很可疑;还有哪一个? -
@BenBolker 这两个异常值是
euc0==78和np_other_grass==20。在阅读了故障排除文档后,我开始使用身份链接(“如果您使用的是非身份链接功能(例如 log、logit),那么 |β|>10 的参数值是可疑的(对于 logit 链接,这意味着概率非常接近 0 或 1;对于日志链接,这意味着平均计数接近 0 或非常大)。”虽然我对链接函数不够精通,所以我通常将它们保留为默认值(最初因为这些错误而改变了它。 -
是的,这不是正确的解决方案...
标签: r convergence standardized glmmtmb