統計の話をしようじゃないか - ソフトウェア品質のための統計入門(No.9 正規分布とその周辺:3σルールの意味と限界)
Back to Top
はじめに
#品質管理における統計の代表的なキーワードに「±3σ(スリーシグマ)」があります。
これは 「正規分布」を前提 として、データのばらつきをどこまで許容するかを示すルールであり、異常検知や工程管理の現場で頻繁に登場します。
しかし「正規分布であれば...」という前提がそもそも怪しい場合も少なくありません。
「統計の話をしようじゃないか」第9回では、3σルールの意味とその限界、正規分布に近似できない現場データへの対応について解説していきます。
1. 正規分布と3σルールの基本
#● 正規分布とは?
#正規分布は次のような特徴を持つ連続分布です:
- 平均 μ を中心に左右対称
- 標準偏差 σ によってばらつきの程度が決まる
- 曲線の形は「釣鐘型」
正規分布の確率密度関数は次の式で表されます:
式を見ても、パッとイメージがつきにくいと思いますので、2章で紹介するグラフの形状を確認していただければ大丈夫です。
● 標準正規分布とZスコア
正規分布の中でも、平均 、標準偏差 に標準化されたものを「標準正規分布」と呼びます。
この分布は以下の式で表され、記号として を用います:
標準正規分布を使うと、どんな正規分布でも 「平均0、標準偏差1」の共通スケールで比較可能になります。
このとき使われる変換値を Zスコア(Z値) と呼び、次の式で求めます:
Zスコアは、「ある値Xが平均からどれだけ離れているか(標準偏差何個分か)」を表し、
異常値判定や信頼区間推定、t検定など多くの統計手法の基盤になります。
Zスコアの活用は、後の『信頼区間と誤差』の回で詳しく扱います。
● 3σルールとは?
#範囲 | 含まれる割合(理論値) |
---|---|
±1σ | 約68.3% |
±2σ | 約95.4% |
±3σ | 約99.7% |
つまり「±3σの外に出る」データは、非常に稀な出来事とみなされます。
これが「異常値」や「逸脱」として扱われる根拠となります。
● シックスシグマ():
製造業やサービス業などで用いられる品質管理手法に シックスシグマ(Six Sigma) と呼ばれる手法があります。
シックスシグマは 工程のばらつきを抑え、不良を限りなくゼロに近づけることを目的としています。
正規分布に基づく3σルールでは、±3σの範囲に99.7%のデータが含まれますが、シックスシグマでは ±6σに99.99966% のデータが含まれることを前提にし、実に 100万回あたり3.4回という極めて低い欠陥率 を目指します。
ソフトウェア分野でも以下のような場面で応用できます:
- バグ発生率やレビュー所要時間などのばらつきを管理する
- 回帰分析を活用して将来的な不具合数を予測
- 工程能力指標(Cp, Cpk)でプロセスの安定性を定量評価
(※Cp, Cpk については後述します)
「ばらつきを知り、原因を突き止め、改善に活かす」──
この考え方は、まさに統計的品質管理そのものです。
2. Pythonで可視化してみよう
#このコードは、「正規分布と3σルールの関係」を視覚的に理解するためのグラフを描画するものです。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
plt.rcParams['font.family'] = 'Meiryo'
mu = 0
sigma = 1
x = np.linspace(mu - 4*sigma, mu + 4*sigma, 500)
y = norm.pdf(x, mu, sigma)
plt.plot(x, y, label='正規分布', color='steelblue')
plt.axvline(mu, color='black', linestyle='--', label='平均')
for i in range(1, 4):
plt.axvline(mu + i*sigma, color='gray', linestyle=':')
plt.axvline(mu - i*sigma, color='gray', linestyle=':')
plt.fill_between(x, y, where=(x > mu - 3*sigma) & (x < mu + 3*sigma), color='lightblue', alpha=0.5, label='±3σ範囲')
plt.title("正規分布と±3σルール")
plt.xlabel("値")
plt.ylabel("確率密度")
plt.legend()
plt.tight_layout()
plt.show()
「正規分布では ±1σ, ±2σ, ±3σ にどれだけのデータが含まれるのか?」がグラフで確認できます。
特に「±3σ にほとんどのデータ(99.7%)が収まる」という 3σルール を視覚的に理解できます。
つまり:
- 工程管理や品質管理で「異常」や「外れ値」を見つける基準になります。
- ±3σを超えるデータは「通常のばらつきを超えた異常」として扱われることが多いです。
3. 実務応用:品質規格と工程能力
#前章では、正規分布が「ばらつきのあるデータの広がりや位置」を捉えるために非常に有効なモデルであることを紹介しました。
この考え方は、実務の現場において 「製品やプロセスがどれだけ安定していて、許容範囲内に収まっているか」 を判断するためにも活用されます。
たとえば、製品の仕上がり寸法や処理時間などが 正規分布に従っている という前提をもとに、その分布の幅(ばらつき)と、許容される規格範囲(上下限) を比較することで、品質の安定性を評価することができます。
ここで登場するのが「Cp」「Cpk」といった 工程能力指数(※1) です。
これらは 正規分布の標準偏差() を基準にして、工程のばらつきや平均の位置がどれだけ規格に適合しているかを数値化したものです。
- 「ばらつきを理解する」→「許容範囲との比較に応用する」
このような流れで、統計理論が品質評価や工程管理に直結しているのです。
※1:Cp, Cpkとは?
工程能力を表す代表的な指標に、CpおよびCpkがあります。
製造業や品質保証の分野では広く使われていますが、ソフトウェア開発プロセスの安定性や一貫性を評価する際にも応用可能です。
● Cpの定義:
- USL:上限規格値(Upper Specification Limit)
- LSL:下限規格値(Lower Specification Limit)
- :工程の標準偏差(ばらつきの指標)
→ 工程のばらつきが、規格の幅(許容範囲)にどれだけ収まっているかを表します。
→ 平均値の位置には関係なく、「幅の比率」だけを見る指標です。
● Cpkの定義:
→ Cpに加えて、平均値が中心からズレていないか(片寄りがあるか)を加味した指標です。
→ 平均値が中央にあれば、Cp ≒ Cpk。ずれているとCpk < Cpになります。
● CpとCpkの違いを可視化してみよう
#製造やソフトウェア品質の分野で用いられる工程能力指標 Cp と Cpk は、プロセスのばらつきと、規格に対する安定性を評価するための重要な指標です。
以下のコードは、平均値が規格の中央にある場合(Cp = Cpk)と、平均値がずれている場合(Cp > Cpk)の違いを視覚化したものです。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
plt.rcParams['font.family'] = 'Meiryo' # 日本語対応(ローカル実行で有効)
# パラメータ設定
sigma = 5
mu_cp = 50 # Cp = Cpk のとき(平均が中央)
mu_cpk = 55 # Cp > Cpk のとき(平均がずれている)
LSL = 30
USL = 70
x = np.linspace(20, 80, 500)
y_cp = norm.pdf(x, mu_cp, sigma)
y_cpk = norm.pdf(x, mu_cpk, sigma)
plt.figure(figsize=(10, 5))
plt.plot(x, y_cp, label='平均=50(Cp=Cpk)', color='steelblue')
plt.plot(x, y_cpk, label='平均=55(Cp>Cpk)', color='orange')
plt.axvline(LSL, color='red', linestyle='--', label='LSL(下限)')
plt.axvline(USL, color='red', linestyle='--', label='USL(上限)')
plt.axvline((LSL + USL)/2, color='black', linestyle='--', label='中心値')
plt.title("CpとCpkの違いを示す正規分布の比較")
plt.xlabel("値")
plt.ylabel("確率密度")
plt.legend()
plt.tight_layout()
plt.show()
解説
- 青線は平均が規格の中央にあり、Cp = Cpk のケース。
- オレンジ線は平均が規格からずれており、Cp > Cpk のケース。
- 同じばらつき(標準偏差)でも、中心からのズレがあるとCpkは小さくなります。
- つまり、ばらつきが小さくてもプロセスが規格の中央に位置していなければ工程能力は低いと判断されるのです。
● 実務での目安と活用
#- 多くの業界や企業で「Cp ≥ 1.33」が品質基準とされることが多い
→ これは、±4σが規格内に収まる程度の安定性を意味します - ソフトウェア開発でも、テスト時間・レビュー所要時間・リードタイムなどの「ばらつき評価」に応用可能
- Cpkが低い場合は、工程そのものが偏っている可能性があり、平均値の見直しやプロセス改善が求められます
たとえば、次のような場面で Cp・Cpk を適用できます:
■ 例1:テスト実行時間の安定性評価
ある機能の自動テストの実行時間を記録したところ、実行時間は 平均30秒、標準偏差は2秒、仕様上の許容範囲は ±10秒(20〜40秒) とされています。
この場合、
→ ばらつきは非常に小さく、品質は安定している
→ 平均も規格の中央にあり、プロセスに偏りがない
→ 非常に安定した優良プロセス と評価できます。
CpもCpkも 1.67 ≥ 1.33 を満たしており、多くの業界の品質基準もクリアしています。
このようなプロセスは、「統計的に安定しており、改善の必要性が低い」と判断されることが多いです。
■ 例2:レビュー所要時間に偏りがある場合
レビューの平均所要時間は30分ですが、ばらつきが大きく、しかも中央値は26分、標準偏差は6分です。仕様の許容範囲が20〜40分だとすると:
→ ばらつきが大きく、レビュー時間に安定性がないことが分かります。レビュー基準の見直しやトレーニングが必要かもしれません。
● CpとCpkのまとめ
#指標 | 見ている内容 | 中心からのズレ考慮 | 意味合い |
---|---|---|---|
Cp | 工程のばらつきと規格幅の比 | 含まない | 「能力はあるがズレている」可能性がある |
Cpk | Cpに加えて平均のズレも考慮 | 含む | 実際に使える“実力”を示す指標 |
工程の「ばらつきの管理」は、品質の安定性に直結します。
CpやCpkは、統計的品質管理の要となる指標です。
4. 限界と注意点
#-
すべてのデータが正規分布に従うわけではない
- 例:テスト時間、障害対応時間、レビュー指摘数などは右に歪む(右裾が長い)
- これは「偏り(歪度)」や「尖度」が高い非対称分布である可能性がある
(「歪度」「尖度」については こちら を参照ください)
-
正規分布でない分布に対して3σルールを無理に適用すると…
- 異常値の見逃しや
- 誤検知(false positive)
が発生しやすくなります
-
検定や分布の可視化を怠ると、統計的判断を誤るリスクがある
- ヒストグラムや箱ひげ図で分布形状を確認する
- 歪度や尖度を数値で確認する
- シャピロ・ウィルク検定などの正規性検定(※2) を使うことも有効
※2:正規性検定
正規性の検定については、後の「仮説検定」の回で扱います。
ここでは「データが正規分布に従っているかどうかをチェックする検定」と理解しておいていただければ十分です。
前提(分布)を検証してから使うことが重要です。
特に工程能力指数や3σルールのような手法は、正規分布であることを前提としているため、
データにその前提が当てはまるかを確認するプロセスが欠かせません。
まとめ
#- 正規分布と3σルールは、工程のばらつきを可視化し、異常検知の基本指標として広く使われる
- CpやCpkによって工程がどれだけ安定しているかを数値で把握できる
- ただし、データが正規分布に従っていない場合は注意が必要
次回予告
#次回は「母集団と標本:サンプリングの基本」です。
限られたサンプルから母集団をどう推定するのか、統計的推測の出発点を解説していきます。
データ分析にご活用いただければ幸いです。