Tracks
เคยรัน t-test ได้ค่า p แปลก ๆ แล้วมารู้ทีหลังว่าข้อมูลไม่ได้ใกล้เคียงการแจกแจงปกติเลยหรือไม่?
เรื่องแบบนี้เกิดขึ้นกับทุกคนสักครั้งหนึ่ง ปัญหาของ t-test คือสมมติว่าข้อมูลต้องแจกแจงแบบปกติ เมื่อไม่เป็นเช่นนั้น ผลลัพธ์อาจทำให้เข้าใจผิด ข้อมูลที่เบ้และขนาดตัวอย่างเล็ก ล้วนละเมิดสมมติฐานความเป็นปกติ และข้อมูลจริงในโลกก็มักไม่เป็นไปตามตำรา
การทดสอบ Mann-Whitney U เข้ามาแก้ปัญหานี้ เป็นทางเลือกแบบนอนพาราเมตริกแทน t-test ที่เปรียบเทียบสองกลุ่มโดยอิงอันดับ (ranks) แทนค่าเฉลี่ย จึงไม่แคร์รูปร่างการแจกแจงของข้อมูล
ในบทความนี้ จะอธิบายว่าการทดสอบ Mann-Whitney U คืออะไร ควรใช้เมื่อใด หลักคณิตทำงานอย่างไร และวิธีรันกับการตีความผลทั้งใน Python และ R
แต่ t-test คืออะไรกันแน่? หากมีคำถามนี้ ลองอ่านบทนำสู่ Python T-Tests ของเรา ซึ่งจะตอบทุกข้อสงสัย
Mann-Whitney U Test คืออะไร?
Mann-Whitney U test เป็นการทดสอบทางสถิติแบบนอนพาราเมตริกที่ใช้เปรียบเทียบสองกลุ่มที่เป็นอิสระต่อกัน
ต่างจาก t-test ตรงที่ไม่สมมติว่าข้อมูลแจกแจงแบบปกติ มันเปรียบเทียบการแจกแจงของสองกลุ่มโดยแปลงค่าดิบเป็นอันดับแล้ววิเคราะห์ จึงเหมาะเมื่อข้อมูลเบ้ มีค่าแปลกปลอม (outliers) หรือไม่เป็นไปตามสมมติฐานความเป็นปกติในทางใดทางหนึ่ง
ยังเรียกอีกชื่อว่า Wilcoxon rank-sum test ซึ่งในทางปฏิบัติถือว่าเป็นคำพ้องความหมาย
เมื่อใดควรใช้ Mann-Whitney U Test
การทดสอบ Mann-Whitney U ต้องการเงื่อนไขเฉพาะ ควรใช้เฉพาะเมื่อทุกข้อต่อไปนี้เป็นจริง:
- สองกลุ่มเป็นอิสระจากกัน: ตัวอย่างไม่ซ้อนทับกัน และค่าของกลุ่มหนึ่งไม่ส่งอิทธิพลต่ออีกกลุ่ม
- ข้อมูลประเภทลำดับ (ordinal) หรือเชิงต่อเนื่อง: เช่น คะแนนสอบ เวลาในการตอบสนอง หรือค่าที่วัดได้ใด ๆ
- การแจกแจงไม่ปกติ: ข้อมูลเบ้ มีปลายหนัก หรือมีขนาดตัวอย่างเล็กจนยืนยันความเป็นปกติไม่ได้
- ขนาดตัวอย่างเล็ก: เมื่อมีข้อมูลไม่มากพอที่จะอาศัยทฤษฎีขีดจำกัดส่วนกลาง
มาดูตัวอย่างกัน
สมมติว่ามีสองชั้นเรียนที่ใช้วิธีสอนต่างกันและต้องการรู้ว่าชั้นใดได้ผลสอบดีกว่า พอพล็อตคะแนนแล้วพบว่าไม่แจกแจงปกติ — หนึ่งชั้นมีค่าแปลกปลอมไม่กี่ค่าดึงการแจกแจงไปด้านขวา t-test เปรียบเทียบค่าเฉลี่ยของกลุ่ม ดังนั้นค่าแปลกปลอมจะดึงค่าเฉลี่ยให้สูงขึ้นและทำให้ชั้นนั้นดูดีกว่าความเป็นจริง
ค่าเฉลี่ยที่เบ้ถูกนำไปใช้ในการคำนวณ t-test และค่า p ที่ได้จึงไม่สะท้อนความแตกต่างระหว่างกลุ่ม การทดสอบ Mann-Whitney U ไม่มีปัญหานี้เพราะทำงานกับอันดับแทนคะแนนดิบ ค่าแปลกปลอมเพียงค่าเดียวจะเป็นเพียงค่าที่มีอันดับสูงสุด จึงบิดเบือนผลไม่ได้เหมือนที่ทำกับค่าเฉลี่ย
ยังเหมาะมากเมื่อทำงานกับข้อมูลเชิงลำดับ เช่น คำตอบแบบสเกล 1-5 ค่าพวกนี้ไม่ใช่เชิงต่อเนื่องแท้ ๆ การคำนวณค่าเฉลี่ยจึงไม่ค่อยมีความหมาย
สูตร Mann-Whitney U Test
แบบทดสอบนี้ให้สถิติ U สองค่า หนึ่งค่าต่อกลุ่ม นี่คือสูตร:

