Rによるコルモゴロフ・スミルノフ検定
R にてコルモゴロフ・スミルノフ検定 (Kolmogorov-Smirnov test) を行う.コルモゴロフ・スミルノフ検定は得られた2つのデータ間の確率分布の相違の検定,または,1データにおける確率分布の正規性を行う検定法である.旧ソビエト連邦の数学者 Andrey Nikolaevich Kolmogorov と Nikolai Vasilyevich Smirnov によって開発された.多くのパラメトリックな検定手法において標本分布が正規分布に従うことが仮定されていることを考慮すると,得られたデータが正規分布に従うか否かは,その後の統計検定を行うにあたり非常に大きな意味を持つ.その観点からコルモゴロフ・スミルノフ検定は重要な検定法のひとつであるといえる.Rでは,デフォルトでインストールされているパッケージの関数 ks.test() にて実行する.
p値の計算
以下のようなデータXが得られたとき,このデータが正規分布に従うとみなせるか否かを検定する.帰無仮説 (H0) は標本分布が正規分布に従うことである.有意水準5%にて検定する.
データX | 58, 11, 66, 54, 20, 78, 51, 81, 29, 31, 40, 49, 14, 52 |
R を起動させ,以下のコマンドにて,上のデータXを変数 vx に格納する.
$ vx=c(58, 11, 66, 54, 20, 78, 51, 81, 29, 31, 40, 49, 14, 52)
コルモゴロフ・スミルノフ検定はコマンド ks.test() にて実行する.データの正規性の検定をするためには,以下のようにコマンドを打つ.2番目の引数に pnorm を指定することで,1標本における正規性の検定が実行される.
$ ks.test(x=vx,y="pnorm",mean=mean(vx),sd=sd(vx))
これを実行した結果は以下のようになる.
One-sample Kolmogorov-Smirnov test data: vx D = 0.13793, p-value = 0.9196 alternative hypothesis: two-sided
以上の結果では,p値が0.9196となっており,有意水準が5%でも帰無仮説が保留され (p > α),データXの分布は正規分布に従っているとみなすことができる.計算に用いたデータXには,タイの値,すなわちデータ中に同値は存在していないが,もし同値が存在している場合は警告が表示される.正確なp値を計算するには,パッケージ Matching に含まれる ks.boot() を使う手が考えられるが,この関数ではp値を計算するためにブートストラップサンプリングを行っており,計算としての正確なp値は算出されるものの,本来の意味でのデータXにおける正確なp値が算出できているとは言い難い.
p値の計算
オプションには以下のようなものがある.
オプション | 詳細 |
---|---|
x | データの数値ベクトルを指定. |
y | 2標本検定を行う場合はデータの数値ベクトルを指定.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値が計算される. |