注目イベント!
春の新人向け連載2025開催中!
今年も春の新人向け連載が始動しました!!
現場で役立つ考え方やTipsを丁寧に解説、今日から学びのペースを整えよう。
詳細はこちらから!
event banner

聊聊统计吧 - 面向软件质量的统计入门(No.5 认识形状:偏度、峰度与分布特征)

日本語|English|中国语
| 5 min read
Author: shuichi-takatsu shuichi-takatsuの画像
Information

为了覆盖更广泛的受众,这篇文章已从日语翻译而来。
您可以在这里找到原始版本。

引言

#

在“聊聊统计吧”系列第5篇中,我们关注数据的“形状”。
到目前为止,我们已经观察了代表值和离散程度,但通过关注分布形状本身,可以更清楚地了解数据的本质。

本次主要介绍以下两个指标:

  • 偏度(Skewness)… 分布的“非对称性”
  • 峰度(Kurtosis)… 分布的“尖峭程度”和“尾部权重”

在质量管理中,许多场景都以正态分布为前提进行统计管理或判断,因此需要具备识别非正态分布的能力

Information

正态分布是:
到目前为止,已经多次出现“正态分布”这种分布。
详细内容会在“概率和分布”部分介绍,但一直说“后面再详细说明”也不是办法,因此在这里先传达对于“直观理解正态分布”所必需的信息。

正态分布是大部分数据集中在平均值附近,呈现左右对称的山形的分布。
数学上定义为以均值 μ 为中心,标准差 σ 为参数的连续概率分布。
(关于均值,可参见第3篇,关于标准差,可参见第4篇)
这是在自然界和商业中许多现象中观察到的非常基础且重要的分布。

正态分布的主要特征:

  • 以均值为中心,左右对称
  • 山峰的高度和宽度由标准差(σ)决定
  • 约68%的数据落在均值±1σ范围内,约95%落在±2σ范围内,约99.7%落在±3σ范围内

该特性使得例如可判断“若数据偏离均值超过2σ则为异常”。

蓝色曲线表示均值为0、标准差为1的正态分布,彩色区域分别表示:

  • 绿色:±1σ(约68.3%的数据)
  • 橙色:±2σ(覆盖约95.4%)
  • 红色:±3σ(覆盖约99.7%)

正态分布与 ±1σ、±2σ、±3σ 的范围

与软件质量的关系:
软件的处理时间、审查所需时间等因随机因素累积而产生的现象,理论上已知会趋近于正态分布。
但是,实际数据中既有“接近正态分布”的,也有“极度偏斜的”、还有“含有大量离群点而峰度很高的”情况。
要识别这些“特性”,仅仅查看均值和标准差是不够的
因此,本篇将介绍将分布形状数值化的“偏度”和“峰度”,并学习在实际工作中应如何应对非正态分布。

偏度(Skewness):是否左右对称

#

● 定义

#

偏度是用数值表示数据分布向左右哪一侧倾斜的指标。
通过评估“数据偏向均值的左侧还是右侧”,可以把握仅从均值和标准差难以看出的“偏斜特性”。

  • 偏度 = 0:左右对称分布(例如:正态分布)
  • 偏度 > 0:右侧有较长尾部(右侧离群点较多)
  • 偏度 < 0:左侧有较长尾部(左侧离群点较多)
Information

偏度的计算公式定义如下。