สูตรการทดสอบ Mann-Whitney U
โดยที่:
-
n1และn2คือขนาดตัวอย่างของกลุ่มที่ 1 และกลุ่มที่ 2 -
R1และR2คือผลรวมอันดับของแต่ละกลุ่ม — ผลรวมของอันดับทั้งหมดที่กำหนดให้กับค่าของแต่ละกลุ่ม
วิธีคำนวณผลรวมอันดับคือรวมค่าทั้งหมดจากทั้งสองกลุ่ม เรียงจากน้อยไปมาก แล้วกำหนดอันดับให้แต่ละค่า ค่าที่น้อยสุดได้อันดับ 1 ถัดไปได้อันดับ 2 และต่อไปเรื่อย ๆ จากนั้นจึงแยกบวกอันดับของแต่ละกลุ่ม
สถิติทดสอบคือค่าน้อยกว่าระหว่าง U1 และ U2 แล้วจึงเปรียบเทียบกับค่าวิกฤตหรือใช้คำนวณค่า p
ข่าวดีก็คือไม่ต้องคำนวณเอง Python และ R ทำให้เรียบร้อย เดี๋ยวจะแสดงให้ดู
สมมติฐานของ Mann-Whitney U Test
การทดสอบ Mann-Whitney U ยืดหยุ่นกว่า t-test แต่ยังมี 3 สมมติฐานที่ต้องคำนึงถึง:
- ตัวอย่างอิสระจากกัน: สองกลุ่มไม่ส่งอิทธิพลซึ่งกันและกัน การสังเกตในกลุ่มหนึ่งไม่สัมพันธ์กับอีกกลุ่ม
- ข้อมูลแบบลำดับหรือเชิงต่อเนื่อง: ข้อมูลต้องมีลำดับธรรมชาติ — สามารถบอกได้ว่าค่าใดสูงหรือต่ำกว่าอีกค่า
- รูปร่างการแจกแจงใกล้เคียงกัน: หากต้องการตีความผลว่าเป็นการเปรียบเทียบมัธยฐาน ทั้งสองกลุ่มควรมีการแจกแจงที่รูปร่างใกล้เคียงกัน หากต่างกัน การทดสอบยังทำงานได้ แต่คุณกำลังเปรียบเทียบอันดับเฉลี่ย ไม่ใช่มัธยฐาน
สมมติฐานข้อที่สามมักทำให้หลายคนสับสนมากที่สุด
มักบอกกันว่า Mann-Whitney U เป็นการทดสอบมัธยฐาน แต่จริงเฉพาะเมื่อสองการแจกแจงมีรูปร่างใกล้เคียงกัน หากไม่ใช่ ผลลัพธ์จะบอกสิ่งที่กว้างกว่า — ว่าค่าในกลุ่มหนึ่งมีแนวโน้มสูงกว่าอีกกลุ่มหรือไม่
Mann-Whitney U Test ใน Python
โมดูล scipy.stats ของ Python มีฟังก์ชันสำหรับ Mann-Whitney U test ต่อไปนี้คือตัวอย่างง่าย ๆ โดยใช้คะแนนสอบจากสองชั้นเรียน
from scipy.stats import mannwhitneyu
class_a = [72, 85, 90, 65, 78, 88, 95, 70, 83, 76]
class_b = [60, 55, 74, 68, 80, 58, 63, 71, 66, 59]
stat, p_value = mannwhitneyu(class_a, class_b, alternative="two-sided")
print(f"U statistic: {stat}")
print(f"P-value: {p_value:.4f}")

