夜雨聆风学习资料网

ARTICLE · 1120154

Excel 单因素方差分析

Excel 单因素方差分析

比较两种审核流程的平均耗时,常用的方法之一是 t 检验。流程增加到三种、四种,要把多组均值放在一起做整体比较,就可以考虑单因素方差分析(ANOVA)。

平均数不同,差异就有统计意义吗?

假设我们要比较三种订单审核流程。把条件相近的不同订单随机分配给流程 A、B、C,每笔订单只接受一种流程处理,各记录 6 笔耗时,单位都是分钟。

下面是专门设计的虚构演示数据,在 Excel 中放入 A1:C7:

行号
A
B
C
1
流程 A
流程 B
流程 C
2
12
10
8
3
14
12
10
4
15
13
11
5
16
14
12
6
18
16
14
7
15
13
11

每列是一组,第 2 到第 7 行是数值。同一行的三笔订单没有配对关系,只是为了方便放在表里。

分别用 =AVERAGE(A2:A7)、=AVERAGE(B2:B7)、=AVERAGE(C2:C7),算出的平均耗时是 15、13、11 分钟。

这批数据里,C 的平均耗时最低,A 与 C 相差 4 分钟。但换一批订单,各组平均数也可能变化。眼前的差别,是足以支持总体均值不同,还是在抽样波动中也可能出现?只列出三个平均数,还回答不了这个问题。

