- 統計的工程管理(SPC) をPythonで実装し、製品品質の 時間的変動と介入のタイミング を把握する方法を紹介
pandas、plotnine、scipy を活用して データ処理・可視化・統計計算 を実行
- 日本の鹿児島県の温泉データを例に、温度・pH・硫黄含有量 を品質管理指標として分析
- サブグループ統計、管理図(X-bar、S、移動範囲チャート) を通じて工程の安定性と外れ値を検出
- データに基づいて 工程状態を視覚的に診断し、改善判断を支援 する手順を提示
Pythonを用いた統計的工程管理の概要
- 統計的工程管理(SPC)は、製品品質の変動を測定し、介入のタイミングを判断 するための統計的アプローチ
- Pythonでは
plotnine で可視化、pandas でデータ操作、scipy で統計計算を実行
- 実習では 温泉水の品質管理事例 を通じてSPCの概念を適用
- 温泉の 温度、pH、硫黄含有量 を主要な品質指標として設定
パッケージおよびユーザー定義関数
- 必要なパッケージ:
pandas、plotnine、scipy
- ユーザー定義関数はGitHubリポジトリの
functions/ ディレクトリから取得
functions_distributions.py: 信頼性および分布関数
functions_process_control.py: 工程管理用関数
sys.path.append('functions') で関数ディレクトリをPythonパスに追加してから import
事例: 日本の温泉の品質管理
- 日本の温泉(onsen)は地域経済の中核となる観光資源で、温度・pH・硫黄含有量 が品質基準
- 温度基準: Extra Hot(>42°C)、Hot(41~34°C)、Warm(33~25°C)
- pH基準: Acidic(pH<3)~ Alkaline(pH>8.5)
- 硫黄基準: 1mg/kg以上で硫黄温泉に分類
- 鹿児島県の温泉データを15か月間、毎月20回サンプリングして品質変動を分析
データの読み込みと基礎統計
onsen.csv ファイルを読み込み、温度、pH、硫黄含有量 のデータを確認
describe() 関数で平均(mean)と標準偏差(sd)を計算
- 例の結果: 平均44.85°C、標準偏差1.99°C
- これらの統計値は、工程の中心と変動性を把握するための基本指標
工程概要の可視化
plotnine で 時間ごとの温度分布 を箱ひげ図(boxplot)と点分布で可視化
- ヒストグラムで全体の温度分布を表示し、工程の中心と変動幅 を確認
サブグループ統計の計算
- 各時点(time)をサブグループとしてまとめ、平均(xbar)、範囲(r)、標準偏差(sd) を計算
- 例: 最初のグループの平均44.635°C、範囲4.2°C
- σₛ(サブグループ内標準偏差) と 標準誤差(se) を計算して上限・下限(±3σ)を設定
- これにより 工程の時間的安定性 を評価
全工程の統計
- 全グループを統合して 総平均(xbbar)、平均範囲(rbar)、平均標準偏差(sdbar) を計算
- 例: xbbar 44.85、rbar 7.26、sdbar 1.94
- σₜ(全体標準偏差) と比較して工程内・工程間の変動性を把握
管理図(X-barおよびSチャート)
- X-barチャート: 各サブグループ平均を時間軸に表示
- 中心線: 全体平均、上限・下限: ±3σ
- 網掛け領域は管理限界範囲
- 管理限界線を外れたり非ランダムなパターンが現れたりした場合、工程異常の可能性 がある
学習チェック: pH工程の可視化
- 同じ
ggprocess() 関数を使って、pHデータの工程概要チャートを作成
移動範囲チャート(n=1)
- 個別測定値しかない場合は 移動範囲(Moving Range) を使用
- 平均移動範囲(mrbar)、上限(upper)、下限(lower=0)を計算
- 移動範囲チャートは 個別データに基づく工程変動の監視 に有用
結論
- Pythonを用いて 工程概要、サブグループ統計、移動範囲チャート を作成
- SPCツールにより 工程の安定性・異常の有無を視覚的に診断 可能
- こうした分析は データに基づく品質改善と意思決定 に活用できる
1件のコメント
Hacker Newsのコメント
昔のプロジェクトを思い出した
私たちはFANG企業で、数千件の複雑なディープラーニングベースの時系列異常検知器を、統計的な(ノンパラメトリック、セミパラメトリック)工程管理モデルへと成功裏に置き換えた
新しいモデルは学習パラメータ数が3〜4桁少なく、3〜4人のチームで数千のストリームを管理できるほど単純だった
ディープラーニングモデルはデバッグや解釈の不透明さのせいで運用がとても大変だった
小さなチームなら、今でも統計ベースのアプローチを強く勧める
ただし政治的な理由から、こうした選択がキャリア上よい判断にならないこともある。大きな賭けをした人たちは、自分に不利な証拠が出てくるのを嫌う
こういう理由で、私は最近のAI過熱ムードに懐疑的だ
多くの場合、従来の古典的手法のほうがはるかに安定して効率的なのに、企業がわざわざ複雑で不安定な方法を選ぶのが理解できない
会社は学会向けに見栄えのするMLモデルを誇っていたが、実際の運用担当者たちは精度と解釈可能性の不足に強い不満を持っていた
そこで運用担当者が実際に使っていた単純な数学的ルールをもとにコードを書き直し、はるかによい結果を得た
OCRにはよく合うが、分類タスクでは効果が薄い
よい照明と従来型コンピュータビジョン手法に注力したほうが、よりよい結果になることが多い
技術導入をめぐる政治的な問題にも共感する。だから私は、ディープラーニングと従来型ビジョンを組み合わせたハイブリッドアプローチを主に提案している
ほとんどのパラメータは不安定か、互いに相関しているように思える
私は以前、Lean Six Sigma Green Beltの資格を取り、Minitabで投資銀行のバックオフィス業務の統計的工程管理プロジェクトをやっていた
最近はもう誰もMinitabを覚えていないように思う。みんなPythonばかり使うからだ
今でも更新されていて、Pythonインターフェースもある → mtbpyパッケージ
オープンソースのツールはx-bar/S/Rまでは対応していても、多変量解析のような高度な機能が不足していた
SPC初心者向けに、数年前に実務ガイドを書いた
参考になるかもしれない → Statistical Process Control: A Practitioner’s Guide
臨床データのような小規模データセットでは、今でも古典統計学が中核だ
メタデータの収集と整合が難しく、希少疾患の研究では機械学習や回帰すら難しいことが多い
現実世界のデータは決してきれいではない
ほとんどの時間はデータ品質管理に費やされる
外れ値は測定誤差や工程変化が原因かもしれず、それを理解するには工程そのものへの直感が必要だ
だから素早い可視化と探索が可能な成熟したツールが重要になる
自前のコードでSPCのCpkチャートを作るのは非効率だ
SPCは本当にすばらしいツールだ
複雑な他のツールセットよりはるかに単純で、しかもしっかり機能する
誤字が多い
ページのデザインと雰囲気が本当に気に入った