การทดสอบ Mann-Whitney U ใน Python
อาร์กิวเมนต์ alternative="two-sided" บอกว่ากำลังทดสอบความแตกต่างทั้งสองทิศทาง ไม่ได้ตั้งสมมติก่อนว่ากลุ่มใดสูงกว่า หากมีสมมติฐานแบบมีทิศทาง ควรใช้ "less" หรือ "greater" แทน
ค่า p ที่นี่คือ 0.0046 ซึ่งต่ำกว่าเกณฑ์มาตรฐาน 0.05 หมายความว่าสามารถปฏิเสธสมมติฐานศูนย์ได้ เนื่องจากมีความแตกต่างอย่างมีนัยสำคัญทางสถิติระหว่างการแจกแจงคะแนนของสองชั้นเรียน
ค่าสถิติ U เพียงอย่างเดียวไม่ได้บอกอะไรมากนักหากไร้บริบท ควรโฟกัสที่ค่า p เพื่อพิจารณาว่าความแตกต่างมีนัยสำคัญหรือไม่ และดูข้อมูลดิบหรือมัธยฐานเพื่อเข้าใจทิศทางของความแตกต่างนั้น
Mann-Whitney U Test ใน R
R รัน Mann-Whitney U test ผ่านฟังก์ชัน wilcox.test() จะใช้ตัวอย่างคะแนนสอบเดิม
class_a <- c(72, 85, 90, 65, 78, 88, 95, 70, 83, 76)
class_b <- c(60, 55, 74, 68, 80, 58, 63, 71, 66, 59)
wilcox.test(class_a, class_b, alternative = "two.sided")

