Python环境下S图(S-chart)上下控制限的计算方法
S图(S-chart)上下控制限计算方法
前置准备
你已经完成了各分组的单值标准差计算,在此基础上还需要确认两个参数:
- 所有分组的总数,记为k
- 单个分组内的样本量,记为n(S图要求所有分组的样本量一致)
计算步骤
- 计算所有分组标准差的平均值s̄,作为S图的中心线CL
CL = s̄ = (s₁ + s₂ + ... + sₖ) / k
其中sᵢ为第i个分组的标准差
- 确认控制图常数
S图的控制限系数和组内样本量n直接相关,你可以直接查常规控制图常数表获得对应n的B₃、B₄值,也可以通过c₄常数自行推导:
c₄是无偏标准差常数,计算逻辑为:c₄ = √(2/(n-1)) * Γ(n/2) / Γ((n-1)/2),其中Γ为伽马函数
B₃ = max(0, 1 - 3√(1 - c₄²)/c₄)
B₄ = 1 + 3√(1 - c₄²)/c₄
- 计算上下控制限
- 上控制限 UCL = s̄ * B₄
- 下控制限 LCL = s̄ * B₃
注意:当n≤6时,B₃的计算值为负,标准差本身不可能为负,所以此时LCL直接取0即可
Python 辅助计算示例
如果你不想手动查表,可以用以下代码快速计算对应n的控制限系数:
import numpy as np from scipy.special import gamma def get_schart_control_limits(group_stds, n): """ group_stds: 各分组标准差组成的列表/数组 n: 单组内的样本量 返回值:(LCL, CL, UCL) """ s_bar = np.mean(group_stds) c4 = np.sqrt(2/(n-1)) * gamma(n/2) / gamma((n-1)/2) B3 = max(0, 1 - 3 * np.sqrt(1 - c4**2) / c4) B4 = 1 + 3 * np.sqrt(1 - c4**2) / c4 return s_bar * B3, s_bar, s_bar * B4
内容的提问来源于stack exchange,提问作者Elias
相关产品推荐
相关产品推荐

