Python で anderson-darling テストを実行する方法


Anderson-Darling 検定は、データが指定された分布にどの程度適合しているかを測定する適合度検定です。

このテストは、データが正規分布に従っているかどうかを判断するために最もよく使用されます。

このタイプの検定は、正規性を検定するのに役立ちます。これは、回帰ANOVAt 検定など、多くの統計検定で一般的に使用される仮定です。

例: Python での Anderson-Darling テスト

Python で Anderson-Darling テストを実行するには、scipy.stats ライブラリのanderson() 関数を使用できます。この関数は次の構文を使用します。

アンダーソン(x, dist=’norm’)

金:

  • x : サンプルデータのテーブル
  • dist : テストするディストリビューションのタイプ。デフォルトは「標準」ですが、「expon」または「logistics」を指定することもできます。

たとえば、50 個の正規分布確率変数のサンプルに対して Anderson-Darling 検定を実行する方法は次のとおりです。

 import numpy as np

#create data
np.random.seed(0)
data = np.random.normal(size=50)

#perform Anderson-Darling Test 
from scipy.stats import anderson
anderson(data)

AndersonResult( statistic =0.15006999533388665,
               critical_values =array([0.538, 0.613, 0.736, 0.858, 1.021]),
               significance_level =array([15. , 10. , 5. , 2.5, 1. ]))

検定統計量は0.150です。この値を各有意水準に対応する各臨界値と比較して、テスト結果が有意かどうかを確認できます。例えば:

  • α = 0.01 の臨界値は1.021です。検定統計量 (0.150) はこの臨界値より大きくないため、結果は有意水準 0.01 では有意ではありません。
  • α = 0.025 の臨界値は0.858です。検定統計量 (0.150) はこの臨界値より大きくないため、結果は有意水準 0.025 では有意ではありません。

等々。

検定結果はどの有意水準でも有意ではないことがわかります。これは、検定の帰無仮説を棄却しないことを意味します。したがって、サンプリングされたデータが正規分布ではないと主張する十分な証拠はありません。

np.rand.normal()関数を使用して 50 個の正規分布値のサンプルを生成したことを考えると、この結果は驚くべきことではありません。

代わりに、0 から 10 までの 50 個のランダムな整数のサンプルに対して Anderson-Darling テストを実行した場合を考えてみましょう。

 import numpy as np

#create data
np.random.seed(0)
data = np.random.randint(0, 10, size=50)

#perform Anderson-Darling Test 
from scipy.stats import anderson
anderson(data)

AndersonResult( statistic =1.1926463985076836,
               critical_values =array([0.538, 0.613, 0.736, 0.858, 1.021]),
               significance_level =array([15. , 10. , 5. , 2.5, 1. ]))

検定統計量は1.1926です。この値を各有意水準に対応する各臨界値と比較して、テスト結果が有意かどうかを確認できます。例えば:

  • α = 0.01 の臨界値は1.021です。検定統計量 (1.1926) がこの臨界値より大きいため、結果は 0.01 有意水準で有意です。
  • α = 0.025 の臨界値は0.858です。検定統計量 (1.1926) がこの臨界値より大きいため、結果は 0.025 有意水準で有意です。

等々。

検定結果は各有意水準で有意であることがわかります。これは、どの有意水準を使用することを選択しても、検定の帰無仮説が棄却されることを意味します。したがって、サンプリングされたデータが正規分布ではないことを示す十分な証拠が得られます。

np.rand.randint()関数を使用して、正規分布に従う可能性が低い 0 から 10 までの 50 個のランダムな整数のサンプルを生成したことを考えると、この結果も驚くべきことではありません。

その他の Python チュートリアルはここで見つけることができます

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です