零膨胀数据的混合效果模型-使用来自“ pscl”包的zeroinfl()的错误消息

时间:2018-06-25 04:31:27

标签: r glm mixed-models poisson pscl

我的'pscl'软件包中的功能zeroinfl()遇到问题。这是我的情况的概述:

我正试图找出一个样地中的非本地茎密度是否受到该样地中的焦点物种的影响。我正在使用一个混合效果模型,其中随机效果是该地点(我在6个不同的地点收集了数据)。这就是使用'lme4'包中的glmer()函数的混合模型的样子:

nonstem.model <- glmer(nonstem ~ focalspecies + (1|site), family = "poisson", data = data, na.action=na.omit)

问题是我的数据膨胀为零,这意味着有很多地块不存在非本地物种。因此,我尝试使用“ pscl”包中的zeroinfl()函数。

nonstem.ZIP = zeroinfl(nonstem ~ focalspecies + (1|site), dist="poisson", link = "logit", data = data)

但是我收到一条错误消息:

  

contrasts<-*tmp*中的错误,值= contr.funs [1 + isOF [nn]]):
  对比度只能应用于2个或更多水平的因数   另外:警告消息:在Ops.factor(1,site)中:“ |”没有意义   因素分析

所以我搜集到这里不能有随机效果,因此将其更改为固定效果。

nonstem.ZIP = zeroinfl(nonstem ~ focalspecies + site, dist="poisson", link = "logit", data = data)

但是,现在我收到此错误消息:

  

solve.default(as.matrix(fit $ hessian))中的错误:系统为   计算奇数:倒数条件数= 4.70937e-36

如果我将分布从“ poisson”更改为“ negbin”,则会出现类似的错误消息:

  

solve.default(as.matrix(fit $ hessian))中的错误:系统为   计算奇数:倒数条件数= 2.92265e-19

有人知道此错误消息的含义吗?还是我可以使用其他包装/功能?任何帮助深表感谢。

1 个答案:

答案 0 :(得分:1)

关于您的评论,您可以使用基数R的stats::anova比较两个模型。

以下是使用Salamanders中的glmmTMB个示例数据的可复制示例

library(glmmTMB);
fit1 = glmmTMB(
    count ~ spp * mined + (1|site),
    zi = ~ spp * mined,
    data = Salamanders,
    family = poisson);
fit2 = glmmTMB(
    count ~ spp + mined + (1|site),
    zi = ~ spp + mined,
    data = Salamanders,
    family = poisson);

anova(fit1, fit2)
#Data: Salamanders
#Models:
#fit2: count ~ spp + mined + (1 | site), zi=~spp + mined, disp=~1
#fit1: count ~ spp * mined + (1 | site), zi=~spp * mined, disp=~1
#     Df    AIC    BIC  logLik deviance  Chisq Chi Df Pr(>Chisq)
#fit2 17 1785.5 1861.4 -875.75   1751.5
#fit1 29 1778.1 1907.7 -860.04   1720.1 31.405     12   0.001708 **
#---
#Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

应归功于贷方的信用额:该示例已根据here进行了调整。