让我们来谈谈统计吧 - 用于软件质量的统计入门(No.3 代表值的使用区别:平均值・中位数・众数)
Back to Top
为了覆盖更广泛的受众,这篇文章已从日语翻译而来。
您可以在这里找到原始版本。
引言
#“让我们来谈谈统计吧”第3回将讨论“代表值的使用区别”。
世上充满了数据。
“数据的中心该如何表达呢?”
这是统计学最基本的问题之一。
在处理质量数据时,经常使用“平均值”,但仅凭这一点真的能做出合适的判断吗?
其实,“平均值·中位数·众数”各自具有不同的特点,如果使用不当,可能会引发误解。
本期将结合软件质量的实际案例,轻松解说代表值的差异及使用技巧。
什么是代表值?
#“代表值”是指在某组数据分布中,能够表示中心趋势的数值。
统计学中常用的3种代表值如下:
种类 | 说明 | 使用示例(软件质量) |
---|---|---|
平均值 | 全部数据之和 ÷ 数据个数 | 缺陷修复所需平均天数 |
中位数 | 从小到大排列时的中间值 | 测试用例执行时间的中位数 |
众数 | 出现最频繁的值 | 最常见的错误代码 |
平均值:大家都喜欢,但“要注意”
#平均值通过“全部数据之和 ÷ 数据个数”来计算。
● 特点
#- 简单易计算,直观易懂
- 能用一个数值表示整体趋势
- 可在 Excel、Python 等工具中自动计算,常作为汇总的第一步
实际工作中,常常有“先算出平均值再说”的做法,但这并不一定是最优选择。
● 易受异常值影响
#平均值对所有数据都“同等”对待,因此当存在**极端值(异常值)**时,平均值会很容易被牵引偏移。
例:测试执行时间(秒)
让我们来看下面这个测试执行时间(秒)的例子。
20, 22, 21, 19, 105
- 平均值:
37.4
秒 - 中位数:
21
秒
※直方图是一种用条形高度表示数据分布状况(各数值出现频率)的图表。
通过将各数值区间(bin)的数量可视化,可一目了然地了解是否存在偏态、异常值影响、中心趋势和离散程度。
在软件质量领域,直方图对于把握测试执行时间、评审所需时间、缺陷数量等时间或数量的分布非常有效。
在这种情况下,1条异常长的执行时间(105秒)大幅拉高了平均值。
在实际工作中,当有人说“平均37秒”时,很难说这能真实反映整体情况,不是吗?
这是在数据不符合正态分布(※1)时使用平均值的风险的典型案例。
※1:“正态分布”是指大部分数据集中在平均值附近,呈左右对称的“山形分布”。
本系列后面会详细说明,这里只需要理解为“极端小或极端大值很少,数据集中在中心附近的状态”即可。
● 在实际工作中的注意事项
#- 在修复工时、测试时间、评审所需时间等中,若少部分存在极端值,仅用平均值判断容易导致“高估或低估”
- 在将平均值作为 KPI(※2) 或 SLA(※3) 的标准时,最好与中位数或百分位数(※4) 结合使用
- 在质量管理现场,也不乏“报告平均值时收到投诉!”的情况
※2:KPI(Key Performance Indicator)→关键绩效指标。用于衡量项目或业务达成度的数值目标。(例:缺陷修复平均天数、评审完成率等)
※3:SLA(Service Level Agreement)→服务等级协议。在服务提供者与使用者之间就服务质量达成的协议指标。(例:故障响应的初动时间或修复完成时间等)
※4:百分位数(Percentile)→将数据按从小到大排序后,表示位于从底部数第几%的指标。(例:若 90 百分位数(P90)为 20 秒,则表示“90% 的测试用例在 20 秒内完成”。)
● 何时适合使用平均值?
#- 数值未严重偏倚(即分布呈对称)
- 想粗略掌握整体情况
- 想在多个团队或流程间进行比较
在上述情况下,平均值非常有效。
但原则上在使用前必须确认数据分布!
补充:平均值的种类
#事实上,“平均值”有多种类型:
平均类型 | 特点 | 用途示例 |
---|---|---|
算术平均 | 最常见。合计 ÷ 项目数 | 工时、实际值等的日常平均 |
加权平均 | 加权(反映重要度或项目数) | 按团队的缺陷数计算平均等 |
几何平均 | 用于倍数、增长率等 | 性能评估(如:处理速度)等 |
例如,在对各团队的评审件数取平均时,使用加权平均,按照“各团队的件数”赋予权重,可获得更公平的评估。
中位数:在有较大波动时的“安心代表”
#中位数(median)是指将数据按从小到大排序后处于“正中间的值”。
由于它位于“整体恰好50%的数据小于或大于该值”的位置,因此在把握分布中心时是非常稳定的指标。
● 特点
#- 因为取排列后的“中间值”,所以不容易受异常值影响
- 对偏态数据和非正态分布尤为有效
- 即使观测数据较少也有意义(例如:奇数或偶数个数据均可计算)
例:测试执行时间(与平均值示例相同)
对与平均值示例相同的 [20, 22, 21, 19, 105]
,中位数为 21
。
- 平均值:
37.4
秒 - 中位数:
21
秒
※箱线图(Boxplot)是一种可一目了然地了解数据分布、波动及是否存在异常值的图表。
箱体表示“中间50%的范围(四分位距)”,线(须)表示数据的扩展程度,箱体外的点或线路表示“异常值”。
在实际工作中,对于处理时间、工时等波动评估和异常值检测非常有帮助。
如此一来,即使有 105 这样极端的大值,中位数仍不易受其影响,作为**“典型值”**具有较高的可靠性。
● 在实际工作中的应用
#- 在测试执行时间和评审所需时间等差异较大的流程中,当需要得出“代表值”时,中位数更能反映真实情况
- 对客户处理件数、咨询响应时间等,使用中位数也能避免因“极端长时间响应”导致的高估
- 在各流程的绩效比较等场景下,中位数也能更好地“吸收极端的人员差异”
例如,当“评审平均时间:100 分”和“中位数:35 分”时,实际情况可能是大多数评审在约 35 分钟内完成,只有极少数长时间评审拉高了平均值。
● 建议将中位数作为“安心指标”
#- 即使是初学者也容易理解其概念
- 不会大幅扭曲数据的分布情况
- 与平均值一起报告时,可作为传达分布偏倚的提示
众数:最适合模式识别
#众数(mode)是数据中出现最频繁的值。
与平均值和中位数不同,它直接展示“哪个值出现得最频繁”,是把握典型模式的优秀指标。
● 特点
#- 关注出现最频繁的值
- 对类别型或离散数值数据特别有效
- 可说它不是衡量分布的中心,而是捕捉“分布峰顶”
例:缺陷修复所需天数(日)
让我们来看下面这个缺陷修复所需天数的例子。
1, 2, 1, 1, 5, 3
如果缺陷修复所需天数为 [1, 2, 1, 1, 5, 3]
,则众数为 1
。
- 平均值:
2.2
- 中位数:
1.5
- 众数:
1
表示“1 天内可修复的缺陷数量最多”。
● 实际应用
#- 出现最多的缺陷类型(例如:UI 相关缺陷最多)
- 常见的修复工作量(例如:多数修复在 1 天内完成)
- 把握典型所需时间和常见评审指出项
等,非常适合把握重复出现的模式。
尤其在把握各分类/类别趋势时,众数是直观易懂的指标。
例如,将评审评论内容按类别汇总后,如果“命名规则违规”是众数,则可能需要对该方面进行规则再培训。
● 注意事项与局限
#- 在众数有多个的情况下(如双峰分布等)需注意处理方式
- 在连续数据中难以使用(也可通过分级后在直方图中查看)
- 与平均值和中位数不同,不一定能反映整体分布形状
如何进行区分?:实际判断视角
#代表值并非只能固定使用单一指标,应根据数据特性和判断目的进行区分使用。
以下是一些常见的判断标准示例。
目的 | 适用代表值 | 理由 |
---|---|---|
想要展示一般趋势 | 平均值 | 通过将所有值求和后除以数据量,可获得“粗略的中心趋势” |
关注异常值 | 中位数 | 取排序后的中间值,因此不易受极端值影响,较为稳定 |
想知道最常见的情况 | 众数 | 显示出现最频繁的值,适用于把握“典型模式”和分类分布 |
● 补充:各自的局限与建议组合使用
#- 平均值:易受异常值影响。由于汇总所有值后再除以数据量,一个异常值可能大幅牵引平均值。数据分布偏时需注意。
- 中位数:仅关注中间值,因此不易受极端值影响,这是它的优点。但另一方面,它不反映“上方和下方差距有多大(离散程度)”。
- 众数:关注“出现最频繁的值”,是个简单的指标。但在某些情况下,如“值分散严重而不存在众数”或“多个值出现次数相同,存在多个众数(如双峰分布)”时,它的适用性会受限。
因此,通过同时展示平均值+中位数+众数,即可从多角度把握数据分布和趋势。
在实际工作中,不仅要展示平均值,还要“补充中位数和百分位数”,这是防止误解和盲目信赖的第一步。
用可视化来理解:直方图与代表值的关系
#实际绘制直方图后,可可视化地比较平均值·中位数·众数在分布中的位置。
正态分布:三者位置几乎一致
#在正态分布中,平均值、中位数和众数几乎位于相同位置。
偏态分布:只有平均值易偏移
#对于右偏分布(存在异常值),平均值会被异常值向右拉动,与中位数和众数产生偏差。
总结
#- 代表值分为三类:“平均值”、“中位数”、“众数”
- 平均值虽方便,却易受异常值影响
- 中位数稳定,抗离散能力强
- 众数适合表示“常见模式”
- 根据数据特性和目的进行区分使用非常重要
下期预告
#下期将以“把握离散”为主题,利用直方图和箱线图,探讨方差·标准差·范围等“离散指标”。
希望能助力您的数据分析。