ARTICLE · 1178859
Excel 双因素方差分析
Excel 双因素方差分析
上一篇用单因素方差分析比较了几种审核流程。这次再加一个条件:订单有标准订单,也有复杂订单。
我们想知道,新流程是否更快;还想知道,它对两类订单的改善幅度,是否一样。 后一个问题,就需要把两个因素放在一起分析。
两个因素,三个问题
用一组虚构的订单审核数据演示,耗时单位为分钟。每种“流程 × 订单类型”组合各有 3 笔不同订单,共 12 笔。
这里的因素是用来分类的条件:审核流程、订单类型。每个因素下面的具体类别,叫水平:旧流程和新流程是两个水平,标准和复杂也是两个水平。
“双因素”指两个分类因素,不是指只有两组数据。本例有 2×2=4 种组合;一个因素也可以有三个或更多水平。
先算各组合的平均耗时:
本例各组合的订单数相同,所以边上的总体均值,可以直接由两个组合均值平均得到。
这张表对应三个不同的问题。
**流程的主效应:**把两类订单合起来看,旧流程均值 15 分钟,新流程 10 分钟,相差 5 分钟。
**订单类型的主效应:**把两种流程合起来看,标准订单均值 9 分钟,复杂订单 16 分钟,相差 7 分钟。
**流程与订单类型的交互作用:**换成新流程后,标准订单从 10 降到 8,少了 2 分钟;复杂订单从 20 降到 12,少了 8 分钟。流程之间的差距,随订单类型而变。
我会先看这两个具体差值,再回头看“平均节省 5 分钟”。后者概括了整体,却把两类订单的不同反应合在了一起。
交互作用,不一定要两条线交叉
把四个组合均值连成线,会更容易看出这个问题。

如果两类订单都恰好少 2 分钟,两条均值线就是平行的。本例一类少 2 分钟,另一类少 8 分钟,两条线不平行。
交互作用关注的是一个因素的作用是否依赖另一个因素的水平。 两条线即使没有交叉,也可能存在交互作用。
不过,样本均值会受随机波动影响。画出不平行的线,只能提示值得检查;差异是否有统计证据,还要将它与同一组合内部的波动比较。
“有重复”到底重复了什么
Excel 的数据分析里,有“可重复双因素分析”和“无重复双因素分析”两个入口。
区分依据是:每种因素组合里,有几个观测值。
本例“旧流程 × 标准订单”有 9、10、11 三个值,其他组合也各有三个,属于有重复的平衡设计。这里重复的是相同条件下的独立观测,不是把同一笔订单测三遍,也不是复制三行数据。
“无重复”不等于两个因素互不影响。每格只有一个数时,缺少同一组合内的波动信息;通常要在无交互的加性模型假设下检验两个主效应,不能再拿结果证明“没有交互”。
也不要先把本例每格的三个数平均成一个数,再去选“无重复”。这样会丢掉原本能够估计误差的组内信息。
方差分析怎样判断这些差别
上一篇把总变动分成组间差异和组内波动。现在有两个因素,还允许交互作用,就需要分得更细:
总平方和 = 流程平方和 + 订单类型平方和 + 交互平方和 + 误差平方和
用公式表示:
平方和记作 SS。它将偏离程度平方后相加,避免正负抵消。下面的公式适用于本例这种两个固定因素完全交叉、每种组合都有相同重复数的平衡设计。
先把符号与这张表对应起来
因素 A 是审核流程,因素 B 是订单类型。设 A 有 个水平,B 有 个水平,每种组合有 个独立观测,总观测数为 。本例中,、、,所以 。
字母上方的横线表示平均值,下标中的点表示沿那个因素的全部水平取平均。求和符号 表示“把指定范围内的各项加起来”;、、 分别遍历 到 、 到 、 到 。
1. 误差平方和:同一组合内部有多大波动
每个观测减去它所在组合的均值,平方后对全部观测求和:
代入本例,先看“旧流程 × 标准订单”:均值为 10,三个观测对它的偏离为 −1、0、1,这一格贡献的平方和是:
其余三个组合也各贡献 2,因此:
它描述的是同一流程、同一订单类型之内,订单耗时仍然存在的波动。
2. 主效应平方和:边际均值偏离总均值多少
因素 A 的平方和公式是:
前面的 是 A 每个水平包含的观测数。本例每种流程有 2 类订单,每类 3 笔,所以 。代入两个流程均值:
因素 B 的计算方式相同,只是改为比较 B 的各水平:
本例每类订单都包含两种流程下的共 6 笔观测,所以:
3. 交互平方和:两个主效应相加,还差了多少
如果只保留两个主效应,按加性模型拟合的第 格均值为:
上标 表示加性模型。用实际格均值减去这个拟合值,记为交互偏差 :
将各格交互偏差平方,乘上每格的观测数 后相加:
合在一起写,就是交互平方和的通用公式:
拿“旧流程 × 标准订单”来说,加性模型拟合的均值为:
实际格均值是 10,所以交互偏差为 。按“旧流程 × 标准、旧流程 × 复杂、新流程 × 标准、新流程 × 复杂”的顺序,四格的交互偏差依次为 −1.5、1.5、1.5、−1.5。代入 :
4. 总平方和:对全部变动做一次核对
总平方和比较的是每个观测与总均值的差:
将本例十二个观测分别减去 12.5,再平方相加,得到 257。也可以核对四部分之和:
从平方和走到 F 和 P
平方和还要除以各自的自由度 df,得到均方 MS,再将效应均方除以误差均方。
先列出自由度的通用公式,再代入本例的 、、:
四部分自由度也能相加核对:。均方的计算公式是:
具体到本例的四个部分:
因此,、、,共同的误差均方为 。
三个效应都与同一个误差均方比较,F 统计量的公式分别为:
代入本例:
流程:。 订单类型:。 交互作用:。
这三个检验都在问:对应效应的变动,相对于同一组合内部的随机波动,有多大。
在各自原假设成立、模型条件满足时,用相应的 F 分布求右尾概率:
其中, 是算出的 F 值, 是所检验效应的自由度, 是误差自由度。本例三个检验都使用 分布,交互作用这一项代入后为:
这里的三个原假设分别是:两个流程的总体边际均值相等、两类订单的总体边际均值相等、没有交互作用。P 值不是“原假设为真的概率”。
这一套普通双因素模型要求观测相互独立,各组合的误差方差相同,误差服从正态分布。本例只是便于跟算的演示数据,每格 3 个值,不能靠这几个点充分验证分布假设。同一批对象反复测量、重复数不等或有缺失组合时,也不能直接套用本例的 Excel 设置。
在 Excel 中计算
1. 按工具要求排列数据
我们在工作表中输入以下内容。A 列按流程分块,B、C 列分别放两类订单,每个流程块占三行。数值单元格只填数字,统一以分钟计。

