コルモゴロフ・スミルノフ検定

Rにてコルモゴロフ・スミルノフ検定 (Kolmogorov-Smirnov test) を行う。コルモゴロフ・スミルノフ検定は得られた2つのデータ間の確率分布の相違の検定、または、1データにおける確率分布の正規性を行う検定法である。旧ソビエト連邦の数学者Andrey Nikolaevich KolmogorovとNikolai Vasilyevich Smirnovによって開発された。スチューデントのt検定等をはじめとする多くの検定手法において標本分布 (データ) が正規分布に従うことが仮定されていることを考慮すると、得られたデータが正規分布に従うか否かは、その後の統計検定を行うにあたり非常に大きな意味を持つ。その観点からコルモゴロフ・スミルノフ検定は重要な検定法のひとつであるといえる。Rでは、デフォルトでインストールされているパッケージの関数 'ks.test' にて実行する。

以下のようなデータXが得られたとき、このデータが正規分布に従うとみなせるのか否かを検定する。帰無仮説 (H0) は標本分布が正規分布に従うことである。有意水準5%にて検定する。

データX58, 11, 66, 54, 20, 78, 51, 81, 29, 31, 40, 49, 14, 52

Rを起動させ、以下のコマンドにて、上のデータXを変数 'data' に格納する。

1|$data=c(58, 11, 66, 54, 20, 78, 51, 81, 29, 31, 40, 49, 14, 52)

コルモゴロフ・スミルノフ検定はコマンド 'ks.test' にて実行する。データの正規性の検定をするためには、以下のようにコマンドを打つ。2番目の引数に "pnorm" を指定することで、1標本における正規性の検定が実行される。

1|$ks.test(data,"pnorm",mean=mean(data),sd=sd(data))
        One-sample Kolmogorov-Smirnov test

data:  data 
D = 0.1379, p-value = 0.9196
alternative hypothesis: two-sided

以上の結果では、p値が '0.9196' となっており、有意水準が5%でも帰無仮説が保留され (p > α)、データXの分布は正規分布に従っているとみなすことができる。計算に用いたデータXには、タイの値、すなわちデータ中に同値は存在していないが、もし同値が存在している場合は警告が表示される。正確なp値を計算するには、パッケージ 'Matching' に含まれる 'ks.boot' を使う手が考えられるが、この関数ではp値を計算するためにブートストラップサンプリングを行っており、計算としての正確なp値は算出されるものの、本来のデータXにおける正確なp値が算出できているとはいえない。

オプションには以下のようなものがある。

OptionDescription
xデータの数値ベクトルを指定。
y2標本検定を行う場合はデータの数値ベクトルを指定。1標本検定を行う場合は、比較したい分布を指定する文字列。正規分布なら 'pnorm'、ポアソン分布なら 'ppois'、一様分布の場合 'punif' を指定する。
...yに分布を指定した場合、その文字列によって要求される確率分布のパラメーターを指定。yに 'pnorm' を指定した場合は、平均 'mean' および不偏標準偏差 'sd' を指定し、yに 'punif' を指定した場合には、'max' および 'min' を指定する。
alternative両側検定か片側検定の指定。'alternative="t"' のように指定する。両側検定は 't'、左側検定は 'l'、右側検定は 'g'を指定する。デフォルトは両側検定。
exact正確なp値を計算させるかどうかを 'T' または 'F' で指定。2標本における片側検定の場合や、それ以外でもデータ中にタイの値がある場合は適用されない。また、デフォルトでは 'NULL' が指定されている。'NULL' を指定すると、1標本検定においてはサンプルサイズが100未満かつタイの値がない場合、2標本検定においては各データのサンプルサイズの積が10000未満の場合において正確なp値が計算される。
このエントリーをはてなブックマークに追加

Site search

ページのトップへ戻る