Mímisbrunnr知恵の泉

← オペレーションズマネジメント 一覧

🎓 レベル:応用 | 重要度:A(必須)

📎 前提:工程能力指数(シグマ水準 =3Cpk=3C_{pk}) | 抜取検査の確率(二項):ベルヌーイ分布・二項分布 | OC曲線・生産者危険α/消費者危険β:品質管理第一種の過誤・第二種の過誤・検出力(2種類の誤りとトレードオフ・サンプルサイズ設計)(統計)

要点(BLUF)

1. シックスシグマと DMAIC——手法であって魔法ではない

シックスシグマは、モトローラ/GE が広めた全社的な品質・プロセス改善の枠組みです。統計(管理図・能力指数・検定・実験計画)を道具箱として使いますが、本質は「測れるものにして、原因をデータで突き止め、改善を標準に固定する」というマネジメントの規律です。中核の改善サイクルが DMAIC

flowchart LR
  D["Define 定義<br/>問題・顧客要求(CTQ)・目標"] --> M["Measure 測定<br/>現状の能力・DPMOを測る"]
  M --> A["Analyze 分析<br/>原因をデータで特定"]
  A --> I["Improve 改善<br/>対策・最適条件を実装"]
  I --> C["Control 管理<br/>管理図で定着・再発防止"]
  C -->|"次の課題へ"| D

最後の C(Control)が管理図統計的工程管理)です。改善した状態を Xˉ\bar X-RR 管理図で見張り、元に戻らないよう固定する——DMAIC は前章までの道具を改善のプロセスに組み込んだもの、と捉えると腑に落ちます。

2. シグマ水準と DPMO——なぜ 6σ6\sigma が 3.4 なのか

DPMO は不良率を百万機会あたりに正規化した指標です。

DPMO=不良数機会数×106\mathrm{DPMO}=\frac{\text{不良数}}{\text{機会数}}\times10^{6}

工程能力(工程能力指数)で見たとおり、シグマ水準 == 最寄り規格までが何 σ\sigmaで、短期(工程が中心に静止)なら片側不良率は 1Φ(シグマ水準)1-\Phi(\text{シグマ水準})。ところがシックスシグマでは、長期には工程平均がじわじわ ±1.5σ\pm1.5\sigma ほど動くという経験則を織り込み、シグマ水準から 1.51.5 を引いて不良率を見積もります。これが「6σ6\sigma=3.4 DPMO」の正体です。

(1.5σシフト) DPMO=Φ ⁣((シグマ水準1.5))×106\text{(1.5σシフト) } \mathrm{DPMO}=\Phi\!\bigl(-(\text{シグマ水準}-1.5)\bigr)\times10^{6} 6σ:Φ((61.5))=Φ(4.5)3.398×106    3.4 DPMO6\sigma:\quad \Phi(-(6-1.5))=\Phi(-4.5)\approx3.398\times10^{-6}\;\Rightarrow\;3.4\ \mathrm{DPMO}

シフトを置かなければ 6σ6\sigma1Φ(6)9.9×10101-\Phi(6)\approx9.9\times10^{-10}(片側)、両側で約 2 ppb——3.4 DPMO とは6桁違います。「6σ=3.4」は1.5σシフトを仮定した約束事だと押さえるのが肝心です。

3. シグマ水準 → DPMO 対応表(コード)

scipy.stats.norm で、シフト無し(短期)と1.5σシフト(長期)の DPMO を並べ、6σ6\sigma=3.4 DPMO を再現します。

import numpy as np
import pandas as pd
from scipy.stats import norm

# シグマ水準 Z(最寄り規格までの距離が何 sigma か)-> DPMO
#   短期(シフト無・片側)  : (1 - Phi(Z))     * 1e6
#   長期(1.5sigmaシフト・片側): (1 - Phi(Z-1.5)) * 1e6
rows = []
for Z in [1, 2, 3, 4, 4.5, 5, 6]:
    rows.append({"sigma水準": Z,
                 "DPMO_no_shift": (1 - norm.cdf(Z)) * 1e6,
                 "DPMO_1.5shift": (1 - norm.cdf(Z - 1.5)) * 1e6})