本表同一行的两个数字属于不同订单,没有配对关系。A3、A4、A6、A7 留空只是流程块标签的排列方式,B2:C7 的十二个观测值都要保留。
2. 选择分析工具并填参数
点击 “数据 → 数据分析”,选择 “方差分析:可重复双因素分析”。
如果没有“数据分析”按钮,在 Windows 版 Excel 中进入“文件 → 选项 → 加载项”,底部“管理”选择“Excel 加载项”,点击“转到”,勾选“分析工具库”。
在分析对话框中填写:
输入区域: $A$1:$C$7,包含表头和流程标签。每一样本的行数: 3,表示每个流程块有三行观测,不填总行数 6 或订单总数 12。α: 0.05。**输出选项:**选择“新工作表组”,名称可以留空。

3. 看方差分析结果
点击“确定”,Excel 会生成摘要统计和方差分析表。

按本例的排法,输出中的**“样本”对应审核流程,“列”对应订单类型,“交互”对应二者的交互作用**。不要只看英文或中文标签,要先与输入表的方向对应。
将关键结果整理出来:
Excel 可能用科学记数法显示较小的 P 值,例如 2.45684E-05,意思是 2.45684×10⁻⁵,约为 0.00002457,并不是零。
在 α=0.05 下,本例三个效应都达到显著性阈值。它们的分子自由度都是 1、分母自由度都是 8,F 临界值同为约 5.3177。三个 F 都大于临界值,与三个 P 都小于 0.05,是同一套判断。
在 Minitab 中计算
同一组数据也可以在 Minitab 中完成分析。这里用“一般线性模型”,把流程、订单类型和二者的交互作用一起放进模型。
1. 整理成每行一笔订单
在空白工作表中,将 C1、C2、C3 的列名分别设为 “流程”“订单类型”“耗时”。列名填在列号下面的名称行,十二笔订单从第 1 行开始录入,耗时仍以分钟计。

与前面的 Excel 排法不同,这里每一行都要写全流程和订单类型,不要沿用流程块中留空的方式。C1、C2 中存放文本类别,C3 中只放数值。
2. 设置响应和因子
依次进入 “统计 → 方差分析 → 一般线性模型 → 拟合一般线性模型”。
在“响应”中放入 耗时,在“因子”中放入 流程、订单类型,“协变量”留空。响应是要分析的数值结果,两个分类条件则属于因子;本例将这两项作为固定因子。

