一、极差
- 未分组或单项分组的数据:极差=最大值 - 最小值
- 已分组数据:极差=最大组的上限 - 最下组的下限
- 实际应用中,极差可用于检查产品质量的稳定性和进行质量控制。
- 正常生产条件下,极差在一定范围内波动,如出现不正常情况,极差就会超出一定范围。由此监察产品质量。
二、分位距
- 常用分位距有:四分位距、八分位距、十分位距等
- 四分位距 = 第三个四分位数 - 第一个四分位数
import numpy as np
from scipy.stats import iqr
import pandas as pd
data = 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}")
输出:
三、平均差
- 数据组中各数据值与其算术平均数离差绝对值的算数平均数,常用符号“M.D”表示
下图是甲乙两组工人日产量的平均差计算过程:
- 甲组平均差 = 甲组离差绝对值的平均值 = 60 / 10 = 6 (件)
- 乙组平均差 = 乙组离差绝对值的平均值 = 36 / 10 = 3.6 (件)
import numpy as np
group_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}')
输出: