如何解决如何为简单的随机斜率模型计算 SPSS 中线性混合模型的边际 r^2?
TLDR:
如何将 Johnson,P. C. (2014) 论文对应的边际和条件 R^2 转化为 SPSS 中具有非结构化协方差类型和单个随机斜率的简单随机斜率模型?
更长:
在 R 中,我使用 MuMin 包中的 r.squaredGLMM() 函数根据 Johnson,P. C. (2014) 计算混合模型的边际和条件 R^2。 Nakagawa & Schielzeth 的 R2GLMM 扩展到随机斜率模型。生态学与进化方法,5(9),944-946.
我现在正在使用 SPSS 教授混合模型课程,我想为学生提供一个工具,通过该工具他们还可以计算边际和条件 R^2。 However,SPSS does not provide this in its outputs for mixed models。
我在 how to compute the marginal and conditional R^2 in SPSS for random intercept models by Paul Johnson 上找到了说明。这需要计算: Vf(固定效应方差), Vr(随机效应方差), Ve(残差),
在一个非常简单的随机截距模型的情况下,我通过以下方式计算这些:
并使用公式:
- R^2m = Vf / (Vf + Vr + Ve)
- R^2c = (Vf + Vr) / (Vf + Vr + Ve)
这将返回与此 R 代码相同的结果:
library(lme4)
library(MuMIn)
library(insight)
data <- read.csv("https://raw.githubusercontent.com/kekecsz/SIMM32/master/2021/Lab_4/data_bully_slope.csv")
mod1 <- lmer(sandwich_taken ~ weight + (1|class),data = data)
summary(mod1)
r.squaredGLMM(mod1)
但是,我不知道如何将其推广到 SPSS 中的简单随机截距 + 斜率案例。 在 R 中,我能够得到这些方差分量:
mod2 <- lmer(sandwich_taken ~ weight + (weight|class),data = data)
Vf = var(predict(mod2,re.form=NA))
Vr = get_variance(mod2)$var.random
Ve = sigma(mod2)^2
并使用此公式:
R^2m = Vf / (Vf + Vr + Ve)
R^2c = (Vf + Vr) / (Vf + Vr + Ve)
返回与
相同的值r.squaredGLMM(mod2)
我可以在 SPSS 中以与上述相同的方式计算 Vf 和 Ve,但我无法在输出中找到随机效应的方差。我试图通过取结果变量的总方差并减去 Vf 和 Ve 来计算它:
Vtotal = var(model.response(model.frame(mod1)))
Vr = Vtotal - (Vf + Ve)
但是我从 Vr 得到的价值与我从中得到的不同
get_variance(mod2)$var.random
并且以这种方式计算的边缘和条件 R^2 不对应
r.squaredGLMM(mod2)
如何将 Johnson,P. C. (2014) 论文对应的边际和条件 R^2 转化为 SPSS 中具有非结构化协方差类型和单个随机斜率的简单随机斜率模型?
或者,可以合理地说以下内容会为简单的随机斜率模型给出边际和条件 R^2 的合理估计吗? (因为这是我可以在 SPSS 中计算的东西),但需要注意的是,这包括对边际 R^2 的轻微高估和对条件 R^2 的轻微低估?
Vtot = var(model.response(model.frame(mod2)))
Vf = var(predict(mod2,re.form=NA))
Ve = sigma(mod2)^2
Vr_est = Vtot - (Vf + Ve)
Rm_est = Vf / (Vf + Vr_est + Ve)
Rm_est
Rc_est = (Vf + Vr_est) / (Vf + Vr_est + Ve)
Rc_est
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。