一、极差
- 未分组或单项分组的数据:极差=最大值 - 最小值
- 已分组数据:极差=最大组的上限 - 最下组的下限
- 实际应用中,极差可用于检查产品质量的稳定性和进行质量控制。
- 正常生产条件下,极差在一定范围内波动,如出现不正常情况,极差就会超出一定范围。由此监察产品质量。
二、分位距
- 常用分位距有:四分位距、八分位距、十分位距等
- 四分位距 = 第三个四分位数 - 第一个四分位数
import numpy as np
from scipy.stats import iqr
import pandas as pddata = np.array([2, 3, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 7, 8, 9, 9])# numpy
Q1 = np.percentile(data, 25)
Q3 = np.percentile(data, 75)IQR = Q3 - Q1
print(f'使用 numpy 计算分位距(IQR):{IQR}')# scipy
IQR = iqr(data, rng=[25, 75], scale=1.0)
print(f'使用 scipy 计算分位距(IQR):{IQR}')# pandas
df = pd.DataFrame({'Value': [2, 3, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 7, 8, 9, 9]})
Q1 = df['Value'].quantile(0.25)
Q3 = df['Value'].quantile(0.75)
IQR = Q3 - Q1
print(f"使用 pandas 计算分位距(IQR):{IQR}")
输出:
>>> 使用 numpy 计算分位距(IQR):2.75
>>> 使用 scipy 计算分位距(IQR):2.75
>>> 使用 pandas 计算分位距(IQR):2.75
三、平均差
- 数据组中各数据值与其算术平均数离差绝对值的算数平均数,常用符号“M.D”表示
下图是甲乙两组工人日产量的平均差计算过程:
甲 组 | 乙 组 | ||||
日产量 | 离差 | 离差绝对值 | 日产量 | 离差 | 离差绝对值 |
x | x - 平均数 | | x - 平均数 | | x | x - 平均数 | | x - 平均数 | |
4 | -12 | 12 | 7 | -9 | 9 |
7 | -9 | 9 | 12 | -4 | 4 |
11 | -5 | 5 | 14 | -2 | 2 |
14 | -2 | 2 | 14 | -2 | 2 |
14 | -2 | 2 | 15 | -1 | 1 |
16 | 0 | 0 | 17 | 1 | 1 |
17 | 1 | 1 | 17 | 1 | 1 |
24 | 8 | 8 | 19 | 3 | 3 |
25 | 9 | 9 | 20 | 4 | 4 |
28 | 12 | 12 | 25 | 9 | 9 |
合计 | ---- | 60 | 合计 | ---- | 36 |
- 甲组平均差 = 甲组离差绝对值的平均值 = 60 / 10 = 6 (件)
- 乙组平均差 = 乙组离差绝对值的平均值 = 36 / 10 = 3.6 (件)
import numpy as npgroup_a = np.array([4, 7, 11, 14, 14, 16, 17, 24, 25, 28])
group_b = np.array([7, 12, 14, 14, 15, 17, 17, 19, 20, 25])mean_a = np.mean(group_a)
abs_a = np.abs(group_a - mean_a)
mad_a = np.mean(abs_a)print(f'甲组的平均差(MAD):{mad_a}')mean_b = np.mean(group_b)
abs_b = np.abs(group_b - mean_b)
mad_b = np.mean(abs_b)print(f'乙组的平均差(MAD):{mad_b}')
输出:
>>> 甲组的平均差(MAD):6.0
>>> 乙组的平均差(MAD):3.6