聊聊统计吧 - 面向软件质量的统计入门(No.5 认识形状:偏度、峰度与分布特征)
Back to Top
为了覆盖更广泛的受众,这篇文章已从日语翻译而来。
您可以在这里找到原始版本。
引言
#在“聊聊统计吧”系列第5篇中,我们关注数据的“形状”。
到目前为止,我们已经观察了代表值和离散程度,但通过关注分布形状本身,可以更清楚地了解数据的本质。
本次主要介绍以下两个指标:
- 偏度(Skewness)… 分布的“非对称性”
- 峰度(Kurtosis)… 分布的“尖峭程度”和“尾部权重”
在质量管理中,许多场景都以正态分布为前提进行统计管理或判断,因此需要具备识别非正态分布的能力。
正态分布是:
到目前为止,已经多次出现“正态分布”这种分布。
详细内容会在“概率和分布”部分介绍,但一直说“后面再详细说明”也不是办法,因此在这里先传达对于“直观理解正态分布”所必需的信息。
正态分布是大部分数据集中在平均值附近,呈现左右对称的山形的分布。
数学上定义为以均值 μ 为中心,标准差 σ 为参数的连续概率分布。
(关于均值,可参见第3篇,关于标准差,可参见第4篇)
这是在自然界和商业中许多现象中观察到的非常基础且重要的分布。
正态分布的主要特征:
- 以均值为中心,左右对称
- 山峰的高度和宽度由标准差(σ)决定
- 约68%的数据落在均值±1σ范围内,约95%落在±2σ范围内,约99.7%落在±3σ范围内
该特性使得例如可判断“若数据偏离均值超过2σ则为异常”。
蓝色曲线表示均值为0、标准差为1的正态分布,彩色区域分别表示:
- 绿色:±1σ(约68.3%的数据)
- 橙色:±2σ(覆盖约95.4%)
- 红色:±3σ(覆盖约99.7%)
与软件质量的关系:
软件的处理时间、审查所需时间等因随机因素累积而产生的现象,理论上已知会趋近于正态分布。
但是,实际数据中既有“接近正态分布”的,也有“极度偏斜的”、还有“含有大量离群点而峰度很高的”情况。
要识别这些“特性”,仅仅查看均值和标准差是不够的。
因此,本篇将介绍将分布形状数值化的“偏度”和“峰度”,并学习在实际工作中应如何应对非正态分布。
偏度(Skewness):是否左右对称
#● 定义
#偏度是用数值表示数据分布向左右哪一侧倾斜的指标。
通过评估“数据偏向均值的左侧还是右侧”,可以把握仅从均值和标准差难以看出的“偏斜特性”。
- 偏度 = 0:左右对称分布(例如:正态分布)
- 偏度 > 0:右侧有较长尾部(右侧离群点较多)
- 偏度 < 0:左侧有较长尾部(左侧离群点较多)
偏度的计算公式定义如下。
● 描述统计
- :数据的各个值
- :均值(在描述统计中作为总体均值处理,可视为母体均值 )
- :标准差(无校正,分母为 )
- :数据个数(当前数据的数量)
● 推断统计
- :数据的各个值
- :样本均值
- :样本标准差
- :数据个数
偏度可以通过工具计算,不必记忆公式。
※“”这个符号是指从样本矩求得的偏度的简写。
● 视觉示意
#● 实务中的示例
#在软件开发和质量管理的现场,数据呈现偏斜的情况并不少见。
- 修复所需天数的分布
通常多在1~3天内完成修复,但偶尔有需要超过1周的情况 → 右偏 - 用户满意度调查
多数回答集中在“5分制的4或5”(较高满意度),而低满意度的回答较少 → 左偏
● 如果忽略偏度会怎样?
#如果存在偏度却仅凭均值进行判断,可能会误判“典型情况”。
- 均值大幅偏移,导致KPI(※1)或SLA(※2)的设定与实际情况不符
- 对评审或测试所需时间的估计过低或过高
- 被“部分极端案例”所主导进行质量判断
※1:KPI(Key Performance Indicator)→重要绩效指标。用于衡量项目或业务完成度的数值目标。(例如:缺陷修复平均天数、评审完成率等)
※2:SLA(Service Level Agreement)→服务水平协议。在服务提供者与使用者之间就服务质量达成的约定指标。(例如:故障响应的初始时间或修复完成所需时间等)
把握偏度有助于早期发现异常,以及更适当地选择代表值(均值与中位数的区分使用)。
通过捕捉数据的“特性”,可以实现更符合实际的判断与改进。
峰度(Kurtosis):尖峭程度与尾部权重
#● 定义
#峰度是表示**分布峰值高度(中心集中程度)和尾部权重(离群点出现频率)**的指标。
峰度值 | 形状特征 | 含义 |
---|---|---|
峰度 = 0 | 与正态分布相同 | 基准形态。中心与离群点的平衡处于标准状态 |
峰度 > 0 | 峰值尖锐,尾部较重 | 大部分数据集中于中心,同时极端离群点也易出现 |
峰度 < 0 | 峰形平坦,尾部较短,离群点较少 | 数据均匀分散 |
高峰度分布是指“多数数据值相似,但偶尔会出现极端离群值”的分布。
低峰度分布是指“远离均值的值很少,整体平缓分布”的分布。
峰度的计算公式定义如下。
● 描述统计
※此处“−3”是将正态分布的峰度修正为0的校正(称为“超额峰度”)
● 推断统计
峰度可通过工具计算,无需记忆公式。
※“”该符号是指从样本矩求得的峰度的简写。
● 视觉示意
#- 高峰度分布:中心细而高,且两端具有细长的尾部(尖锐的峰和长“胡须”)
- 低峰度分布:平坦且宽广,中心也较平缓,尾部短
● 注意:峰度高并不一定更好
#乍看听起来“高峰度=多数数据集中在均值附近”似乎是好事,但在实际工作中,“峰度高”常常是风险的预兆。
高峰度分布(Leptokurtic)
-
特点:
- 大多数数据集中在均值附近
- 但是,容易包含极端离群值(如异常长的所需时间等)
- 峰值尖锐,尾部较重
-
风险:
- 仅凭均值可能会忽略“异常案例的影响”
- 乍看似乎很稳定,实际上偶尔会发生严重的延迟或故障
-
示例:
- 通常审查耗时20分钟,但有一次却耗时120分钟
→ 从均值无法看出,但通过峰度就能察觉到这种异常
- 通常审查耗时20分钟,但有一次却耗时120分钟
低峰度分布(Platykurtic)
-
特点:
- 数据整体分散(波动较大)
- 但是,较少包含离群值
- 峰形平缓,尾部也短
-
意义:
- 存在波动,但极端恶劣的情况较少
- 处于可控范围内的波动
对比表
视角 | 高峰度分布 | 低峰度分布 |
---|---|---|
乍看 | 看起来稳定 | 看起来较分散 |
实际 | 离群值风险高 | 不易出现离群值 |
管理注意事项 | 注意异常的遗漏 | 虽然安全,但波动较大 |
实务中“分布特性”的重要性
#许多统计方法(尤其是推断统计)以数据服从正态分布为前提。
但在实际工作中处理的数据,实际上经常呈现非正态分布。
这是因为实际数据由“人的操作”“突发事件”“环境因素”等不确定性的叠加生成,偏离理想的“山形”分布。
● 在软件质量中的示例:
#- 修复工时:大多数是短时间,但偶尔有作业需要数十小时 → 右偏分布(正偏度)
- 评审所需时间:极少部分评审异常长 → 由离群值导致的高峰度
- 缺陷密度:大多数模块缺陷率低,但少部分集中 → 多峰分布
如果不理解这些分布的“特性”,仅以均值和标准差进行评估和判断,
- 可能设定与实际不符的目标
- 使用均值汇报后可能引发“情况不同”之类的投诉
- 指标被离群值左右,难以看出改进效果
从而带来实务上的误解和错误判断的风险。
对于这些“非正态分布数据”,需要利用偏度、峰度等分布形状指标,以实现正确的把握和决策。
● 通过可视化识别:直方图和箱线图
#直方图和箱线图在第4篇中也使用过。
可以一目看出偏斜或峰形的尖锐程度。
在Python或Excel中也可轻松绘制,推荐在分析时使用。
- 直方图可目视左右偏斜和峰形尖锐程度
- 箱线图可确认非对称性及离群值的存在
Python 程序(直方图与箱线图)
import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import skew, kurtosis
np.random.seed(0)
data = np.concatenate([np.random.normal(50, 5, 950), np.random.normal(100, 5, 50)])
plt.figure(figsize=(12, 5))
plt.subplot(1, 2, 1)
plt.hist(data, bins=30, color="skyblue", edgecolor="black")
plt.title("ヒストグラム(歪度と尖度の例)")
plt.xlabel("値")
plt.ylabel("度数")
plt.subplot(1, 2, 2)
plt.boxplot(data, vert=False, patch_artist=True, boxprops=dict(facecolor='lightgreen'))
plt.title("箱ひげ図")
plt.tight_layout()
plt.show()
print("歪度:", skew(data))
print("尖度:", kurtosis(data))
总结
#- 偏度与峰度对于以数值方式把握“分布特性”非常重要
- 可作为判断是否接近正态分布的依据
- 对检验统计处理前提条件(正态性)也有帮助
- 通过图形可视化和数值指标两方面加深理解
下次预告
#下次将讲解“基于图表的可视化技巧”。
分享“合适图表的选择”和“易于传达的资料制作”技巧。
这里汇总了统计相关信息。
希望能为您的数据分析带来帮助。