サンプルまたは母集団の分布についての仮定を一切行うことなく、同じ母集団から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を比較していることを理解しています。
ここでは、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テストで各機能をチェックできることは素晴らしいことです。