Для исследований в аспирантуре я использую пакет CPLM (в частности, функцию cpglmm) для учета данных с нулевым раздуванием (распределение Пуассона по составу Твиди) в наборе данных, изучающем влияние лесозаготовок на плотность гнездящихся птиц. Это не очень распространенный пакет, такой как 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) с моими моделями в качестве входных данных. Я был бы очень признателен за любую помощь с этой проблемой. Надеюсь, я предоставил достаточно информации.
Спасибо.