Mann-Whitney U test ใน R
สถิติ W เทียบเท่ากับสถิติ U — R เพียงติดป้ายต่างกัน การตีความเหมือนกับใน Python: ค่า p 0.0029 ต่ำกว่า 0.05 แสดงว่ามีความแตกต่างอย่างมีนัยสำคัญทางสถิติระหว่างสองกลุ่ม
อาจเห็นคำเตือนเกี่ยวกับ ties ในข้อมูล
เกิดขึ้นเมื่อมีค่าที่เท่ากันในทั้งสองกลุ่ม ส่งผลต่อการกำหนดอันดับ R จัดการให้ แต่ถ้ามี ties จำนวนมาก ควรตรวจสอบว่าข้อมูลตรงตามสมมติฐานของการทดสอบหรือไม่
วิธีตีความผลลัพธ์ Mann-Whitney U Test
สมมติฐานศูนย์ของ Mann-Whitney U test คือทั้งสองกลุ่มมาจากการแจกแจงเดียวกัน — กล่าวคือไม่มีความแตกต่าง หน้าที่ของคุณคือค้นหาหลักฐานโต้แย้ง
ค่า p คือเครื่องมือในการทำเช่นนั้น:
- p < 0.05: ปฏิเสธสมมติฐานศูนย์ได้ สองกลุ่มมีการแจกแจงต่างกัน และความแตกต่างมีนัยสำคัญทางสถิติ
- p >= 0.05: หลักฐานไม่พอที่จะปฏิเสธสมมติฐานศูนย์ ไม่ได้หมายความว่าสองกลุ่มเหมือนกันทุกประการ เพียงแต่ข้อมูลไม่แสดงความแตกต่างชัดเจน
โปรดจำไว้ว่า Mann-Whitney U test เปรียบเทียบการแจกแจง ผลลัพธ์ที่มีนัยสำคัญบอกว่าค่าในกลุ่มหนึ่งมีแนวโน้มจัดอันดับสูงกว่าอีกกลุ่ม — ไม่ใช่ว่าค่าเฉลี่ยสูงกว่า หากต้องการอธิบายทิศทางของความแตกต่าง ให้ดูมัธยฐานของแต่ละกลุ่ม ไม่ใช่ค่าเฉลี่ย
Mann-Whitney U Test เทียบกับ t-Test
ทั้งสองการทดสอบแก้ปัญหาเดียวกัน (เปรียบเทียบสองกลุ่ม) แต่ทำงานต่างกัน และการเลือกผิดจะส่งผลต่อผลลัพธ์
t-test
t-test เปรียบเทียบค่าเฉลี่ย ของสองกลุ่ม โดยตั้งอยู่บนสมมติฐานว่าข้อมูลแจกแจงแบบปกติ และเมื่อเป็นจริงก็เป็นการทดสอบที่ดี
ปัญหาอยู่ที่สมมติฐานนี้ หากข้อมูลเบ้หรือมาจากตัวอย่างเล็กที่ยากจะยืนยันความเป็นปกติ ผลของ t-test อาจไม่น่าเชื่อถือ ค่าเฉลี่ยถูกดึงโดยค่าที่สุดโต่งและค่า p ก็สะท้อนสิ่งนั้น
ใช้ t-test เมื่อ:
- ข้อมูลแจกแจงแบบปกติ
- มีขนาดตัวอย่างมากพอ
- ทำงานกับข้อมูลเชิงต่อเนื่องที่ไม่มีความเบ้หรือค่าแปลกปลอมรุนแรง
Mann-Whitney U test
Mann-Whitney U test เปรียบเทียบการแจกแจง แทนที่จะเป็นค่าเฉลี่ย โดยจัดอันดับค่าทั้งหมดจากทั้งสองกลุ่มร่วมกันและตรวจว่ากลุ่มหนึ่งมีอันดับสูงกว่าอีกกลุ่มอย่างสม่ำเสมอหรือไม่ ด้วยการใช้อันดับ ค่าแปลกปลอมและความเบ้จึงไม่บิดเบือนผลเหมือนเดิม
เมื่อข้อมูลแจกแจงปกติจริง t-test จะตรวจจับความแตกต่างได้เชื่อถือมากกว่า Mann-Whitney U test ยืดหยุ่นกว่า แต่ต้องแลกด้วยความไวที่ลดลงเล็กน้อย
ใช้ Mann-Whitney U test เมื่อ:
- ข้อมูลไม่แจกแจงปกติ
- ทำงานกับข้อมูลเชิงลำดับ
- มีขนาดตัวอย่างเล็กและยืนยันความเป็นปกติไม่ได้
- มีค่าแปลกปลอมและไม่สามารถลบออกได้
นี่คือการเปรียบเทียบแบบย่อของทั้งสอง:

