Σ
SDCalc
中級応用·14 min

管理図と工程管理

管理図を使った統計的工程管理(SPC)をマスター。標準偏差を使った管理限界の設定、ウエスタンエレクトリックルール、工程ドリフトの検出方法を解説。

統計的工程管理:品質の基盤

管理図は統計的工程管理(SPC)の要であり、標準偏差を用いて工程の安定性を時間経過とともに監視します。1920年代にベル研究所のウォルター・シューハートが開発したこの強力なツールは、偶然原因による変動(工程に固有のもの)と特殊原因による変動(対処が必要な問題を示すもの)を区別します。

管理図の優れた点はそのシンプルさにあります。時間経過とともに測定値をプロットし、標準偏差に基づく管理限界を追加し、問題を示す点やパターンを監視するだけです。このリアルタイム監視は、事後の検査で欠陥を見つけるのではなく、発生前に欠陥を防止します。

現代の製造業、医療、サービス業は品質維持に管理図を活用しています。ナノメートル精度が求められる半導体製造から病院の感染率まで、SPCは工程改善の普遍的なフレームワークを提供します。

偶然原因と特殊原因

偶然原因による変動は、どんな工程にも存在する自然で予想される変動です。特殊原因による変動は、何かが変わったこと—新しい作業者、摩耗した工具、汚染された材料—を示します。管理図はこの2つを区別する助けとなります。

管理図の種類

データの種類によって異なる管理図が必要です。正しい図を選ぶことで正確な工程監視が可能になります。

図の種類データの種類用途
X̄-R(X-barと範囲)連続データ、サブグループn≤10製造測定
X̄-S(X-barと標準偏差)連続データ、サブグループn>10大量バッチのサンプリング
I-MR(個別値-移動範囲)個別測定値高価/破壊的な検査
p管理図不良品率合格/不合格の検査
c管理図欠陥数1単位あたりの欠陥数

連続データ(長さ、重量、温度などの測定値)にはX̄-R管理図が最も一般的です。サブグループの標本を収集し、一方の図に平均(X̄)を、もう一方の図に範囲(R)をプロットします。合わせて工程の中心とばらつきの両方を監視します。

管理限界の計算

管理限界は予想される変動の境界を定義します。中心線から±3標準偏差の位置に設定され、工程が管理下にある場合の99.73%のデータ点を含みます。

管理限界

UCL = x̄ + 3σ, CL = x̄, LCL = x̄ - 3σ

範囲法を用いたX̄管理図の場合、公式は次のようになります。

X-bar管理図の限界

UCL = X̿ + A₂R̄, LCL = X̿ - A₂R̄

X̿は総平均、R̄は平均範囲、A₂はサブグループサイズに依存する定数です(例:n=5の場合A₂ = 0.577)。

管理限界 ≠ 規格限界

管理限界はデータから計算され、工程が実際にどう動いているかを反映します。規格限界は顧客やエンジニアが設定し、工程がどうあるべきかを反映します。工程が管理下にあっても、規格外の部品を生産する可能性はあります。

管理限界の定数

nA₂D₃D₄
21.88003.267
31.02302.574
40.72902.282
50.57702.114

問題検出のためのウエスタンエレクトリックルール

管理限界の外側の1点だけが問題のシグナルではありません。ウエスタンエレクトリックルールは、管理図を標準偏差に基づくゾーンに分割し、より微妙なパターンを検出します。

  • ゾーンC:中心線から1σ以内
  • ゾーンB:中心線から1σ〜2σの範囲
  • ゾーンA:中心線から2σ〜3σの範囲

4つの基本ルール

1

ルール1:単一点

1点が3σ(ゾーンA以上)を超える。自然に発生する確率はわずか0.27%です。
2

ルール2:9点連続

9点連続で中心線の同じ側にある。工程平均のシフトを示唆します。
3

ルール3:6点のトレンド

6点連続で上昇または下降。工程のドリフトや工具の摩耗を示唆します。
4

ルール4:ゾーンパターン

連続する3点のうち2点がゾーンA以上(同じ側)にある。シフトの早期警告です。

一般的なパターンの認識

経験豊富な実践者は、特定の問題を示す視覚的パターンを読み取れるようになります。

パターン外観考えられる原因
シフト突然のレベル変化新しい作業者、材料ロット変更、装置調整
トレンド徐々に上昇/下降工具摩耗、温度ドリフト、疲労
周期上下の繰り返しパターンシフト交替、環境サイクル、ローテーションスケジュール
密着点が中心近くに集中管理限界の誤り、データの丸めや編集
層化点が中心を避ける混合されたストリーム、複数の機械

Python実装

自動ルールチェック付きのX̄-R管理図を作成します。

python
import numpy as np
import matplotlib.pyplot as plt

def create_xbar_chart(data, subgroup_size=5):
    """Create X-bar control chart with control limits."""
    # Reshape data into subgroups
    n_subgroups = len(data) // subgroup_size
    subgroups = data[:n_subgroups * subgroup_size].reshape(n_subgroups, subgroup_size)

    # Calculate subgroup means and ranges
    xbar = subgroups.mean(axis=1)
    R = subgroups.max(axis=1) - subgroups.min(axis=1)

    # Control chart constants (for n=5)
    A2 = 0.577
    D3, D4 = 0, 2.114

    # Calculate control limits
    xbar_bar = xbar.mean()
    R_bar = R.mean()

    UCL = xbar_bar + A2 * R_bar
    LCL = xbar_bar - A2 * R_bar

    # Check for out-of-control points
    ooc = (xbar > UCL) | (xbar < LCL)

    # Plot
    plt.figure(figsize=(12, 5))
    plt.plot(xbar, 'b-o', markersize=4)
    plt.axhline(xbar_bar, color='g', linestyle='-', label='CL')
    plt.axhline(UCL, color='r', linestyle='--', label='UCL')
    plt.axhline(LCL, color='r', linestyle='--', label='LCL')
    plt.scatter(np.where(ooc)[0], xbar[ooc], color='red', s=100, zorder=5)
    plt.xlabel('Subgroup')
    plt.ylabel('X-bar')
    plt.title('X-bar Control Chart')
    plt.legend()
    plt.show()

    return {'xbar': xbar, 'UCL': UCL, 'LCL': LCL, 'ooc': ooc}

# Example: Monitor a manufacturing process
np.random.seed(42)
# Simulate 100 measurements (20 subgroups of 5)
measurements = np.random.normal(100, 2, 100)
# Add a shift at subgroup 15
measurements[75:] += 3

result = create_xbar_chart(measurements)