วิธีทำการทดสอบ tukey ใน python
การวิเคราะห์ความแปรปรวนแบบทางเดียว ใช้เพื่อพิจารณาว่ามีความแตกต่างที่มีนัยสำคัญทางสถิติระหว่างค่าเฉลี่ยของกลุ่มอิสระสามกลุ่มขึ้นไปหรือไม่
หากค่า p-value โดยรวมของตาราง ANOVA ต่ำกว่าระดับนัยสำคัญที่กำหนด เราก็มีหลักฐานเพียงพอที่จะบอกว่าค่าเฉลี่ยของกลุ่มอย่างน้อยหนึ่งรายการแตกต่างจากค่าเฉลี่ยอื่นๆ
อย่างไรก็ตาม นี่ไม่ได้บอกเราว่ากลุ่ม ใด มีความแตกต่างกัน นี่บอกเราว่าค่าเฉลี่ยกลุ่มไม่เท่ากันทั้งหมด หากต้องการทราบว่ากลุ่มใดมีความแตกต่างกัน เราจำเป็นต้องทำการ ทดสอบหลังการทดสอบ
การทดสอบหลังการทดสอบที่ใช้บ่อยที่สุดอย่างหนึ่งคือ การทดสอบ Tukey ซึ่งช่วยให้เราทำการเปรียบเทียบแบบคู่ระหว่างค่าเฉลี่ยของแต่ละกลุ่มในขณะที่ควบคุม อัตราความผิดพลาดแบบครอบครัว
บทช่วยสอนนี้ให้ตัวอย่างทีละขั้นตอนของวิธีดำเนินการทดสอบ Tukey ใน Python
ขั้นตอนที่ 1: โหลดแพ็คเกจและฟังก์ชันที่จำเป็น
ขั้นแรก เราจะโหลดแพ็คเกจและฟังก์ชันที่จำเป็นใน Python:
import pandas as pd
import numpy as np
from scipy. stats import f_oneway
from statsmodels. stats . multicomp import pairwise_tukeyhsd
ขั้นตอนที่ 2: ติดตั้งโมเดล ANOVA
รหัสต่อไปนี้แสดงวิธีสร้างชุดข้อมูลปลอมที่มีสามกลุ่ม (A, B และ C) และปรับแบบจำลองการวิเคราะห์ความแปรปรวนแบบทางเดียวให้กับข้อมูลเพื่อพิจารณาว่าค่าเฉลี่ยของแต่ละกลุ่มเท่ากันหรือไม่:
#enter data for three groups a = [85, 86, 88, 75, 78, 94, 98, 79, 71, 80] b = [91, 92, 93, 90, 97, 94, 82, 88, 95, 96] c = [79, 78, 88, 94, 92, 85, 83, 85, 82, 81] #perform one-way ANOVA f_oneway(a, b, c) F_onewayResult(statistic=5.167774552944481, pvalue=0.012582197136592609)
เราจะเห็นว่าค่า p โดยรวมจากตาราง ANOVA คือ 0.01258
เนื่องจากตัวเลขนี้น้อยกว่า 0.05 เราจึงมีหลักฐานเพียงพอที่จะบอกว่าค่าเฉลี่ยในแต่ละกลุ่มไม่เท่ากัน
ดังนั้นเราจึงสามารถทำการทดสอบ Tukey เพื่อระบุได้อย่างชัดเจนว่าค่าเฉลี่ยของกลุ่มใดที่แตกต่างกัน
ขั้นตอนที่ 3: ทำการทดสอบ Tukey
ในการทำการทดสอบ Tukey ใน Python เราสามารถใช้ฟังก์ชัน pairwise_tukeyhsd() จากไลบรารี statsmodels :
#create DataFrame to hold data df = pd. DataFrame ({'score': [85, 86, 88, 75, 78, 94, 98, 79, 71, 80, 91, 92, 93, 90, 97, 94, 82, 88, 95, 96, 79, 78, 88, 94, 92, 85, 83, 85, 82, 81], 'group': np. repeat (['a', 'b', 'c'], repeats= 10 )}) # perform Tukey's test tukey = pairwise_tukeyhsd(endog=df['score'], groups=df['group'], alpha= 0.05 ) #display results print (tukey) Multiple Comparison of Means - Tukey HSD, FWER=0.05 ==================================================== === group1 group2 meandiff p-adj lower upper reject -------------------------------------------------- --- ab 8.4 0.0158 1.4272 15.3728 True ac 1.3 0.8864 -5.6728 8.2728 False bc -7.1 0.0453 -14.0728 -0.1272 True -------------------------------------------------- ---
ต่อไปนี้เป็นวิธีการตีความผลลัพธ์:
- ค่า P สำหรับความแตกต่างในค่าเฉลี่ยระหว่าง a และ b: 0.0158
- ค่า P สำหรับความแตกต่างในค่าเฉลี่ยระหว่าง a และ c: 0.8864
- ค่า P สำหรับความแตกต่างในค่าเฉลี่ยระหว่าง b และ c: 0.0453
ดังนั้น เราจะสรุปได้ว่ามีความแตกต่าง ที่มีนัยสำคัญทางสถิติ ระหว่างค่าเฉลี่ยของกลุ่ม a และ b และกลุ่ม b และ c แต่ไม่มีความแตกต่างที่มีนัยสำคัญทางสถิติระหว่างค่าเฉลี่ยของกลุ่ม a และ c
แหล่งข้อมูลเพิ่มเติม
วิธีการดำเนินการวิเคราะห์ความแปรปรวนแบบทางเดียวใน Python
วิธีดำเนินการวิเคราะห์ความแปรปรวนแบบสองทางใน Python
วิธีดำเนินการวัด ANOVA ซ้ำใน Python