t-test เทียบกับ Mann-Whitney U test
หากไม่แน่ใจ ให้ตรวจการแจกแจงก่อน หากค่อนข้างปกติ ใช้ t-test หากไม่ใช่ Mann-Whitney U test ปลอดภัยกว่า
ข้อผิดพลาดที่พบบ่อยกับ Mann-Whitney U Test
ข้อผิดพลาดส่วนใหญ่เกิดจากการไม่เข้าใจว่าการทดสอบนี้ทำอะไรจริง ๆ ต่อไปนี้คือข้อผิดพลาดที่พบบ่อย
คิดว่ามันเปรียบเทียบค่าเฉลี่ย
นี่คือข้อผิดพลาดที่พบบ่อยที่สุด Mann-Whitney U test เปรียบเทียบการแจกแจง ไม่ใช่ค่าเฉลี่ย ผลลัพธ์ที่มีนัยสำคัญบอกว่าค่าในกลุ่มหนึ่งมีแนวโน้มจัดอันดับสูงกว่า — ไม่ใช่ว่าค่าเฉลี่ยสูงกว่า หากต้องอธิบายความแตกต่าง ให้รายงานมัธยฐาน ไม่ใช่ค่าเฉลี่ย
มองข้ามความต่างของรูปร่างการแจกแจง
หากสองกลุ่มมีรูปร่างการแจกแจงต่างกัน — กลุ่มหนึ่งเบ้ขวา อีกกลุ่มสมมาตร — จะไม่สามารถตีความผลเป็นการเปรียบเทียบมัธยฐานได้ การทดสอบยังรันได้ แต่ผลสะท้อนความต่างของการแจกแจงโดยรวม ไม่ใช่การเลื่อนศูนย์กลาง ตรวจการแจกแจงก่อนสรุปเกี่ยวกับมัธยฐาน
ตีความค่า p ผิดความหมาย
ค่า p ต่ำกว่า 0.05 หมายถึงความแตกต่างมีนัยสำคัญทางสถิติ แต่มิได้บอกขนาดความแตกต่างหรือความสำคัญในทางปฏิบัติ ตัวอย่างที่ใหญ่มากอาจให้ค่า p มีนัยสำคัญ แม้ความต่างจริงจะเล็กน้อย หากขนาดอิทธิพลสำคัญต่อการวิเคราะห์ ควรคำนวณแยกต่างหาก
ใช้กับข้อมูลที่จับคู่กัน
Mann-Whitney U test ใช้สำหรับสองกลุ่มที่เป็นอิสระ หากข้อมูลเป็นแบบจับคู่ — วัดซ้ำในกลุ่มตัวแบบเดียวกัน หรือคู่ที่จับคู่กัน — ควรใช้ Wilcoxon signed-rank test แทน
เมื่อใดไม่ควรใช้ Mann-Whitney U Test
Mann-Whitney U ไม่เหมาะกับทุกสถานการณ์ ต่อไปนี้คือกรณีที่ควรใช้วิธีอื่น
ข้อมูลของคุณเป็นแบบจับคู่
หากตัวแบบเดียวกันปรากฏในทั้งสองกลุ่ม — การวัดก่อน-หลัง หรือคู่ที่จับคู่กัน — ตัวอย่างสองชุดไม่เป็นอิสระ Mann-Whitney U test สมมติว่าข้อมูลเป็นอิสระ ดังนั้นการใช้ในกรณีนี้คือการเมินความสัมพันธ์ระหว่างการสังเกตและให้ผลที่ไม่น่าเชื่อถือ ควรใช้ Wilcoxon signed-rank test
มีมากกว่าสองกลุ่ม
Mann-Whitney U เปรียบเทียบทีละสองกลุ่มเท่านั้น หากต้องเปรียบเทียบสามกลุ่มขึ้นไป ให้ใช้ Kruskal-Wallis test ซึ่งเป็นนอนพาราเมตริกเทียบเท่ากับ one-way ANOVA และรองรับหลายกลุ่ม
มีตัวอย่างขนาดใหญ่และข้อมูลปกติ
ข้อได้เปรียบหลักของ Mann-Whitney U คือไม่สมมติความเป็นปกติ หากข้อมูลแจกแจงปกติและตัวอย่างใหญ่พอที่จะยืนยันได้ t-test จะเหมาะกว่า มีอำนาจทางสถิติมากกว่าในสถานการณ์นั้น หมายถึงมีโอกาสตรวจพบความแตกต่างจริงได้มากกว่า
สรุป
Mann-Whitney U test เป็นทางเลือกที่ยอดเยี่ยมเมื่อข้อมูลไม่แจกแจงปกติ ทำให้ t-test ไม่เหมาะสม
มันทำงานกับอันดับแทนค่าดิบ จึงหลีกเลี่ยงสมมติฐานที่ทำให้การทดสอบแบบพาราเมตริกไม่น่าเชื่อถือบนข้อมูลที่เบ้หรือมีตัวอย่างเล็ก เหมาะกับการวิเคราะห์ในโลกจริงที่ข้อมูลมักไม่เป็นไปตามใจ
บทเรียนที่ใหญ่กว่าคือการเลือกแบบทดสอบ ไม่มีแบบทดสอบใดใช้ได้กับทุกชุดข้อมูล ควรตรวจข้อมูลก่อนเสมอ — การแจกแจง โครงสร้าง และขนาดตัวอย่าง — แล้วให้ลักษณะเหล่านั้นนำทางการเลือก แบบทดสอบที่ถูกต้องคือแบบที่เหมาะกับข้อมูลของคุณ
หากเป็นมือใหม่ด้านสถิติหรืออยากศึกษาเชิงลึก แทร็ก Statistician in R ของเราจะช่วยให้พร้อมทำงานได้ด้วยสื่อการสอน 52 ชั่วโมง
FAQs
การทดสอบ Mann-Whitney U ใช้ทำอะไร?
Mann-Whitney U test ใช้เปรียบเทียบสองกลุ่มที่เป็นอิสระเมื่อไม่สามารถสมมติว่าข้อมูลแจกแจงแบบปกติได้ โดยจัดอันดับค่าทั้งหมดจากทั้งสองกลุ่มร่วมกันและตรวจดูว่ากลุ่มหนึ่งมีอันดับสูงกว่าอีกกลุ่มอย่างสม่ำเสมอหรือไม่ ใช้ได้กับข้อมูลเชิงลำดับและเชิงต่อเนื่อง
Mann-Whitney U test ต่างจาก t-test อย่างไร?
t-test เปรียบเทียบค่าเฉลี่ยของสองกลุ่มและสมมติว่าข้อมูลแจกแจงปกติ ส่วน Mann-Whitney U test เปรียบเทียบการแจกแจงโดยใช้อันดับ จึงไม่ทำสมมติฐานนั้น เมื่อข้อมูลเบ้หรือมีตัวอย่างเล็ก Mann-Whitney U test จะปลอดภัยกว่า
ควรใช้ Mann-Whitney U test เมื่อใด?
ใช้เมื่อมีสองกลุ่มที่เป็นอิสระ ข้อมูลเป็นเชิงลำดับหรือเชิงต่อเนื่อง และยืนยันความเป็นปกติไม่ได้ เหมาะเมื่อขนาดตัวอย่างเล็กและมีค่าแปลกปลอม หากข้อมูลแจกแจงปกติและตัวอย่างใหญ่ t-test มักให้ผลดีกว่า
ค่า p บอกอะไรใน Mann-Whitney U test?
ค่า p ต่ำกว่า 0.05 หมายความว่ามีความแตกต่างอย่างมีนัยสำคัญทางสถิติระหว่างการแจกแจงของสองกลุ่ม แต่มิได้บอกว่าความต่างมีขนาดเท่าไรหรือสำคัญเชิงปฏิบัติหรือไม่ หากต้องการทราบขนาดอิทธิพล ควรคำนวณแยก และดูมัธยฐานของแต่ละกลุ่มประกอบ
สามารถใช้ Mann-Whitney U test กับข้อมูลจับคู่ได้หรือไม่?
ไม่ การทดสอบ Mann-Whitney U สมมติว่าสองกลุ่มเป็นอิสระ หมายความว่าค่าของกลุ่มหนึ่งไม่ส่งอิทธิพลต่ออีกกลุ่ม หากข้อมูลเป็นแบบจับคู่ — เช่น การวัดก่อนและหลังบนตัวแบบเดียวกัน — ให้ใช้ Wilcoxon signed-rank test แทน การใช้ Mann-Whitney U กับข้อมูลจับคู่คือการเมินความสัมพันธ์ระหว่างการสังเกตและทำให้ผลไม่น่าเชื่อถือ