Örneklerin veya popülasyonun dağılımları hakkında herhangi bir varsayımda bulunmadan iki popülasyonun aynı popülasyondan alındığı hipotezini test etmek istiyorum. Bunu nasıl yapmalıyım?
Wikipedia'dan izlenimim, Mann Whitney U testinin uygun olması gerektiğidir, ancak pratikte benim için işe yaramıyor gibi görünüyor.
Somutluk için, büyük (n = 10000) ve normal olmayan (bimodal), benzer (aynı ortalama), ancak farklı (standart sapma) iki popülasyondan alınan iki örnek (a, b) içeren bir veri kümesi oluşturdum. Bu örneklerin aynı popülasyondan olmadığını tanıyacak bir test arıyorum.
Histogram görünümü:
R kodu:
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)
Mann Whitney testi şaşırtıcı bir şekilde (?) Numunelerin aynı popülasyondan geldiğine dair sıfır hipotezini reddetmekte başarısız oluyor:
> 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
Yardım! Farklı dağıtımları algılamak için kodu nasıl güncellemeliyim? (Özellikle varsa genel rastgele / yeniden örnekleme dayalı bir yöntem istiyorum.)
DÜZENLE:
Cevaplar için herkese teşekkürler! Heyecanla, amaçlarım için çok uygun görünen Kolmogorov-Smirnov hakkında daha fazla şey öğreniyorum.
KS testinin iki örneğin bu ECDF'lerini karşılaştırdığını anlıyorum:
Burada görsel olarak üç ilginç özellik görebiliyorum. (1) Örnekler farklı dağılımlardan alınmıştır. (2) A, belirli noktalarda açıkça B'nin üzerindedir. (3) A diğer bazı noktalarda açıkça B'nin altındadır.
KS testi, bu özelliklerin her birini hipotez olarak kontrol edebiliyor gibi görünüyor:
> 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
Gerçekten temiz! Bu özelliklerin her birine pratik bir ilgim var ve bu yüzden KS testinin her birini kontrol edebilmesi harika.