Python でコルモゴロフ-スミルノフ テストを実行する方法


コルモゴロフ・スミルノフ検定は、サンプルが特定の分布に由来するかどうかを検定するために使用されます。

Python でコルモゴロフ-スミルノフ テストを実行するには、1 サンプル テストの場合はscipy.stats.kstest()を、2 サンプル テストの場合はscipy.stats.ks_2samp()を使用できます。

このチュートリアルでは、各機能の実際の使用方法の例を示します。

例 1: コルモゴロフ・スミルノフ試験サンプル

次のサンプル データがあるとします。

 from numpy.random import seed
from numpy.random import fish

#set seed (eg make this example reproducible)
seed(0)

#generate dataset of 100 values that follows a Poisson distribution with mean=5
data = fish(5, 100)

次のコードは、この 100 データ値のサンプルに対してコルモゴロフ-スミルノフ検定を実行して、それらが正規分布に由来するかどうかを判断する方法を示しています。

 from scipy.stats import kstest

#perform Kolmogorov-Smirnov test
kstest(data, ' norm ')

KstestResult(statistic=0.9072498680518208, pvalue=1.0908062873170218e-103)

結果から、検定統計量は0.9072で、対応する p 値は1.0908e-103であることがわかります。 p 値が 0.05 未満であるため、帰無仮説は棄却されます。標本データが正規分布からのものではないことを示す十分な証拠があります。

ポアソン分布に従うランダム値を生成するPoisson()関数を使用してサンプル データを生成したため、この結果も驚くべきことではありません。

例 2: 2 サンプルのコルモゴロフ・スミルノフ検定

次の 2 つのサンプル データ セットがあるとします。

 from numpy.random import seed
from numpy.random import randn
from numpy.random import lognormal

#set seed (eg make this example reproducible)
seed(0)

#generate two datasets
data1 = randn(100)
data2 = lognormal(3, 1, 100)

次のコードは、これら 2 つのサンプルに対してコルモゴロフ-スミルノフ テストを実行して、それらが同じ分布に由来するかどうかを判断する方法を示しています。

 from scipy.stats import ks_2samp

#perform Kolmogorov-Smirnov test
ks_2samp(data1, data2)

KstestResult(statistic=0.99, pvalue=4.417521386399011e-57)

結果から、検定統計量は0.99で、対応する p 値は4.4175e-57であることがわかります。 p 値が 0.05 未満であるため、帰無仮説は棄却されます。 2 つのサンプル データセットが同じ分布からのものではないことを示す十分な証拠があります。

標準正規分布を使用して最初のサンプルの値を生成し、対数正規分布を使用して 2 番目のサンプルの値を生成したため、この結果も驚くべきことではありません。

追加リソース

Python で Shapiro-Wilk テストを実行する方法
Python で Anderson-Darling テストを実行する方法

コメントを追加する

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