● 描述统计
g1=1n(xixˉs)3g_1 = \frac{1}{n} \sum \left( \frac{x_i - \bar{x}}{s} \right)^3

  • xix_i:数据的各个值
  • xˉ\bar{x}:均值(在描述统计中作为总体均值处理,可视为母体均值 μ\mu
  • ss:标准差(无校正,分母为 nn
  • nn:数据个数(当前数据的数量)

● 推断统计
g1=n(n1)(n2)(xixˉs)3g_1 = \frac{n}{(n - 1)(n - 2)} \sum \left( \frac{x_i - \bar{x}}{s} \right)^3

  • xix_i:数据的各个值
  • xˉ\bar{x}:样本均值
  • ss:样本标准差
  • nn:数据个数

偏度可以通过工具计算,不必记忆公式。
※“g1g_1”这个符号是指从样本矩求得的偏度的简写。

● 视觉示意

#

偏度的视觉示意如下。
左偏分布、对称分布(正态分布)、右偏分布

● 实务中的示例

#

在软件开发和质量管理的现场,数据呈现偏斜的情况并不少见

  • 修复所需天数的分布
    通常多在1~3天内完成修复,但偶尔有需要超过1周的情况 → 右偏
  • 用户满意度调查
    多数回答集中在“5分制的4或5”(较高满意度),而低满意度的回答较少 → 左偏

● 如果忽略偏度会怎样?

#

如果存在偏度却仅凭均值进行判断,可能会误判“典型情况”

  • 均值大幅偏移,导致KPI(※1)或SLA(※2)的设定与实际情况不符
  • 对评审或测试所需时间的估计过低或过高
  • 被“部分极端案例”所主导进行质量判断
Information

※1:KPI(Key Performance Indicator)→重要绩效指标。用于衡量项目或业务完成度的数值目标。(例如:缺陷修复平均天数、评审完成率等)
※2:SLA(Service Level Agreement)→服务水平协议。在服务提供者与使用者之间就服务质量达成的约定指标。(例如:故障响应的初始时间或修复完成所需时间等)

把握偏度有助于早期发现异常,以及更适当地选择代表值(均值与中位数的区分使用)
通过捕捉数据的“特性”,可以实现更符合实际的判断与改进


峰度(Kurtosis):尖峭程度与尾部权重

#

● 定义

#

峰度是表示**分布峰值高度(中心集中程度)和尾部权重(离群点出现频率)**的指标。

峰度值 形状特征 含义
峰度 = 0 与正态分布相同 基准形态。中心与离群点的平衡处于标准状态
峰度 > 0 峰值尖锐,尾部较重 大部分数据集中于中心,同时极端离群点也易出现
峰度 < 0 峰形平坦,尾部较短,离群点较少 数据均匀分散

高峰度分布是指“多数数据值相似,但偶尔会出现极端离群值”的分布。
低峰度分布是指“远离均值的值很少,整体平缓分布”的分布。

Information

峰度的计算公式定义如下。

● 描述统计
 g2=1n(xixˉs)43g_2 = \frac{1}{n} \sum \left( \frac{x_i - \bar{x}}{s} \right)^4 - 3
 ※此处“−3”是将正态分布的峰度修正为0的校正(称为“超额峰度”)

● 推断统计
 g2=n(n+1)(n1)(n2)(n3)(xixˉs)43(n1)2(n2)(n3)g_2 = \frac{n(n + 1)}{(n - 1)(n - 2)(n - 3)} \sum \left( \frac{x_i - \bar{x}}{s} \right)^4 - \frac{3(n - 1)^2}{(n - 2)(n - 3)}

峰度可通过工具计算,无需记忆公式。
※“g2g_2”该符号是指从样本矩求得的峰度的简写。

● 视觉示意

#

峰度的视觉示意如下。
不同峰度下的分布比较

  • 高峰度分布:中心细而高,且两端具有细长的尾部(尖锐的峰和长“胡须”)
  • 低峰度分布:平坦且宽广,中心也较平缓,尾部短

● 注意:峰度高并不一定更好

#

乍看听起来“高峰度=多数数据集中在均值附近”似乎是好事,但在实际工作中,“峰度高”常常是风险的预兆

高峰度分布(Leptokurtic)

  • 特点

    • 大多数数据集中在均值附近
    • 但是,容易包含极端离群值(如异常长的所需时间等)
    • 峰值尖锐,尾部较重
  • 风险

    • 仅凭均值可能会忽略“异常案例的影响”
    • 乍看似乎很稳定,实际上偶尔会发生严重的延迟或故障
  • 示例

    • 通常审查耗时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))

直方图(偏度与峰度示例)、箱线图


总结

#
  • 偏度与峰度对于以数值方式把握“分布特性”非常重要
  • 可作为判断是否接近正态分布的依据
  • 对检验统计处理前提条件(正态性)也有帮助
  • 通过图形可视化和数值指标两方面加深理解

下次预告

#

下次将讲解“基于图表的可视化技巧”。
分享“合适图表的选择”和“易于传达的资料制作”技巧。

这里汇总了统计相关信息。
希望能为您的数据分析带来帮助。

豆蔵では共に高め合う仲間を募集しています!

recruit

具体的な採用情報はこちらからご覧いただけます。