Rのコルモゴロフ-スミルノフ検定について


17

コルモゴロフ-スミルノフのテスト関数の出力を理解しようとしています(2つのサンプル、両面)。これは簡単なテストです。

x <- c(1,2,2,3,3,3,3,4,5,6)
y <- c(2,3,4,5,5,6,6,6,6,7)
z <- c(12,13,14,15,15,16,16,16,16,17)

ks.test(x,y)

#   Two-sample Kolmogorov-Smirnov test
#
#data:  x and y
#D = 0.5, p-value = 0.1641
#alternative hypothesis: two-sided
#
#Warning message:
#In ks.test(x, y) : cannot compute exact p-value with ties

ks.test(x,z)

#Two-sample Kolmogorov-Smirnov test

#data:  x and z
#D = 1, p-value = 9.08e-05
#alternative hypothesis: two-sided
#
#Warning message:
#In ks.test(x, z) : cannot compute exact p-value with ties


ks.test(x,x)

#Two-sample Kolmogorov-Smirnov test

#data:  x and x
#D = 0, p-value = 1
#alternative hypothesis: two-sided
#
#Warning message:
#In ks.test(x, x) : cannot compute exact p-value with ties

ここで理解できないことがいくつかあります。

  1. ヘルプから、p値は仮説を指しているようvar1=var2です。ただし、ここでは、テストで(p<0.05)と表示されます:

    a。それは言えませんX = Y

    b。それを言うことができますX = Z

    c。言えないX = X(!)

xがそれ自体とは異なる(!)ように見えることに加えx=zて、2つの分布のサポートが重複していないため、私にとっても非常に奇妙です。そんなことがあるものか?

  1. テストの定義によれば、D2つの確率分布間の最大差であるべきであるが、場合に、例えば、(x,y)それがなければならないD = Max|P(x)-P(y)| = 4(場合P(x)P(y)または正規化されていない)D=0.3 (これらは正規化されている場合)。なぜDはそれと違うのですか?

  2. 私が使用しているデータには多くの同一の値があるため、意図的に多くの関係を持つ例を作成しました。なぜこれがテストを混乱させるのですか?繰り返し値の影響を受けない確率分布を計算すると思った。何か案が?

回答:


21

KSテストは、連続した分布から2つの独立したサンプルの「同一性」をテストすることを前提としています(ヘルプページに記載されているとおり)。その場合、結び付きの可能性は驚くほど小さいはずです(これも述べられています)。検定統計量は、2つのサンプルのECDF間の最大距離です。p値は、2つのサンプルが同じ分布から抽出された場合に観測される統計値よりも高いまたは高い検定統計量を見る確率です。(「var1 = var2である確率」ではありません。さらに、1-p_valueもその確率ではありません。)p値が高いと、次のことができないと言えます。差に対する統計的サポートを要求しますが、低いp値は同一性の証拠ではありません。サンプル値が小さい場合(例で示しているように)、または重畳された振動障害などの興味深いが小さな差がある場合、p値が低くなる可能性があります。多数の結び付きがある状況で作業している場合は、データの状況により近いテストを使用する必要があるかもしれません。

関係が仮定の違反である理由についての私の説明は、関係が結果を無効にするという主張ではありませんでした。実際のKSテストの統計的特性は、その仮定の失敗に対して比較的耐性があるか、堅牢です。私が見るKSテストの主な問題は、それが過度に一般的であり、その結果、興味深い性質の意味のある違いを特定する能力が不足していることです。KS検定は非常に一般的な検定であり、より具体的な仮説に対してかなり低い検出力を持ちます。

一方、KSテスト(または、「さらに強力な」アンダーソンダーリングまたはLillefors(sp?)テスト)を使用して、そのようなテストが完全に不当である場合(「適合前の回帰モデルで予測子として使用される変数の正規性。一つは、合法的に正常テストしたいかもしれない 残差をそのモデリング理論で想定されているものであるから。それでも、残差の正規性からのわずかな逸脱は、一般に結果の妥当性に挑戦しません。統計的有意性に関する結論に対する「非正規性」の重要な影響を確認するには、堅牢な方法を使用する方がよいでしょう。

おそらく、あなたは地元の統計学者に相談すべきでしょうか?統計的な質問をもう少し正確に定義するのに役立ち、そのため実際に違いがある場合は違いを特定する可能性が高くなります。それは「タイプIIエラー」の回避です。そのような違いが存在する場合、違いの結論を裏付けることができません。



dgof::ks.test(x,y,simulate.p.value=TRUE, B=1000)Matching::ks.boot(x,y, nboots=1000)sekhon.berkeley.edu/matching/ks.boot.html)の両方で同じ例をテストしました。Dと計算されたp値は両方とも、まったく同じです。これにより、たとえいくつかの関係があり、メソッドが機能することが保証されていない場合でも、おそらくKSはそれほど悪くないと思うようになりますか?私がKSが好きな理由は、それがパラメトリックではない、つまり、サンプルの分布を仮定する必要がないからです。
-Nonancourt

しかし、私はまだD.私の価値観が、それはとしてはsqrt(M * N /(M + N))として前因子かもしれないと思ったことはできませんここでは、それはなるだろうD(x,y) = sqrt(100/20)*0.3=0.67、まだ異なっています、。
-Nonancourt

3

ks.testコードから)Dを計算するには:

ks.test(x,y)

    Two-sample Kolmogorov-Smirnov test

data:  x and y
D = 0.5, p-value = 0.1641
alternative hypothesis: two-sided

alternative <- "two.sided"
x <- x[!is.na(x)]
n <- length(x)
  y <- y[!is.na(y)]
  n.x <- as.double(n)
  n.y <- length(y)
  w <- c(x, y)
  z <- cumsum(ifelse(order(w) <= n.x, 1/n.x, -1/n.y))
  z <- z[c(which(diff(sort(w)) != 0), n.x + n.y)] #exclude ties
  STATISTIC <- switch(alternative, two.sided = max(abs(z)), 
                      greater = max(z), less = -min(z))
  STATISTIC

[1] 0.5
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.