3. 描述性统计分析:集中趋势、离散程度、分布形状与数据可视化
各位工程师朋友,大家好。今天我们聊聊描述性统计分析。说白了,就是拿到一堆可靠性数据后,怎么用几个数字和几张图,快速摸清这批数据的“脾气”。我做了十几年可靠性,见过太多人一上来就套复杂模型,结果数据本身有没有问题都没搞清楚。嗯,咱们先打好基础。
核心思想:描述性统计不是做决策,而是帮我们“看清”数据。它是所有后续推断、建模的起点。
3.1 集中趋势:数据往哪儿“聚”
集中趋势回答一个问题:这批数据典型的、有代表性的值是多少?常用的有三个指标。
3.1.1 均值(Mean)
就是算术平均。把所有失效时间加起来,除以样本量。公式很简单:
μ = (x₁ + x₂ + ... + xₙ) / n
但我得提醒你,均值对异常值非常敏感。我在项目中遇到过一批轴承寿命数据,大部分在2000小时左右,结果有一个样品因为安装不当,只跑了50小时就坏了。均值一下子被拉低了很多,差点误导我们以为产品有问题。所以,均值适合数据比较“干净”、没有极端值的情况。
3.1.2 中位数(Median)
把数据从小到大排好,最中间那个数。如果样本量是偶数,取中间两个数的平均值。
中位数有个好处:它不怕异常值。还是刚才那个轴承的例子,中位数基本不受那个50小时的影响,能更真实地反映“大多数产品能跑多久”。我个人习惯,在可靠性数据分析中,尤其是样本量不大时,会同时看均值和中间位数。如果两者差很多,说明数据里有“故事”。
3.1.3 众数(Mode)
出现次数最多的那个值。在连续型数据中,众数可能不那么明显,但在离散型数据或分组数据中很有用。比如,我们统计一批电阻的阻值,发现1kΩ这个值出现频率最高,那众数就是1kΩ。
我的小技巧:当数据分布不对称时,中位数比均值更能代表“典型值”。比如电子产品早期失效期,数据往往左偏,这时候看中位数更靠谱。
3.2 离散程度:数据有多“散”
光知道集中趋势还不够。两个批次的均值可能一样,但一个批次数据很集中,另一个很分散。离散程度就是衡量这个的。
3.2.1 极差(Range)
最大值减最小值。最简单,但也最粗糙。它只用了两个极端值,中间的数据分布情况完全不管。我一般只在快速检查时用一下。
3.2.2 方差(Variance)与标准差(Standard Deviation)
这是最常用的。方差是每个数据与均值差的平方的平均值。标准差是方差的平方根,单位跟原始数据一致,更好理解。
样本方差 s² = Σ(xᵢ - x̄)² / (n - 1)
样本标准差 s = √s²
注意分母是n-1,不是n。这是为了用样本估计总体时更准确,叫“无偏估计”。
标准差越小,说明数据越集中,产品一致性越好。我在做可靠性增长试验时,会特别关注标准差的变化。如果随着试验进行,标准差在缩小,说明工艺在稳定,这是个好信号。
避坑指南:我曾经犯过一个错——直接用总体方差公式(分母为n)去算样本方差,结果估计出来的总体方差偏小。后来做置信区间时发现怎么都对不上。记住,只要你是用样本推断总体,就用n-1。
3.3 分布形状:数据长啥样
集中趋势和离散程度描述了数据的位置和宽度,但形状也很重要。两个数据集可能有相同的均值和标准差,但一个对称,一个偏斜,那背后的失效机理可能完全不同。
3.3.1 偏度(Skewness)
衡量数据分布不对称的程度和方向。
- 正偏(右偏):尾巴拖在右边。均值大于中位数。常见于早期失效期,大部分产品寿命长,少数短命。
- 负偏(左偏):尾巴拖在左边。均值小于中位数。常见于耗损失效期,大部分产品寿命到了,少数长寿。
- 零偏:对称分布。比如正态分布。
偏度的绝对值越大,不对称越严重。一般|偏度| > 1,就算明显偏斜了。
3.3.2 峰度(Kurtosis)
衡量数据分布的“尖峭”或“平坦”程度,说白了就是尾巴有多厚。
- 高峰度(尖峰):数据集中在均值附近,但尾巴厚,极端值多。比如某些电子元件的突发失效。
- 低峰度(平峰):数据分布比较均匀,尾巴薄。
- 常峰度:跟正态分布一样,峰度值为3(有些软件会减去3,得到超额峰度)。
峰度大,意味着你要小心极端值。我在做加速寿命试验时,如果发现峰度异常高,会先检查是不是有测试错误,或者是不是有新的失效模式出现了。
一句话总结:偏度看左右不对称,峰度看尾巴厚不厚。这两个指标能帮你判断数据是否适合用正态分布建模。
3.4 数据可视化:一图胜千言
数字再精确,也不如一张图直观。我每次拿到新数据,第一件事就是画图。这里介绍两个最常用的。
3.4.1 直方图(Histogram)
把数据分成若干区间,每个区间画一个柱子,高度表示落在该区间的数据个数或频率。
直方图能直观展示数据的分布形状:是单峰还是双峰?对称还是偏斜?有没有异常间隔?
举个例子,我做过一批继电器的失效时间分析。直方图画出来是双峰的,一个峰在1000小时,一个在5000小时。后来一查,原来是两个不同供应商的批次混在一起了。你看,一张图就发现了问题。
# Python示例:画直方图
import matplotlib.pyplot as plt
import numpy as np
# 模拟一批失效时间数据(单位:小时)
data = np.random.weibull(1.5, 100) * 1000
plt.hist(data, bins=15, edgecolor='black', alpha=0.7)
plt.xlabel('失效时间 (小时)')
plt.ylabel('频数')
plt.title('失效时间直方图')
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.show()
3.4.2 箱线图(Box Plot)
箱线图展示五个统计量:最小值、第一四分位数(Q1)、中位数、第三四分位数(Q3)、最大值。箱体从Q1到Q3,中间一条线是中位数。箱体外的“须”延伸到非异常范围内的最远点,超出须的点就是异常值。
箱线图的优势在于:
- 可以同时比较多个组的数据。
- 能清晰识别异常值。
- 不受极端值影响,稳健性好。
我在做不同温度下的可靠性对比时,最喜欢用箱线图。把25℃、50℃、75℃三组数据并排画出来,中位数、离散程度、异常值一目了然。
# Python示例:画箱线图
import matplotlib.pyplot as plt
import numpy as np
# 模拟三组数据
data1 = np.random.normal(1000, 100, 50)
data2 = np.random.normal(1200, 150, 50)
data3 = np.random.normal(800, 200, 50)
plt.boxplot([data1, data2, data3], labels=['25°C', '50°C', '75°C'])
plt.ylabel('失效时间 (小时)')
plt.title('不同温度下的失效时间箱线图')
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.show()
我的习惯:先画直方图看整体形状,再画箱线图看细节和异常值。两个图配合使用,基本能摸清数据的底细。
3.5 知识体系总览
下面这张图,把本章的核心逻辑串起来了。你可以把它当作一个检查清单:拿到数据后,按这个顺序走一遍,心里就有数了。
好了,这一章的内容就这些。记住,描述性统计不是终点,而是起点。把数据看透了,后面的建模、推断才能站得住脚。下次拿到数据,别急着跑模型,先画两张图,算几个数,跟数据“聊聊天”。