Rでコロモゴロフ-スミルノフ検定
(Kolmogrov-Smirnov test)の実装する。
- 比較対象がべき分布fの場合
組み込み関数ks.testを使うと
#べき分布乱数の発生
h1c<-1.0/runif(10000)#べき分布の確率関数の定義
alpha<-1
xmin<-1f<-function(x){
1-xmin^alpha/(x)^(alpha)
}test<-ks.test(h1c,"f")
#表示
test
test$statistic
test$p-value#参考
names(test)
組み込み関数を使わないで真面目に書くと
#検定されるべき分布発生
h1c<-1.0/runif(10000)^(1/1.0)#べき分布の確率関数の定義
alpha<-1
xmin<-1
f<-function(x){
1-xmin^alpha/(x)^(alpha)
}#コロモゴロフ-スミルノフ検定
# 統計量の確率関数の定義pD<-function(x){
i<-1:100000
2*sum(((-1)^(i-1))*exp(-2*i*i*x*x))
}
D<-max(abs(f(sort(h1c))-1:length(h1c)/length(h1c)))
#統計量Dとp値の出力
D
pD(D*sqrt(length(h1c)))#組み込みとの比較
ks.test(h1c,"f")
p-valueが自作とks.test
で多少ずれる(自作のが微妙に
大きい。)。
理由は、おそらく
ks.testが適当な桁以下を切り捨てて
いるためと思われる。