微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何为简单的随机斜率模型计算 SPSS 中线性混合模型的边际 r^2?

如何解决如何为简单的随机斜率模型计算 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(残差),

一个非常简单的随机截距模型的情况下,我通过以下方式计算这些:

  • 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 举报,一经查实,本站将立刻删除。