对于我的研究生研究,我使用 CPLM 包(特别是 cpglmm 函数)来解释数据集中的零膨胀数据(Tweedie 复合泊松分布),以查看记录对繁殖鸟类密度的影响。这不是像lme4、nlme等广泛使用的包。因此,可以在这些更常用的包上使用的模型验证方法不能在cpglmm上使用。
我目前正处于描述模型拟合的阶段,并且正在尝试计算 R 平方值,包括边际值和条件值。不幸的是,我不能使用 r2glmm 包或 MuMln 来计算 R 平方值,因为它们不支持 cpglmm。因此,我不得不通过此处找到的示例手动计算这些值(示例在附录 6 中的 cpglmm 寄生虫模型下,第 33 页)。这是该示例中的脚本:
# Fit null model without fixed effects (but including all random effects)
parmodCPr <- cpglmm(Parasite ~ 1 + (1 | Population) + (1 | Container), data = DataAll)
# Fit alternative model including fixed and all random effects
parmodCPf <- cpglmm(Parasite ~ Sex + Treatment + Habitat + (1 | Population) +
(1 | Container), data = DataAll)
# Calculation of the variance in fitted values
VarF <- var(as.vector(model.matrix(parmodCPf) %*% fixef(parmodCPf)))
# getting the observation-level variance Null model
phiN <- parmodCPr@phi # the dispersion parameter
pN <- parmodCPr@p # the index parameter
mu <- exp(fixef(parmodCPr) + 0.5 * (VarCorr(parmodCPr)$Population[1] + VarCorr(parmodCPr)$Container[1]))
VarOdN <- phiN * mu^(pN - 2) # the delta method
# Full model
phiF <- parmodCPf@phi # the dispersion parameter
pF <- parmodCPf@p # the index parameter
VarOdF <- phiF * mu^(pF - 2) # the delta method
# R2[GLMM(m)] - marginal R2[GLMM]; using the delta method observation-level variance
R2glmmM <- VarF/(VarF + sum(as.numeric(VarCorr(parmodCPf))) + VarOdF)
# R2[GLMM(c)] - conditional R2[GLMM] for full model
R2glmmC <- (VarF + sum(as.numeric(VarCorr(parmodCPf))))/(VarF + sum(as.numeric(VarCorr(parmodCPf))) +
VarOdF)
我想要做的是在 R 中编写一个函数,使用此代码输出边际和条件 R 平方值(RglmmM 和 RglmmC),并将我的模型作为输入。我非常感谢任何有关此问题的帮助。希望我提供了足够的信息。
谢谢。