我对"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 个或更多水平的因子 另外:警告消息:在操作因子(1,站点(中:"|"没有意义 对于因素
所以我收集到我在这里不能有随机效果,所以我把它改成了固定效果。
nonstem.ZIP = zeroinfl(nonstem ~ focalspecies + site, dist="poisson", link = "logit", data = data)
但是,现在我收到此错误消息:
solve.default(as.matrix(fit$hessian(( 中的错误:系统 is 计算单数:倒数条件数 = 4.70937E-36
如果我将分布从"泊松"更改为"negbin",则会出现类似的错误消息:
solve.default(as.matrix(fit$hessian(( 中的错误:系统 is 计算单数:倒数条件数 = 2.92265E-19
有谁知道这个错误消息是什么意思?或者,如果我可以使用不同的包/功能?任何帮助都非常感谢。
关于您的评论,您可以使用base R的stats::anova
来比较两个模型。
下面是一个可重现的示例,使用来自glmmTMB
的Salamanders
示例数据
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
应贷方的信用:示例从此处调整。