วิธีทำการทดสอบ nemenyi post-hoc ใน python
การทดสอบฟรีดแมน เป็นทางเลือกแบบไม่ใช้พารามิเตอร์ ในการวัดความแปรปรวนแบบซ้ำๆ ใช้เพื่อพิจารณาว่ามีความแตกต่างที่มีนัยสำคัญทางสถิติระหว่างค่าเฉลี่ยของกลุ่มสามกลุ่มขึ้นไปซึ่งมีวิชาเดียวกันปรากฏในแต่ละกลุ่มหรือไม่
หากค่า p จากการทดสอบฟรีดแมนมีนัยสำคัญทางสถิติ เราก็สามารถทำการ ทดสอบหลังการทดสอบของ Nemenyi เพื่อระบุได้อย่างแน่ชัดว่ากลุ่มใดมีความแตกต่างกัน
ตัวอย่างทีละขั้นตอนต่อไปนี้แสดงวิธีดำเนินการทดสอบ Nemenyi ใน Python
ขั้นตอนที่ 1: สร้างข้อมูล
สมมติว่านักวิจัยต้องการทราบว่าเวลาตอบสนองของผู้ป่วยเท่ากับยาสามชนิดที่แตกต่างกันหรือไม่ เพื่อทดสอบสิ่งนี้ เขาวัดเวลาปฏิกิริยา (เป็นวินาที) ของผู้ป่วย 10 รายที่แตกต่างกันกับยาแต่ละชนิด
เราสามารถสร้างตารางสามตารางต่อไปนี้ซึ่งมีเวลาตอบสนองสำหรับผู้ป่วยแต่ละรายสำหรับยาทั้งสามชนิด:
group1 = [4, 6, 3, 4, 3, 2, 2, 7, 6, 5] group2 = [5, 6, 8, 7, 7, 8, 4, 6, 4, 5] group3 = [2, 2, 5, 3, 2, 2, 1, 4, 3, 2]
ขั้นตอนที่ 2: ทำการทดสอบฟรีดแมน
ต่อไป เราจะทำการทดสอบฟรีดแมนโดยใช้ ฟังก์ชัน Friedmanchisquare() จากไลบรารี scipy.stats:
from scipy import stats #perform Friedman Test stats. friedmanchisquare (group1, group2, group3) FriedmanchisquareResult(statistic=13.3513513, pvalue=0.00126122012)
การทดสอบฟรีดแมนใช้สมมติฐานว่างและทางเลือกต่อไปนี้:
สมมติฐานว่าง (H 0 ): ค่าเฉลี่ยของแต่ละประชากรเท่ากัน
สมมติฐานทางเลือก: (ฮา): ค่าเฉลี่ยประชากรอย่างน้อยหนึ่งรายการแตกต่างจากค่าเฉลี่ยอื่นๆ
ในตัวอย่างนี้ สถิติการทดสอบคือ 13.35135 และค่า p ที่สอดคล้องกันคือ 0.00126 เนื่องจากค่า p นี้น้อยกว่า 0.05 เราจึงสามารถปฏิเสธสมมติฐานว่างที่ว่าเวลาตอบสนองโดยเฉลี่ยเท่ากันสำหรับยาทั้งสามชนิด
กล่าวอีกนัยหนึ่ง เรามีหลักฐานเพียงพอที่จะสรุปว่าประเภทของยาที่ใช้ทำให้เกิดความแตกต่างที่มีนัยสำคัญทางสถิติในเวลาตอบสนอง
ขั้นตอนที่ 3: ทำการทดสอบ Nemenyi
จากนั้นเราจึงทำการทดสอบหลังการทดสอบของ Nemenyi เพื่อระบุได้อย่างแน่ชัดว่ากลุ่มใดมีวิธีการที่แตกต่างกัน
ในการดำเนินการนี้ เราจำเป็นต้องติดตั้งไลบรารี scikit-posthocs:
pip install scikit-posthocs
ต่อไป เราจะใช้ฟังก์ชัน posthoc_nemenyi_friedman() เพื่อทำการทดสอบหลังการแก้ไขของ Nemenyi:
import scikit_posthocs as sp
import numpy as np
#combine three groups into one array
data = np. array ([group1, group2, group3])
#perform Nemenyi post-hoc test
sp. posthoc_nemenyi_friedman ( data.T )
0 1 2
0 1.000000 0.437407 0.065303
1 0.437407 1.000000 0.001533
2 0.065303 0.001533 1.000000
หมายเหตุ: เราต้องย้ายอาร์เรย์ numpy (data.T) เพื่อทำการทดสอบหลังการทดสอบอย่างถูกต้อง
การทดสอบหลังการทดสอบของ Nemeyi จะส่งคืนค่า p สำหรับการเปรียบเทียบค่าเฉลี่ยแต่ละคู่ จากผลลัพธ์เราจะเห็นค่า p ต่อไปนี้:
- ค่า P ของกลุ่ม 0 เทียบกับกลุ่ม 1: 0.4374
- ค่า P ของกลุ่ม 0 เทียบกับกลุ่ม 2: 0.0653
- ค่า P ของกลุ่ม 1 เทียบกับกลุ่ม 2: 0.0015
ที่ α = 0.05 มีเพียงสองกลุ่มเท่านั้นที่มีค่าเฉลี่ยที่แตกต่างกันอย่างมีนัยสำคัญทางสถิติคือกลุ่ม 1 และกลุ่ม 2
หมายเหตุ: การทดสอบของ Nemenyi แปลงหมายเลขกลุ่มจาก 1, 2, 3 เป็น 0, 1, 2 ดังนั้นกลุ่มในข้อมูลดั้งเดิมที่แตกต่างกันอย่างมีนัยสำคัญคือกลุ่ม 2 และ 3