如何用r2glmm获取混合模型中整体检验的效应量?
问题描述
我有一个包含四列的数据框:
- ID:被试编号
- F1:含两个水平(A;B)的第一个因子
- F2:含三个水平(C;D;E)的第二个因子
- Score:某变量得分
被试与两个因子为交叉设计。以下是结构模拟示例:
df <- data.frame(ID = rep(1:10, each = 6), F1 = factor(rep(c("A","B"), n = 30)), F2 = factor(rep(c("C","D","E"), each = 2, n = 10)), score = rnorm(60, mean = 4, sd = 0.8)) ID F1 F2 score 1 1 A C 4.066147 2 1 B C 3.613192 3 1 A D 3.897367 4 1 B D 3.612968 5 1 A E 3.157702 6 1 B E 3.707172 7 2 A C 2.984475 8 2 B C 4.488807 9 2 A D 4.711186 10 2 B D 3.774878
采用对比编码构建混合模型:
contrasts(df$F1) <- c(-1/2,1/2) contrasts(df$F2) <- matrix(c(-2/3,1/3,1/3, 0,-1/2,1/2), ncol = 2) library(lme4) library(lmerTest) model <- lmer(score ~ F1 * F2 + (1 | ID), data = df)
用anova()可得到因子及交互的整体效应:
anova(model) Sum Sq Mean Sq NumDF DenDF F value Pr(>F) F1 1.59711 1.59711 1 45 2.3893 0.1292 F2 1.17285 0.58642 2 45 0.8773 0.4229 F1:F2 0.39331 0.19666 2 45 0.2942 0.7466
但使用r2glmm包的r2beta()函数时,仅返回各特定对比的效应量,无法获取因子/交互的整体效应量:
library(r2glmm) r2beta(model) Effect Rsq upper.CL lower.CL 1 Model 0.119 0.435 0.052 2 F11 0.064 0.286 0.000 3 F21 0.042 0.249 0.000 6 F11:F22 0.012 0.181 0.000 4 F22 0.006 0.163 0.000 5 F11:F21 0.005 0.157 0.000
已知effectsize包的eta_squared()可实现,但希望尽量用r2glmm保持研究一致性,询问解决办法。
解决方案
目前CRAN上的r2glmm版本不支持获取整体效应量,但该包的开发版本已更新此功能,可通过以下步骤安装开发版解决:
- 卸载已安装的r2glmm版本(若存在):
remove.packages("r2glmm")
- 安装devtools包(若未安装):
install.packages("devtools")
- 安装r2glmm的开发版:
library(devtools) install_github("bcjaeger/r2glmm")
安装完成后,调用r2beta()时指定partial = TRUE与method = 'sgv'参数,即可得到因子及交互项的整体效应量:
library(r2glmm) r2beta(model, partial = TRUE, method = 'sgv')
内容的提问来源于stack exchange,提问作者antvan
相关产品推荐
相关产品推荐

