1

zeroinfl()对“pscl”包中的功能有疑问。以下是我的情况的概述:

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

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

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

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

但我收到一条错误消息:

contrasts<-( , value = contr.funs *tmp*[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

有谁知道这个错误信息是什么意思?或者如果我可以使用不同的包/功能?任何帮助深表感谢。

4

1 回答 1

3

关于您的评论,您可以使用 base Rstats::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

信用到期的信用:示例从此处调整。

于 2018-06-26T01:32:10.720 回答