这里按“审核流程”分组,只有一个因素;A、B、C 是它的三个“水平”。所以,“单因素”指一个分组因素,三组数据也可以做单因素分析。因素与水平的说明[https://www.itl.nist.gov/div898/handbook/prc/section4/prc43.htm]

耗时的差异,先拆成两部分看

先看同一种流程内部。

流程 A 的平均耗时是 15 分钟,但 6 笔订单分别用了 12、14、15、16、18、15 分钟。同一种流程,也不会让每笔订单都恰好花 15 分钟。

每笔耗时相对本组均值的偏离,反映了组内的波动。把各组内部的这部分波动合起来,就是组内变异。它可能包含订单之间的差别、处理过程中的随机波动等。

再把三个流程放在一起看。

全部 18 笔订单的总均值是 13 分钟。A 组均值为 15,比总均值高 2;B 组为 13;C 组为 11,比总均值低 2。各组均值相对总均值的差异,形成了组间变异,计算时还会考虑每组有多少笔观测。

方差分析把全部数据的总变异,分解为这两部分。用“偏差平方后相加”的平方和来衡量,有:

总平方和 = 组间平方和 + 组内平方和

这条分解关系,是单因素方差分析的基础。平方和的分解[https://www.itl.nist.gov/div898/handbook/prc/section4/prc431.htm]

组间变异仍会受到抽样波动影响,不能把它全部当作流程造成的差异。我们还要判断:它相对于组内波动,到底有多突出。

用 F 值衡量“相对有多大”

同样是 A 与 C 相差 4 分钟,如果每组数据都很集中,这个差距会比较突出;如果每组内部的耗时本来就差很多,同样的 4 分钟差距,证据就可能弱得多。

F 统计量把这层比较写成一个比值:

F = 组间均方 ÷ 组内均方

“均方”是平方和除以各自的自由度。Excel 输出表里的 SS、df、MS,依次就是平方和、自由度和均方。

如果各组总体均值相等,而且模型条件满足,两个均方都在估计共同的误差方差。固定自由度后,F 越大,数据与“总体均值都相等”的假设就越不相符;是否达到显著性标准,还需与预先设定的阈值对应。F 检验的计算原理[https://www.itl.nist.gov/div898/handbook/prc/section4/prc433.htm]

上半部分是本文数据。下半部分保持三组均值和每组样本量不变,只把各笔数据相对本组均值的偏差扩大到原来的 3 倍。组内波动变大,F 就从 6 降到了约 0.667。

这也解释了它为什么叫“方差分析”:借助波动的相对大小,检验各组的总体均值是否相同。 它并不是在检验各组方差是否相等。

计算前,先确定假设和数据条件

本例先提出一个“总体均值没有差别”的原假设:

  • **H₀:**流程 A、B、C 的总体平均审核耗时相等。
  • **H₁:**三个总体均值不全相等,至少有一对不同。

检验针对的是总体平均耗时。15、13、11 这三个样本均值已经算出来了,我们要判断的是它们提供了多强的总体差异证据。

“不全相等”也不等于“每一对都不同”。即使整体检验达到显著水平,也不能直接给三个流程排出有统计依据的快慢名次。

显著性水平应在分析前确定,本例采用 α=0.05。

普通的独立样本单因素方差分析,还需要相应的数据条件:

  • 观测之间独立。 同一笔订单分别用三种流程重复测量,会产生配对关系,不能直接按本文方法处理。
  • 各组误差近似正态。 可结合各组数据或残差图检查;每组只有少量数据时,要留意明显偏斜与极端值。
  • 各组总体方差相同。 样本的波动大小可以帮助检查,但不能只凭几个数就认定这一前提成立。

这些是模型条件,并不是 Excel 会替我们自动核查的事项。模型与假设[https://www.itl.nist.gov/div898/handbook/prc/section4/prc432.htm]

本文数据用于演示计算,不能据此验证真实业务的抽样条件与分布。正式分析时,要先了解订单怎样抽取、分配和记录,再选择合适的方法。

在 Excel 中怎么做?

以下按 Windows 桌面版 Excel 操作。

准备数据并选中区域

新建一个空白工作簿,把前面的三组数据分别填入 A、B、C 列。第 1 行填组名,第 2 到第 7 行填耗时数值,然后选中 A1:C7,把表头一起包含进去。

找到“数据分析”入口

打开“数据”选项卡,在右侧的“分析”分组里点击 “数据分析”。

如果没有这个按钮,进入:

文件 → 选项 → 加载项。

在窗口底部的“管理”里选择“Excel 加载项”,点击“转到”,勾选“分析工具库”,再点击“确定”。返回“数据”选项卡,就可以找到“数据分析”入口。微软的加载说明[https://support.microsoft.com/zh-cn/excel/load-the-analysis-toolpak-in-excel]

选择工具并设置区域

点击“数据分析”,在工具列表里选择 “方差分析:单因素方差分析”(部分界面简写为“方差分析:单因素”),点击“确定”。

这里不要选成“F-检验:双样本方差”,它比较的是两组总体方差。

在单因素方差分析窗口中,按本文表格设置:

设置项
本例填写内容
输入区域
$A$1:$C$7
分组方式
列
标志位于第一行
勾选
α(Alpha)
0.05
输出选项
选择“新工作表组”,名称留空

选择“列”,是因为每种流程的数据各占一列;勾选首行标志,是因为 A1:C1 放的是组名。

输入区域只选到第 7 行。 如果你在第 8 行另外算了平均数,不要把这一行一起选进去,否则平均数也会被当作一笔新观测。

运行计算,查看新工作表

点击“确定”,Excel 会新增一张工作表,本次自动命名为 Sheet2。上半部分 SUMMARY 是各组数据的摘要,下半部分是方差分析表。

这张输出表记录的是本次分析结果。如果之后修改了原始数据,需要重新运行“数据分析”,已经生成的结果不会自动跟着重算。

输出表里,哪些数要看?

先核对上方的摘要。三组的观测数、均值和样本方差应与原始数据对应:

流程
观测数
均值(分钟)
样本方差(分钟²)
A
6
15
4
B
6
13
4
C
6
11
4

再看方差分析表。“组间”和“组内”对应前面拆开的两类波动,SS、df、MS 则把它们一步步变成 F 值。

差异来源
平方和 SS
自由度 df
均方 MS
组间
48
2
24
组内
60
15
4
总计
108
17
—

SS:这些平方和从哪里来?

组间平方和,看的是各组均值与总均值的差距。

本例总均值为 13,三组均值相对它的偏差是 2、0、−2。各组都有 6 笔,因此:

组间 SS = 6×(15−13)² + 6×(13−13)² + 6×(11−13)² = 48

组内平方和,则回到每一笔订单,计算它相对本组均值的偏差。

流程 A 相对均值 15 的偏差为 −3、−1、0、1、3、0,平方后相加是 20。B、C 两组各自的组内平方和也都是 20,合计为 60。

偏差有正有负,先平方再相加,就不会因为正负抵消而把波动抹掉。总平方和为 48+60=108,正好对应表里的“总计”。

df 和 MS:把两类波动放到可比较的口径

平方和还要分别除以自由度,得到均方。

组间有 3 个组均值,要考虑总均值带来的一项约束,自由度是 3−1=2。组内共有 18 笔观测,各组都估计了自己的均值,因此自由度是 18−3=15。

对应的两个均方是:

  • **组间 MS:**48÷2=24。
  • **组内 MS:**60÷15=4。

再用两个均方相除,得到 F=24÷4=6。也就是本例的组间均方为组内均方的 6 倍。

F=6,够不够大?

先假设三个总体均值确实相等,而且模型条件满足。此时,得到 F≥6 这样大或更大统计量的概率是多少?这个右尾概率,就是本次检验的 P 值。

Excel 显示 P-value=0.012175,约为 1.22%。这个数描述的是上述假设条件下出现当前或更极端结果的概率,不是“总体均值相等的概率”,也不是“流程造成差异的概率”。

按预先选定的 α=0.05,P≤0.05 时拒绝原假设。本例 0.012175<0.05,所以拒绝“三个总体均值相等”,认为有证据支持至少一对总体均值不同。

旁边的 F crit=3.68232 是同一个检验的另一种判定方式。它对应 α=0.05,以及组间自由度 2、组内自由度 15;本例 F=6>3.68232,同样达到拒绝原假设的标准。

因此,拿 P 值与 α 比较,或者拿 F 值与对应临界值比较,本例会得到同一个结论。它们表达的是同一条检验标准。

想单独核对 P 值,可以在空白单元格输入 =F.DIST.RT(6,2,15)。三个参数依次为 F 值、分子自由度、分母自由度,结果约为 0.01217464。F.DIST.RT 函数说明[https://support.microsoft.com/zh-tw/excel/functions/f-dist-rt-function]

在 Minitab 中复核同一组数据

在 Minitab 22 中,把三组数据分别放进 C1、C2、C3,列名填“流程 A”“流程 B”“流程 C”。列名写在专门的列名行,6 笔数值从第 1 行开始录入,不要把 Excel 表格里的行号和 A、B、C 列标一起复制进去。

选择 统计 → 方差分析 → 单因子。在窗口顶部选择“每个因子水平的响应数据单独一列”,再把这三列选入“响应”。

点击“选项”,勾选 “假定等于方差”,使本次分析与前面的普通单因素方差分析使用相同模型。这里的勾选是指定模型假设,并不代表软件已经验证了方差相等;取消勾选时,Minitab 会改用 Welch 方差分析。Minitab 分析选项说明[https://support.minitab.com/zh-cn/minitab/help-and-how-to/statistical-modeling/anova/how-to/one-way-anova/perform-the-analysis/select-the-analysis-options/]

置信水平保留 95,置信区间类型保留“双侧”。这个置信水平用于均值表和区间图;检验的 P 值仍按前面预先确定的 α=0.05 判断。

点击“确定”返回主窗口,再点击“确定”运行。实际输出中的“因子”对应前文的组间,“误差”对应组内,平方和、自由度和均方都能逐项对上。

这里的 F=6.00,P=0.012。Minitab 当前把 P 值显示到小数点后 3 位,与前面算出的 0.01217464 是同一个结果。

有了显著差异,就能选流程 C 吗?

流程 C 的样本平均耗时最低,这可以直接从数据里看出来。但整体检验并没有告诉我们,C 与 A、C 与 B 是否分别存在显著差异。

如果要进一步比较具体哪两组,应采用考虑多重比较的方法,例如在相应条件下使用 Tukey 比较。直接把三对数据各做一次未校正的 t 检验,会增加整体误判的机会。整体检验与两两比较的区别[https://online.stat.psu.edu/stat200/Lesson10]

在 Minitab 中再次进入“统计 → 方差分析 → 单因子”,保持刚才的响应列和等方差设置,点击“比较”。勾选 Tukey,比较误差率保留 5,并勾选结果中的 “检验”,便能输出调整后的 P 值。这里的 5 表示 5%,对于 Tukey 方法控制的是这一组比较的全族误差率。Minitab 组比较说明[https://support.minitab.com/zh-cn/minitab/help-and-how-to/statistical-modeling/anova/how-to/one-way-anova/perform-the-analysis/select-the-group-comparisons/]

点击“确定”返回,再点击“确定”运行。本例实际得到:

C 与 A 的样本均值相差 −4 分钟,调整后的 P 值约为 0.009,小于 0.05。 在模型条件满足的前提下,这支持流程 C 的总体平均耗时低于 A。

A 与 B、B 与 C 两对比较的调整后 P 值都约为 0.226,尚不足以认为它们各自的总体均值有差异。因此,不能只凭 C 的样本均值最低,就写成“C 显著快于另外两种流程”。

我更愿意在报表里把结论写到检验已经支持的位置:

在本次演示数据中,三种流程各记录 6 笔订单,样本平均审核耗时分别为 15、13、11 分钟。单因素方差分析得到 F(2,15)=6.00,P≈0.0122。在模型条件满足的前提下,总体均值不全相等。进一步的 Tukey 比较显示,C 的平均耗时低于 A(调整后 P≈0.009);A 与 B、B 与 C 的差异证据不足。

如果另一批数据得到 P 大于 0.05,应该写“目前证据不足以认为总体均值有差异”,不能写成“三种流程一样快”。

而在实际业务里,哪怕均值差异有统计意义,还要看这几分钟是否足以影响处理能力,以及审核质量有没有变化。只比较不同团队留下的历史记录,也可能混入订单难度、人员熟练程度等差别,不能直接把耗时差异都归因于流程。

用「知数」小程序算一遍

这组数据也可以在「知数」小程序里计算。打开“计算”页,点击顶部的 “切换方法”,搜索“方差分析”,选择 “单因素方差分析(Welch / 经典)”。

设计类型选择“多组独立(单因素)”。如果只有两组输入卡,点击“+ 添加一组”,再把三组分别命名为“流程 A”“流程 B”“流程 C”,各自输入:

  • 流程 A:12 14 15 16 18 15
  • 流程 B:10 12 13 14 16 13
  • 流程 C:8 10 11 12 14 11

每组的数字用空格分开,三组分别填在各自的输入卡里。

在“模型选择”中确认选中 “经典单因素 ANOVA”,保留 “事后比较(整族)”,显著性水平 α 填 0.05。这里使用经典模型,是为了与前面的等方差分析保持一致;实际分析仍需按数据条件选择模型。

点击“计算”,再点“查看结果”。小程序显示 P=0.012175、F=6,自由度为 2 和 15,与前面的计算一致,只是显示的小数位数不同。

继续向下看 “Tukey–Kramer 多重比较”。本例 A 与 C 的调整后 P 值为 0.009147,标示为显著;另外两对都是 0.226057,未达到 0.05 的阈值,与 Minitab 的判断一致。

小程序按前组减后组显示差值,所以 A−C 是 4 分钟;前面 Minitab 列出的是 C−A,显示 −4 分钟。两者都表示:这批样本中,A 的平均耗时比 C 多 4 分钟。

相关学习资料