如何获取ANOVA结果中的F统计量而非卡方值?
解决混合效应模型ANOVA输出SS、F统计量的问题
针对你用lmer拟合模型后无法得到包含平方和(SS)、F统计量的ANOVA结果的问题,以下是几个可靠的解决方案:
方法1:使用lmerTest包
lmerTest扩展了lme4的功能,能计算近似F检验和对应自由度,直接输出所需统计量:
# 安装包(首次使用) install.packages("lmerTest") library(lmerTest) # 拟合模型(或直接调用已有的model1) model1 <- lmer(avgAmplitude ~ stimulusAge * stimulusResponse * congruency * subjectType + (1|id), data = dataset1) # 生成III型平方和的ANOVA表 anova(model1, type = "III")
输出结果会包含平方和(Sum Sq)、自由度(Df)、F统计量和p值,默认采用Satterthwaite方法近似自由度。
方法2:使用afex包的mixed函数
afex是专门处理重复测量/混合效应ANOVA的工具,默认输出III型平方和,结果格式更符合传统ANOVA表:
# 安装包(首次使用) install.packages("afex") library(afex) # 拟合模型并输出ANOVA结果 model_afex <- mixed(avgAmplitude ~ stimulusAge * stimulusResponse * congruency * subjectType + (1|id), data = dataset1, type = "III", # 指定III型平方和 method = "S") # Satterthwaite自由度近似;大数据集可选"KR"(Kenward-Roger,更准确但耗时) # 查看完整结果 print(model_afex, es = "ges") # 可选添加广义 eta 平方效应量
如果之前用afex没成功,大概率是没使用mixed函数而是直接调用anova(),mixed才是afex处理混合模型的核心函数。
方法3:调整car::Anova的参数
如果坚持用car包,需要指定检验统计量为F,并设置自由度近似方法:
library(car) library(lmerTest) # 依赖该包提供自由度计算 Anova(model1, type = "III", test.statistic = "F", df.method = "Satterthwaite")
注意事项
- 心理学、认知科学等领域通常使用III型平方和,所以务必指定
type = "III"; - 不同的自由度近似方法(Satterthwaite/Kenward-Roger)会影响p值,小样本推荐用Kenward-Roger(
method = "KR")。
内容的提问来源于stack exchange,提问作者poldi
相关产品推荐
相关产品推荐

