ฉันต้องการทดสอบสมมติฐานว่ามีตัวอย่างสองตัวอย่างมาจากประชากรเดียวกันโดยไม่มีการตั้งสมมติฐานใด ๆ เกี่ยวกับการกระจายตัวของกลุ่มตัวอย่างหรือประชากร ฉันจะทำสิ่งนี้ได้อย่างไร
จากวิกิพีเดียความประทับใจของฉันคือการทดสอบ Mann Whitney U ควรเหมาะสม แต่ดูเหมือนจะไม่เหมาะสำหรับฉันในทางปฏิบัติ
สำหรับ concreteness ฉันได้สร้างชุดข้อมูลที่มีสองตัวอย่าง (a, b) ที่มีขนาดใหญ่ (n = 10,000) และดึงมาจากประชากรสองกลุ่มที่ไม่ปกติ (bimodal) มีความคล้ายคลึงกัน (ค่าเฉลี่ยเดียวกัน) แตกต่างกัน (ค่าเบี่ยงเบนมาตรฐาน รอบ "humps.") ฉันกำลังมองหาการทดสอบที่จะรับรู้ว่าตัวอย่างเหล่านี้ไม่ได้มาจากประชากรเดียวกัน
มุมมองฮิสโตแกรม:
รหัส 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)
นี่คือการทดสอบ Mann Whitney อย่างน่าประหลาดใจ (?) ล้มเหลวในการปฏิเสธสมมติฐานว่าง ๆ ว่ากลุ่มตัวอย่างมาจากประชากรเดียวกัน:
> 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
ช่วยด้วย! ฉันจะอัปเดตรหัสเพื่อตรวจหาการแจกแจงต่าง ๆ (โดยเฉพาะอย่างยิ่งฉันต้องการวิธีการที่ใช้การสุ่มแบบทั่วไป / การสุ่มใหม่หากมี)
แก้ไข:
ขอบคุณทุกคนสำหรับคำตอบ! ฉันตื่นเต้นที่ได้เรียนรู้เพิ่มเติมเกี่ยวกับ Kolmogorov – Smirnov ซึ่งดูเหมือนจะเหมาะสมมากสำหรับวัตถุประสงค์ของฉัน
ฉันเข้าใจว่าการทดสอบ KS กำลังเปรียบเทียบ ECDFs ของสองตัวอย่างนี้:
ที่นี่ฉันสามารถมองเห็นสามคุณสมบัติที่น่าสนใจ (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 สามารถตรวจสอบแต่ละคุณสมบัติได้