使用R的aov()函数完成重复测量析因ANOVA后,如何获取偏η²
获取重复测量析因ANOVA的偏η²(Partial eta squared)方法
R基础包的aov()函数默认不会输出偏η²,以下是几种可靠的获取方式:
1. 使用ez包的ezANOVA()
ez包专门针对重复测量设计,可直接输出偏η²:
- 先安装加载包:
install.packages("ez") library(ez)
- 示例代码(假设数据为长格式,包含被试ID
subject、两个重复测量因子factor1/factor2、因变量dv):
anova_result <- ezANOVA( data = your_data, dv = .(dv), wid = .(subject), within = .(factor1, factor2), type = 3, # 重复测量推荐使用III型平方和 detailed = TRUE )
- 查看结果时,
anova_result$ANOVA中的p2列就是偏η²。
2. 使用afex包的aov_car()
afex包简化了复杂ANOVA的操作,支持直接指定输出效应量:
- 安装加载包:
install.packages("afex") library(afex)
- 拟合模型并输出偏η²:
fit <- aov_car( dv ~ factor1*factor2 + Error(subject/(factor1*factor2)), data = your_data ) anova(fit, es = "pes") # "pes"即partial eta squared
- 输出表格中的
pes列即为所求统计量。
3. 手动计算(无需额外包)
如果不想安装新包,可从aov()的结果中提取平方和自行计算,公式为:
偏η² = SS效应 / (SS效应 + SS误差)
示例代码:
# 先拟合重复测量ANOVA fit <- aov(dv ~ factor1*factor2 + Error(subject/(factor1*factor2)), data = your_data) # 提取效应和误差的平方和(需根据你的模型结构调整索引) sum_table <- summary(fit)[[2]] # 假设重复测量的效应/误差在第二个汇总表中 ss_effect <- sum_table[1, 2] # 第一个效应的平方和 ss_error <- sum_table[2, 2] # 对应误差项的平方和 # 计算偏η² partial_eta_sq <- ss_effect / (ss_effect + ss_error)
注意:不同模型结构下,summary(fit)的列表元素位置可能不同,需要自行确认效应和误差项的位置。
内容的提问来源于stack exchange,提问作者Paul D
相关产品推荐
相关产品推荐

