2つのサンプルが同じ分布から抽出された場合のノンパラメトリック検定


19

サンプルまたは母集団の分布についての仮定を一切行うことなく、同じ母集団から2つのサンプルが抽出されるという仮説をテストしたいと思います。どうすればいいですか?

ウィキペディアからの私の印象は、Mann Whitney Uテストが適切であるべきだということですが、実際には私にはうまくいかないようです。

具体的には、2つのサンプル(a、b)が大きく(n = 10000)、非正常(バイモーダル)の2つの母集団から抽出されたデータセットを作成しました。私はこれらのサンプルが同じ母集団からのものではないことを認識するテストを探しています。

ヒストグラムビュー:

二峰性サンプル

Rコード:

a <- tibble(group = "a",
            n = c(rnorm(1e4, mean=50, sd=10),
                  rnorm(1e4, mean=100, sd=10)))
b <- tibble(group = "b",
            n = c(rnorm(1e4, mean=50, sd=3),
                  rnorm(1e4, mean=100, sd=3)))
ggplot(rbind(a,b), aes(x=n, fill=group)) +
  geom_histogram(position='dodge', bins=100)

サンプルが同じ母集団からのものであるという帰無仮説を却下しなかったマン・ホイットニー検定は驚くほど(?)です。

> wilcox.test(n ~ group, rbind(a,b))

        Wilcoxon rank sum test with continuity correction

data:  n by group
W = 199990000, p-value = 0.9932
alternative hypothesis: true location shift is not equal to 0

助けて!異なるディストリビューションを検出するには、どのようにコードを更新する必要がありますか?(可能であれば、一般的なランダム化/リサンプリングに基づく方法が特に必要です。)

編集:

回答ありがとうございます!私は自分の目的に非常に適していると思われるコルモゴロフ–スミルノフについてもっと知りたいと思っています。

KSテストは、2つのサンプルのこれらのECDFを比較していることを理解しています。

ECDF

ここでは、3つの興味深い機能を視覚的に確認できます。(1)サンプルは異なる分布からのものです。(2)Aは特定のポイントで明らかにBを上回っています。(3)Aは、特定の他のポイントで明らかにBを下回っています。

KSテストでは、これらの各機能を仮説チェックできるようです。

> ks.test(a$n, b$n)

        Two-sample Kolmogorov-Smirnov test

data:  a$n and b$n
D = 0.1364, p-value < 2.2e-16
alternative hypothesis: two-sided

> ks.test(a$n, b$n, alternative="greater")

        Two-sample Kolmogorov-Smirnov test

data:  a$n and b$n
D^+ = 0.1364, p-value < 2.2e-16
alternative hypothesis: the CDF of x lies above that of y

> ks.test(a$n, b$n, alternative="less")

        Two-sample Kolmogorov-Smirnov test

data:  a$n and b$n
D^- = 0.1322, p-value < 2.2e-16
alternative hypothesis: the CDF of x lies below that of y

それは本当にすてきです!私はこれらの各機能に実用的な関心を持っているため、KSテストで各機能をチェックできることは素晴らしいことです。


MWが拒否しないことは驚くことではありません。片側検定では、Pr(a> b)<0.05であるかどうかをテストします。ここで、aとbは母集団のランダムに選択されたメンバーです。
mdewey

1
Mann-Whitneyの仮説は、2つのグループの「場所」、または体系的な確率的差異の線に沿った何かに関係していると時々言われます。データの場合、両方のグループは75を中心に対称的に分布しているため、MWは間違いなく違いを見つけないはずです。
サルマンジャフィコ

4
これは、テストの仮説が明確でない場合にまき散らす混乱の良い例です。残念ながら、人々が使用することを教えられていますトン本当にこのテストは2と比較することを考えずに、2つのグループを比較する検定を手段を 2つの比較する中央値のテストがあります一方、中央値を何か他のものを比較し、マン・ホイットニー、他のパーセンタイルを比較する分位回帰、分散を比較するテスト、分布を比較するコルモゴロフ-スミルノフなどなど...どちらの仮説を実際にテストするのか明確にせずに、2つの「母集団」を比較したい場合があります。
サルマンジャフィコ

リフレクションでは、MWテストのWikipediaページに仮説が非常に明確に記載されているように思われ、この仮説もサンプルが同じ分布に由来することを意味すると考えるのは誤解(根拠のない飛躍)でした。実際、同じ中心点を中心に対称な2つの異なる分布を比較すると、問題が明らかになります。
ルークゴーリー

回答:


17

コルモゴロフ-スミルノフ検定はこれを行う最も一般的な方法ですが、他にもいくつかのオプションがあります。

テストは、経験累積分布関数に基づいています。基本的な手順は次のとおりです。

  • ECDF間の距離を測定する方法を選択します。ECDFは関数であるため、明らかな候補はノルムであり、関数空間で距離を測定します。この距離は検定統計量です。Lp
  • サンプルが同じ分布に由来するという帰無仮説の下で、検定統計量の分布を計算します(幸運なことに、最も一般的な距離ですでにこれを行っています!)
  • 仮説にしきい値選択し、計算された検定統計量がポイント2からの分布のテールにある場合は、nullを拒否します。α αα

Kolmogorov-Smirnov検定の場合、検定統計量は2つの経験的CDF間の最大距離です(または、より技術的になりたい場合はノルム)。これは、Rで非常に簡単に実装できます。L

ks.test(a,b)

p

L2dgofcvm.test()

編集:

nm

これをサンプリングタイプの手順に変換するには、次のようにします。

  1. nmnm
  2. サンプルの距離メトリックを計算します。KSテストの場合、これは最大値です。経験的CDFの違い。
  3. 結果を保存し、手順1に戻ります。

最終的に、帰無仮説の下で検定統計量の分布から多くのサンプルを作成します。その分位数を使用して、必要な有意水準で仮説検定を実行できます。KS検定統計では、この分布はコルモゴロフ分布と呼ばれます。

KS検定の場合、分位点は理論的には非常に単純に特徴付けられるため、これは計算の労力の無駄にすぎませんが、手順は一般にあらゆる仮説検定に適用できることに注意してください。


ありがとうございました!Kolmogorov-Smirnov検定は、これらのサンプルが同じ母集団に由来するという帰無仮説を実際に拒否します。また、直感的には、ECDFを比較するのが理にかなっています。これは、ヒストグラムで視覚的に行っていることとほぼ同じです。質問:Rのようなツールを使用せずにこのテストをゼロから実装する必要があると仮定します。十分な簡単な方法はありますか?(おそらくブートストラップに基づいているのでしょうか?)私の背景はコンピュータープログラミングであり、シミュレーションベースの方法は非常に理解しやすいためです。
ルークゴーリー

ランダム化または順列を検討する必要があります。非通常のテストにはこれらを好みます。また、統計ではなくシミュレーションであるというur基準も満たしています
-RTbecard

2
@JamesAdamCampbellは別の答えでそれを少し拡張できますか?
ウィル

1
L

1
私はそれについて何の問題も見ていません。このようなものを試してみたら、結果を見てみたいと思います!CIアプローチとストレートKSテストで常に同じ答えが得られるかどうかを確認するのはクールでしょう。私は、彼らが疑われる:)
ウィル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.