df = pd.DataFrame(rows)
print(df.to_string(index=False, float_format=lambda x: f"{x:.3f}"))

z6_shift = (1 - norm.cdf(6 - 1.5)) * 1e6
z6_noshift_two_ppb = 2 * (1 - norm.cdf(6)) * 1e9
print(f"\n6 sigma(1.5sigma シフト・片側)= {z6_shift:.4f} DPMO   = 約 3.4")
print(f"6 sigma(シフト無・両側)       = {z6_noshift_two_ppb:.4f} ppb  = 約 2")

出力:

 sigma水準  DPMO_no_shift  DPMO_1.5shift
   1.000     158655.254     691462.461
   2.000      22750.132     308537.539
   3.000       1349.898      66807.201
   4.000         31.671       6209.665
   4.500          3.398       1349.898
   5.000          0.287        232.629
   6.000          0.001          3.398

6 sigma(1.5sigma シフト・片側)= 3.3977 DPMO   = 約 3.4
6 sigma(シフト無・両側)       = 1.9732 ppb  = 約 2

出力の意味:右列(1.5σシフト)が、よく見るシックスシグマの DPMO 表そのものです——3σ3\sigma で66807、4σ4\sigma で6210、5σ5\sigma で233、そして 6σ6\sigma で 3.398 ≒ 3.4 DPMO。多くの企業が出発点とする「3σ3\sigma 品質」は実は約6.7%の不良(66807 DPMO)で、6σ6\sigma までに5桁以上改善する余地があることがわかります。一方の左列(シフト無し)では 6σ6\sigma0.0010.001 DPMO(両側でも約2 ppb)——同じ「6σ」でも、1.5σシフトを置くかどうかで3.4 と 0.002 のあいだを動く。数字を引用するときはどちらの約束かを必ず確認します(要最新確認)。

4. 品質コスト——PAF と 1-10-100

品質は「お金をかけるほど高い」のではなく、かけ方の配分で総額が決まります。費用を3つに分けるのが PAF モデル

経験則の 1-10-100 の法則は、同じ1個の不良を捕まえるコストが、下流ほど桁で膨らむことを言います——源流の予防なら 1、工程内の検査で捕まえれば 10、顧客に届いてからは 100。だから予防に前払いするほど、評価+失敗の総額が下がる。検査(評価)を厚くするのは「10で食い止める」手当てに過ぎず、根治は予防(上流で作り込む)です。次の検査の経済性は、この「10 と 100」の綱引きを定量化したものと読めます。

5. 検査設計——デミングの「全数か無か」

検査をいくらやるか。OC曲線・生産者危険 α\alpha/消費者危険 β\beta で抜取計画 (n,c)(n,c) を設計する理論は 品質管理第一種の過誤・第二種の過誤・検出力(2種類の誤りとトレードオフ・サンプルサイズ設計) に譲り、ここでは経済性で考えます。デミングは「工程が安定(管理状態)なら、中途半端な抜取検査は最悪手」と説きました(kpk_p ルール)。費用を2つ置きます。

不良率 pp のロット(NN 個)に対し、2つの極端な方策のコストは

全数検査=Nk1(不良率によらず一定),無検査=pNk2(流出した不良の損害)\text{全数検査}=N\,k_1\quad(\text{不良率によらず一定}),\qquad \text{無検査}=p\,N\,k_2\quad(\text{流出した不良の損害})

両者が等しくなる不良率が損益分岐です。

Nk1=pNk2    p\*=k1k2N\,k_1=p\,N\,k_2\;\Longrightarrow\;\boxed{\,p^{\*}=\dfrac{k_1}{k_2}\,}

安定工程では、最適は両極のどちらかになります(中間の抜取は両方の悪いとこ取り)。

6. 検査の経済性を可視化する(コード)

