我一直在阅读有关在混合模型中计算值的内容,并在阅读了 R-sig 常见问题解答、此论坛上的其他帖子(我会链接一些但我没有足够的声誉)和其他一些参考资料后,我知道使用值很复杂。
但是,我最近在下面看到了这两篇论文。虽然这些方法看起来很有希望(对我来说),但我不是统计学家,因此我想知道是否有其他人会对他们提出的方法有任何见解,以及它们将如何与已提出的其他方法进行比较。
中川、新一和霍尔格·席尔泽斯。“一种从广义线性混合效应模型中获得 R2 的通用且简单的方法。” 生态与进化方法 4.2 (2013): 133-142。
约翰逊,保罗 CD。“将 Nakagawa & Schielzeth 的 R2GLMM 扩展到随机斜率模型。” 生态与进化方法(2014 年)。
is 方法也可以使用 MuMIn 包中的 r.squaredGLMM 函数来实现,该包给出了该方法的以下描述。
对于混合效应模型,可以分为两种类型。边际表示由固定因素解释的方差,定义为: R_{GLMM}(m)^2 = \frac{σ_f^2}{σ_f^2 + \sum(σ_l^2) + σ_e^2 + σ_d^2} 条件R^2被解释为由固定和随机因素(即整个模型)解释的方差,并根据以下等式计算: R_{GLMM}(c)^2= \frac{(σ_f ^2 + \sum(σ_l^2))}{(σ_f^2 + \sum(σ_l^2) + σ_e^2 + σ_d^2} 其中σ_f^2是固定效应分量的方差,\sum (σ_l^2)是所有方差分量(组、个体等)的总和,σ_l^2
是由于加性色散引起的方差,是特定于分布的方差。
在我的分析中,我正在查看纵向数据,我主要对模型中的固定效应解释的方差感兴趣
library(MuMIn)
library(lme4)
fm1 <- lmer(zglobcog ~ age_c + gender_R2 + ibphdtdep + iyeareducc + apoegeno + age_c*apoegeno + (age_c | pathid), data = dat, REML = FALSE, control = lmerControl(optimizer = "Nelder_Mead"))
# Jarret Byrnes (correlation between the fitted and the observed values)
r2.corr.mer <- function(m) {
lmfit <- lm(model.response(model.frame(m)) ~ fitted(m))
summary(lmfit)$r.squared
}
r2.corr.mer(fm1)
[1] 0.8857005
# Xu 2003
1-var(residuals(fm1))/(var(model.response(model.frame(fm1))))
[1] 0.8783479
# Nakagawa & Schielzeth's (2013)
r.squaredGLMM(fm1)
R2m R2c
0.1778225 0.8099395