可以先点击相应输入框,再双击左侧列名,将它加入框中。
3. 把交互作用加入模型
点击 “模型”。左上方的“因子和协变量”列表中,同时选中“流程”和“订单类型”;“按变量顺序添加交互项”右侧保留 2,再点击旁边的“添加”。
检查下方“模型中的项”,应包含三项:流程、订单类型、流程*订单类型。其中星号表示模型中的交互项。

这一步不能省略。仅在主对话框中填入两个因子,默认模型只包含它们的主效应;要检验本例关注的交互作用,需要明确加入交互项。
点击“确定”返回主对话框,再点击“确定”运行。其余设置保留默认即可复现本例。
4. 对照方差分析表
Minitab 的实际输出如下。因子信息中,流程和订单类型各有两个水平,类型均为“固定”。

重点看“方差分析”部分:流程、订单类型、交互项的 F 值分别为 75.00、147.00、27.00;误差自由度为 8,误差均方为 1,与 Excel 的结果一致。
输出中的 Adj SS 和 Adj MS 分别是调整平方和与调整均方。本例是每格重复数相同、包含完整交互项的平衡设计,这几项数值与前面手算的平方和、均方一致;不能把这种数值对应不加条件地推广到所有数据结构。
本次输出将 P 值保留三位小数,所以两个主效应显示为 0.000,交互作用显示为 0.001。这是显示时的舍入:交互作用更精确的值约为 0.000826,两个主效应的 P 值也都大于零。写报告时,可将显示为 0.000 的结果写作 P<0.001,不要写成 P=0。
这里仍按前面设定的 α=0.05 判断,三个效应都达到显著性阈值。接下来要结合交互作用和四个组合均值解释业务含义。
有交互时,结论怎样写
我会优先解释交互这一行:流程之间的耗时差异,与订单类型有关。 然后再结合各组合均值说明方向。
本例可以写成:
在这组演示数据中,每种“流程 × 订单类型”组合有 3 笔独立订单。双因素方差分析得到交互作用 F(1,8)=27,P≈0.000826。在模型条件满足的前提下,有证据认为流程差异随订单类型而变。样本中,标准订单从旧流程的平均 10 分钟降至新流程的 8 分钟,复杂订单从 20 分钟降至 12 分钟,分别减少 2 分钟和 8 分钟。
“平均节省 5 分钟”仍是本例两个流程的边际均值差,但它对应标准和复杂订单各占一半的结构;换一批订单,两类占比不同,这个整体平均差也可能变。
交互检验也没有自动完成“标准订单内部新旧流程比较”和“复杂订单内部新旧流程比较”。如果还要分别声称两类订单中的改善都达到显著性阈值,需要进一步做简单效应或预先规定的对比,并根据比较范围处理多重检验。
真实业务里,还要检查分组与分配方式。只把不同团队、不同时段的历史记录放在一起,耗时差异可能同时受人员熟练程度等因素影响,不能全部归因于流程。
若某一行 P 大于 0.05,应写“当前证据不足以认为该效应存在”,不能写成“这个因素没有影响”或“两组完全相同”。
用「知数」小程序算同一组数据
在“计算”页点击 “切换方法”,搜索“方差分析”,选择 “双因素方差分析(含交互)”。进入后,确认设计类型是 “双因素含交互”。

这里改用每行一笔订单的排列方式:第一项是因素 A,即流程;第二项是因素 B,即订单类型;第三项是耗时。把以下十二行粘贴到“双因素数据”输入框,内容之间用空格分隔,不加表头。
1 2 3 4 5 6 7 8 9 10 11 12
旧流程 标准 9旧流程 标准 10旧流程 标准 11旧流程 复杂 19旧流程 复杂 20旧流程 复杂 21新流程 标准 7新流程 标准 8新流程 标准 9新流程 复杂 11新流程 复杂 12新流程 复杂 13
α 保留 0.05,点击“计算”,再点“查看结果”。本例实际显示的交互作用 P 值为 0.000826;因素 A、因素 B 的 P 值分别约为 2.46×10⁻⁵、1.98×10⁻⁶。

方差分析表中的 F 分别为 75、147、27,与 Excel、Minitab 一致。三个工具的输入与显示形式不同,分析的仍是同样的十二笔订单。
小程序当前这个入口要求各组合都有数据、重复数相同且至少为 2。每格只有一个值的“无重复”数据,不能放到这里检验交互作用。
















































































