algo-mfg-cpk について
製造工程の能力分析を行うスキルです。規格限界、平均、サブグループ内変動から Cp と Cpk を算出し、不良率を推定します。工程が統計的に安定している必要性を重視し、計算用 Python スクリプトと検証テストも含みます。
主な機能
- 01Cp、Cpk、Cpmの計算
- 02不良率PPMの推定
- 03工程の中心度評価
- 04正規性と安定性要件の確認
- 05組み込みテスト付きPythonスクリプト
活用シーン
- 01顧客仕様への適合性確認
- 02設備や期間ごとの能力比較
- 03量産前の工程準備状況の評価
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ asgard-ai-platform/ skills --skill algo-mfg-cpkインストール後、Claude Code で/algo-mfg-cpkを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
examples/sample_input.jsonreferences/capability-indices.mdnon-normal-capability.mdscripts/cpk.py詳細
Cpk プロセス能力指数
概要
Cpk は、ばらつき(分布の広がり)と中心化の両方を考慮し、プロセスが規格限界内にどの程度収まっているかを測定します。Cpk = min((USL - μ) / 3σ, (μ - LSL) / 3σ) です。通常、Cpk ≥ 1.33 が求められ、重要特性では Cpk ≥ 1.67 が求められます。Cp とは異なり、Cpk は中心からずれたプロセスを低く評価します。
使用する場合
適用条件:
- 製造プロセスが顧客の仕様を満たせるか評価する場合
- プロセス、機械、または期間ごとの能力を比較する場合
- 生産準備完了に向けてプロセスを認定する場合
使用しない場合:
- プロセスが統計的管理状態にない場合(まず SPC で安定化します)
- 変換を行わずに非正規分布を扱う場合
アルゴリズム
IRON LAW: Cpk Is Only Valid for a STABLE, IN-CONTROL Process
Computing Cpk on an unstable process gives a meaningless number.
The process MUST be in statistical control (per SPC charts) before
capability analysis. An unstable process with Cpk=2.0 today may
produce defects tomorrow when it shifts.
フェーズ 1:入力の検証
安定したプロセスから 100 件以上の測定値を収集します。USL、LSL(顧客仕様)を特定します。プロセスが管理状態にあることを確認します(SPC 管理図で安定性を確認)。 ゲート: プロセスが管理状態にあり、仕様が定義され、データポイントが 100 件以上あること。
フェーズ 2:コアアルゴリズム
- プロセス平均を計算します:μ = Σxᵢ / n
- プロセス標準偏差を計算します:σ = R バー / d₂ または S バー / c₄ から推定(群内)—全体の標準偏差は使用しません
- Cp = (USL - LSL) / 6σ(中心化を無視した潜在能力)
- Cpk = min((USL - μ) / 3σ, (μ - LSL) / 3σ)(実際の能力)
- Cpk から不良の PPM を推定します(例:Cpk=1.33 → 約 63 PPM)
フェーズ 3:検証
Cp と Cpk の差を確認します(Cp >> Cpk は中心からのずれを示します)。分布がおおむね正規分布であることを確認します(ヒストグラム、正規性検定)。 ゲート: 能力を計算し、中心化を評価し、正規性を検証していること。
フェーズ 4:出力
不良率の推定値とともに能力指数を返します。
出力形式
{
"capability": {"cp": 1.8, "cpk": 1.45, "ppm_defective": 27},
"centering": {"mean": 50.2, "target": 50.0, "offset_pct": 0.4},
"specs": {"usl": 55, "lsl": 45, "target": 50},
"metadata": {"samples": 200, "sigma_method": "rbar_d2", "normality_p": 0.35}
}
例
入出力例
入力: USL=55、LSL=45、μ=50.2、σ=1.5 期待値: Cp = (55-45)/(6×1.5) = 1.11。Cpk = min((55-50.2)/4.5, (50.2-45)/4.5) = min(1.07, 1.16) = 1.07。目標の 1.33 を下回っています。
境界ケース
| 入力 | 期待値 | 理由 |
|---|---|---|
| μ が目標値と完全に一致 | Cp = Cpk | 完全に中心化されています |
| μ が規格外 | Cpk < 0 | プロセス平均が規格限界を超えています |
| 片側規格のみ | その側だけに Cpk を使用 | 例:表面仕上げには USL のみがある |
注意点
- σ の推定方法:群内の σ(R̄/d₂)を使用し、全体の σ は使用しません。全体の σ には群間変動が含まれるため、σ が過大になり、Cpk が過小評価されます。
- 非正規データ:Cpk は正規性を前提としています。歪んだデータ(表面仕上げ、同心度)には、Box-Cox 変換またはノンパラメトリックな能力指数を使用します。
- 短期と長期:Cp/Cpk は短期(群内変動)を表します。Pp/Ppk は全体の変動(長期)を使用します。顧客は Ppk を求めることがよくあります。
- サンプルサイズの信頼性:30 サンプルから算出した Cpk の信頼区間は広くなります。点推定値と併せて信頼区間を報告してください。
- Cpk ≠ 不良ゼロ:Cpk=2.0 でも理論上の不良率は約 0.002 PPM です。非常に重要な用途では、より高い Cpk またはプロセスの妥当性確認が必要です。
スクリプト
| スクリプト | 説明 | 使用方法 |
|---|---|---|
scripts/cpk.py | プロセスデータから Cp、Cpk、Cpm、および不良の PPM を計算します | python scripts/cpk.py --help |
python scripts/cpk.py --verify を実行すると、組み込みの健全性テストを実行できます。
参考資料
- Cp/Cpk/Pp/Ppk の比較については、
references/capability-indices.mdを参照してください - 非正規の能力分析については、
references/non-normal-capability.mdを参照してください