【Excelで簡単!】KS検定で出荷数が正規分布に従うかどうかを検定する
コルモゴロフ スミルノフ検定とは?
安全在庫理論は出荷数が正規分布に従うことを前提にしているため、これを確認することは重要です。
そのための一つの方法としてカイ二乗検定がありました。
今回取り上げるKS検定(コルモゴロフ スミルノフ検定)はもっと簡単です。
カイ二乗検定では、まずは出荷数のデータを階級別に集計する必要がありました。
しかしKS検定ではその必要がありません。
まずはExcelでどのように計算するのかを見てみましょう。
KS検定をExcelで簡単にする方法
検定するデータ
今回は2種類の出荷数データを用意しました。
1つは出荷数が多いA商品、もう1つはあまり多くないB商品です。
【A商品の出荷データ】
【B商品の出荷データ】
それぞれのデータが正規分布に従うかどうかをKS検定します。
A商品をKS検定
Excelでの計算手順は次の通りです。
出荷数データは観測されたデータですので、観測データと呼ぶことにします。
帰無仮説:観測データは正規分布に従う
対立仮説:少なくとも1つの観測データは正規分布に従わない
ステップ1)観測データを昇順に並び変える
ステップ2)通し番号のIDを入力する
ステップ3)それぞれのIDをデータ数で割り、経験分布の累積分布関数とする
ここで経験分布という見慣れない言葉が出てきました。
これについては後に出てきます。
ステップ4)観測データから正規分布の累積分布関数を計算する
ステップ5)正規分布と経験分布が一番乖離している点の差を求める
ステップ6)KS分布表で5%水準での限界値を求める
ステップ7)5の値が6の値より小さければ、帰無仮説を受け入れる
0.085は0.143よりも小さいので、帰無仮説を棄却できません。
従って、A商品の出荷数の分布は正規分布に従うといえます。
(正確にいうと、正規分布に従うと積極的にいうことはできませんが、実務上は問題ないと思います。これについては後ほども触れます)
B商品をKS検定
B商品についても同様にKS検定することができます。
KS分布表で見る5%水準の限界値は0.143で同じですので、最大誤差の方が大きくなります。
この場合は、帰無仮説が棄却されます。
つまり、B商品の出荷数データは正規分布に従うとはいえません。
KS検定は何をやっているのか?
先ほど計算した経験分布とは何でしょうか?
元々はEmpirical distributionの日本語訳です。
1から91まで通し番号を振って、それぞれを91で割っただけでしたね。
実はこの通し番号は、91個ある各データについてその値以下のデータ数を表しています。
経験分布はこれを全体のデータ数である91で割った値です。
元のデータを横軸に、経験分布を縦軸にしてグラフに描くと次のようになります。
たったこれだけのことですが、データの分布が直感的にわかります。
ちなみに元のデータを横軸に、正規分布を縦軸にすると次のようになります。
そして、両者をまとめて描くと次のようになります。
KS検定では、この2つのグラフで垂直方向に一番離れた点を調べています。
上のグラフでは横軸を元データとしていましたが、これをID(通し番号)としても結果は同じです。
その方が、経験分布が直線になるので正規分布との差が直感的にわかりやすくなります。
つまりこういうことです。
KS検定とは、この距離が誤差範囲といえるかどうかをKS分布表を使って調べているといえます。
カイ二乗検定との違い
同じように、観測値が確率分布にどのくらい適合しているかを調べる方法にカイ二乗検定がありますが、こちらは各観測値における差の二乗和で検定しています。
つまり、すべての差を使っています。
これに対してKS検定は一番大きい絶対値差だけを使って検定しています。
通常、絶対値は数値計算しにくいため最小二乗法が用いられますが、Excelではabs関数で簡単に絶対値を計算できますので、KS検定もExcelで簡単に計算できます。
KS検定の誤用について
データ分析をする時に、観測値が正規分布に従うと仮定すれば分析が容易になります。
そのため、観測値が正規分布に従うことを正当化するための手段としてKS検定がよく用いられます。
しかし、KS検定に限らずすべての検定にいえることですが、帰無仮説(観測値が正規分布に従う)が棄却されなかったからといって正規分布に従うとはいい切れません。
(逆に帰無仮説が棄却されれば、正規分布に従わないということはいい切れます)
しかし厳密には正規分布に従うと100%いい切れなくても、有力な証拠であることは間違いありません。
学術論文を書いている人や、生命に関わるようなクリティカルな研究をしている人ならそれくらいの厳密性を求められるのでしょうが、サプライチェーンの中の在庫量を決めるとか、貨物量を予測して作業員数を決める等といった業務に使うのであれば、そんな細かいことにこだわるのは時間の無駄です。
KS検定で正規分布であるという帰無仮説が棄却できないのであれば、正規分布であると仮定して次の業務に進みましょう。
PythonでKS分析する方法
KS検定はPythonでやると驚くほど簡単です。
Excelでやるのは原理を理解するためと割り切り、実務ではPythonを使うのがおすすめです。
【PythonのkstestでKS検定】出荷数が少なくても正規分布になることを検証する