我正在使用零膨胀和过度分散且具有随机效应的计数数据(可在此处获得)。最适合处理此类数据的软件包是glmmTMB
(此处的详细信息和此处的故障排除)。
在处理数据之前,我检查了它的正态性(它是零膨胀的)、方差同质性、相关性和异常值。数据有两个异常值,我从上面的数据集 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) 中的错误:optim 中的梯度评估为长度 1 而不是 15 另外:有 50 个或更多警告(使用 warnings() 查看前 50 个)
warnings()
给出:
1. In (function (start, objective, gradient = NULL, hessian = NULL, ... :
NA/NaN function evaluation
我通常也指中心化和标准化我的数值变量,但这只会消除第一个错误并保留NA/NaN
错误。我尝试添加这样的glmmTMBControl
语句OP,但它只是打开了一个全新的错误世界。
我怎样才能解决这个问题?我究竟做错了什么?
将不胜感激详细的解释,以便我将来可以学习如何更好地解决此问题。或者,我对MCMCglmm
解决方案持开放态度,因为该功能也可以处理此类数据(尽管运行时间更长)。