You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python环境下S图(S-chart)上下控制限的计算方法

S图(S-chart)上下控制限计算方法

前置准备

你已经完成了各分组的单值标准差计算,在此基础上还需要确认两个参数:

  • 所有分组的总数,记为k
  • 单个分组内的样本量,记为n(S图要求所有分组的样本量一致)

计算步骤

  1. 计算所有分组标准差的平均值s̄,作为S图的中心线CL

CL = s̄ = (s₁ + s₂ + ... + sₖ) / k
其中sᵢ为第i个分组的标准差

  1. 确认控制图常数
    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₄

  1. 计算上下控制限
  • 上控制限 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 01:06:03