k1=2k_1=2 円/個・k2=100k_2=100 円/個(流出損害は検査費の50倍)、ロット N=10000N=10000。全数と無検査の総コストを不良率 pp に対して描き、損益分岐 p\*=k1/k2p^\*=k_1/k_2 を確かめます。

import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib

# デミングの「全数か無か」:k1=1個の検査費、k2=不良1個が後工程へ流れた損害
k1 = 2.0       # 円/個(検査費=評価コスト)
k2 = 100.0     # 円/個(不良流出の損害=失敗コスト。1-10-100 の "100")
N = 10000      # ロットサイズ

p_star = k1 / k2
print(f"検査費 k1 = {k1:.0f} 円/個、不良流出の損害 k2 = {k2:.0f} 円/個")
print(f"損益分岐の不良率 p* = k1/k2 = {p_star:.4f}(= {p_star * 100:.1f}%)")
print()
print("不良率p   全数検査 N*k1   無検査 p*N*k2    安い方")
for p in [0.005, 0.010, 0.020, 0.030, 0.050]:
    full = N * k1
    none = p * N * k2
    cheaper = "全数検査" if full < none else "無検査"
    print(f"{p:.3f}     {full:10.0f}    {none:10.0f}     {cheaper}")

# 図:両ポリシーの総コスト vs 不良率
ps = np.linspace(0, 0.05, 200)
full_cost = np.full_like(ps, N * k1)
none_cost = ps * N * k2
plt.figure(figsize=(10, 5.5))
plt.plot(ps * 100, full_cost, color="#1f77b4", lw=2, label=f"全数検査 N*k1 = {N * k1:.0f}円(不良率によらず一定)")
plt.plot(ps * 100, none_cost, color="#d62728", lw=2, label="無検査 p*N*k2(不良の流出損害)")
plt.axvline(p_star * 100, color="green", ls="--", label=f"損益分岐 p* = k1/k2 = {p_star * 100:.1f}%")
plt.fill_between(ps * 100, none_cost, full_cost, where=(ps <= p_star), color="#d62728", alpha=0.10)
plt.fill_between(ps * 100, full_cost, none_cost, where=(ps > p_star), color="#1f77b4", alpha=0.10)
plt.text(0.6, N * k1 * 1.04, "p < p*:無検査が安い", color="#d62728")
plt.text(2.7, N * k1 * 1.04, "p > p*:全数検査が安い", color="#1f77b4")
plt.xlabel("ロットの不良率 p(%)"); plt.ylabel("総コスト(円)")
plt.title("検査の経済性:全数 vs 無検査の損益分岐 p*=k1/k2(デミングの全数か無か)")
plt.legend(loc="upper left"); plt.tight_layout(); plt.show()

出力:

検査費 k1 = 2 円/個、不良流出の損害 k2 = 100 円/個
損益分岐の不良率 p* = k1/k2 = 0.0200(= 2.0%)

不良率p   全数検査 N*k1   無検査 p*N*k2    安い方
0.005          20000          5000     無検査
0.010          20000         10000     無検査
0.020          20000         20000     無検査
0.030          20000         30000     全数検査
0.050          20000         50000     全数検査

出力の意味k1=2, k2=100k_1=2,\ k_2=100 なら損益分岐は p\*=k1/k2=2%p^\*=k_1/k_2=2\%。不良率が 2%2\% より低ければ(0.5%,1%0.5\%,1\%)、全数検査の2万円より無検査の流出損害(5千〜1万円)の方が安く、検査しない方が得2%2\% を超えると(3%,5%3\%,5\%)流出損害が3万〜5万円に膨らみ、全数検査が得になります。図では、青い水平線(全数=一定2万円)と赤い直線(無検査=ppに比例)が p\*=2%p^\*=2\% で交差し、左側は無検査、右側は全数が下にきます。安定工程では抜取(中間)に意味は薄く、ppp\*p^\* の大小で all-or-none に振る——これがデミングの主張です。ただし大前提は工程が管理状態であること(統計的工程管理)。pp が群ごとに暴れる不安定工程では、この単純比較は使えません。

⚠️ よくある誤解

関連ノート