R中三因素ANCOVA分析为何需同时运行summary()与summary.aov()
R中三因素ANCOVA需同时运行
summary(model)与summary.aov(model)的核心原因 你用lm()拟合的ANCOVA属于线性模型范畴,这两个函数针对同一模型从两个完全不同的维度输出结果,信息完全互补、不存在冗余,必须结合使用才能拿到完整的分析结论,具体差异如下:
summary(model)默认调用summary.lm()方法,输出回归系数层面的细节结果:- 包含截距、中心化协变量、各分类因子主效应、所有交互项的回归系数估计值、标准误、t检验值、逐系数的显著性结果
- 同时给出模型整体拟合指标:R²、调整R²、残差标准误、模型整体F检验结果
- 对你的三因素ANCOVA来说,这部分结果可以直接读出协变量的回归斜率、各效应的作用方向、不同因子水平相对于参照组的差异大小,是后续解释效应实际意义、做事后多重比较的基础依据
- 需要注意:这里的分类因子显著性是基于R默认的处理对照计算的,仅代表某一水平相对于参照水平的差异是否显著,不能代表整个因子或者整个交互项的整体效应是否显著。
summary.aov(model)输出的是方差分解层面的ANCOVA标准方差分析表结果:- 它会按照模型公式里的项的输入顺序,依次计算每个预测项(中心化协变量、三个分类预测变量的主效应、三个二阶交互项、一个三阶交互项)独立解释的平方和、自由度、均方、F检验值和对应p值,也就是撰写报告时需要的“协变量效应是否显著、某因子主效应是否显著、某阶交互是否显著”的整体检验结果
- 这部分信息是
summary(model)完全不提供的:你没法从逐系数的t检验结果直接推导某一个多水平分类因子的整体效应显著性,也没法直接拿到交互项的整体方差解释检验结果。
补充提示:默认的
summary.aov()计算的是Ⅰ型(序贯)平方和,你把协变量放在公式最前端的写法刚好匹配ANCOVA“先控制协变量变异,再检验分类因子效应”的逻辑,结果是可用的。如果需要报告学界常用的Ⅲ型平方和结果,需要提前把全局因子对照设置为contr.sum,再对应方法计算即可。
两个函数必须搭配使用的原因
ANCOVA的报告要求两类信息缺一不可:
- 你需要
summary.aov()输出的方差分析表,明确各个效应项的整体显著性,搭建整个分析结果的核心框架 - 你需要
summary(model)输出的系数结果,解读显著效应的具体方向、差异幅度,不能只报方差分析表的p值而不说明效应的实际大小
如果只运行其中一个,结果会有明显缺失:只跑summary.aov()你不知道显著的高阶交互到底是哪几组之间存在差异,只跑summary(model)很容易把单个因子水平相对于参照组的显著性,误判成整个因子的整体显著,得出错误结论。
内容的提问来源于stack exchange,提问作者E10
相关产品推荐
相关产品推荐

