読者です 読者をやめる 読者になる 読者になる

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

やや古典的なひびきの統計手法ですが、分布の正規性や、2標本の代表値や分布の違いを検定するときに使います。2標本の場合は代表値(一般には平均値でしょうか)が同じなら分布の検定になるという関係だそうです。詳細はほかのウェブにもっと正確な文章が出ているので、ここではRでの検定手法だけメモしておきます。

1)1試料のとき、ここでは正規性の検定をする場合を書きます。

まず、データの読み込みです。「ksdata」という名前でこれから検定するデータを読み込ませます。Rを起動して直接入力する場合です。

>ksdata<-c(90,126,232.41,94.5,156,120.9,180.4,32.25,29.2,100.11,21,23.1,77,78.75,122.32,59.78,95.59,124.95,112.8,98.4,31.39,31.05,26.4,184,72.8,62.98,23.56,53.35,49.5,33.48,99.33,39.2,11.34,31.92,41.8)
このようにカンマ区切りで指定すればよいです。

続いて検定。

> ks.test(ksdata,"pnorm",mean=mean(ksdata),sd=sd(ksdata))


pnormが正規分布のときに使用するコードです。正規分布は平均と

標準偏差(sd)を指定すれば形が書けるので、それぞれksdataのものを使うのだと指定しています。結果は次の通り。p値が0.567なので、有意水準5%とすれば正規分布といってよいかと思います。


        One-sample Kolmogorov-Smirnov test
data:  ksdata
D = 0.1284, p-value = 0.567

 

2)2試料のとき

上記のksdataと比較するデータセットをもうひとつ読み込ませます。ks2dataと

しました。

>ks2data=c(94.4,117,230.4,91,166.32,139.12,206.48,56.76,29.6,96.75,19.2,23.18,104,82.5,115.2,65.52,100.33,113.9,132.8,96,29.4,49.92,26.8,149.73,74.52,61.36,23.4,39.22,49.02,49.02,33,102,33.44,34.04,34.79)

2試料を比較します。

> ks.test(ksdata,ks2data)

結果は次の通り。

 

 Two-sample Kolmogorov-Smirnov test

data:  ksdata and ks2data
D = 0.1143, p-value = 0.9763
alternative hypothesis: two-sided

 警告メッセージ:
In ks.test(ksdata, ks2data) :
   タイがあるため、正確な p 値を計算することができません

タイとは同一値のデータとのことです。なんだか不安を感じるメッセージがあるものの、とりあえずp=0.9763なので2つの分布に差はないとしてよいかと思います。それぞれの平均も下記のとおりです。実はクロテンの左右の精巣サイズのデータでした。片方が人間だと少し下がっているとかいいますが、たぶんサイズはそれほど違わないのではないでしょうか!

> mean(ksdata)
[1] 79.07314
> mean(ks2data)
[1] 82.00343