วิธีดำเนินการวิเคราะห์ความแปรปรวนสามทางใน python


การวิเคราะห์ความแปรปรวนแบบสามทาง ใช้เพื่อพิจารณาว่ามีความแตกต่างที่มีนัยสำคัญทางสถิติระหว่างค่าเฉลี่ยของกลุ่มอิสระสามกลุ่มขึ้นไปที่กระจายไปตามปัจจัยสามตัวหรือไม่

ตัวอย่างต่อไปนี้แสดงวิธีดำเนินการวิเคราะห์ความแปรปรวนสามทางใน Python

ตัวอย่าง: การวิเคราะห์ความแปรปรวนสามทางใน Python

สมมติว่านักวิจัยต้องการตรวจสอบว่าโปรแกรมการฝึกอบรมสองโปรแกรมนำไปสู่การปรับปรุงค่าเฉลี่ยความสูงของการกระโดดที่แตกต่างกันในหมู่นักบาสเกตบอลระดับวิทยาลัยหรือไม่

ผู้วิจัยสงสัยว่าเพศและการแบ่งตัว (ดิวิชั่น 1 หรือ 2) อาจส่งผลต่อความสูงของการกระโดดด้วย ซึ่งเป็นเหตุผลว่าทำไมเขาจึงรวบรวมข้อมูลเกี่ยวกับปัจจัยเหล่านี้ด้วย

เป้าหมายของเขาคือทำการวิเคราะห์ความแปรปรวนสามทางเพื่อพิจารณาว่าโปรแกรมการฝึก เพศ และการแบ่งส่วนส่งผลต่อความสูงของการกระโดดอย่างไร

ใช้ขั้นตอนต่อไปนี้เพื่อทำการวิเคราะห์ความแปรปรวนสามทางใน Python:

ขั้นตอนที่ 1: สร้างข้อมูล

ขั้นแรก เรามาสร้าง DataFrame ของแพนด้าเพื่อเก็บข้อมูล:

 import numpy as np
import pandas as pd

#createDataFrame
df = pd. DataFrame ({' program ': np.repeat ([1,2],20),
                   ' gender ': np. tile (np. repeat (['M', 'F'], 10), 2),
                   ' division ': np. tile (np. repeat ([1, 2], 5), 4),
                   ' height ': [7, 7, 8, 8, 7, 6, 6, 5, 6, 5,
                              5, 5, 4, 5, 4, 3, 3, 4, 3, 3,
                              6, 6, 5, 4, 5, 4, 5, 4, 4, 3,
                              2, 2, 1, 4, 4, 2, 1, 1, 2, 1]})

#view first ten rows of DataFrame 
df[:10]

	program gender division height
0 1 M 1 7
1 1 M 1 7
2 1 M 1 8
3 1 M 1 8
4 1 M 1 7
5 1 M 2 6
6 1 M 2 6
7 1 M 2 5
8 1 M 2 6
9 1 M 2 5

ขั้นตอนที่ 2: ดำเนินการวิเคราะห์ความแปรปรวนสามทาง

ต่อไป เราสามารถใช้ฟังก์ชัน anova_lm() จากไลบรารี statsmodels เพื่อทำการวิเคราะห์ความแปรปรวนแบบสามทาง:

 import statsmodels. api as sm
from statsmodels. formula . api import ols

#perform three-way ANOVA
model = ols("""height ~ C(program) + C(gender) + C(division) +
               C(program):C(gender) + C(program):C(division) + C(gender):C(division) +
               C(program):C(gender):C(division)""", data=df) .fit ()

sm. stats . anova_lm (model, typ= 2 )

	                          sum_sq df F PR(>F)
C(program) 3.610000e+01 1.0 6.563636e+01 2.983934e-09
C(gender) 6.760000e+01 1.0 1.229091e+02 1.714432e-12
C(division) 1.960000e+01 1.0 3.563636e+01 1.185218e-06
C(program):C(gender) 2.621672e-30 1.0 4.766677e-30 1.000000e+00
C(program):C(division) 4.000000e-01 1.0 7.272727e-01 4.001069e-01
C(gender):C(division) 1.000000e-01 1.0 1.818182e-01 6.726702e-01
C(program):C(gender):C(division) 1.000000e-01 1.0 1.818182e-01 6.726702e-01
Residual 1.760000e+01 32.0 NaN NaN

ขั้นตอนที่ 3: ตีความผลลัพธ์

คอลัมน์ Pr(>F) แสดงค่า p สำหรับแต่ละปัจจัยและการโต้ตอบระหว่างปัจจัยต่างๆ

จากผลลัพธ์ เราจะเห็นว่าไม่มีปฏิสัมพันธ์ระหว่างปัจจัยทั้งสามที่มีนัยสำคัญทางสถิติ

เรายังเห็นอีกว่าปัจจัยทั้งสาม (โปรแกรม เพศ และการแบ่ง) มีนัยสำคัญทางสถิติโดยมีค่า p ต่อไปนี้:

  • โปรแกรม ค่า P: 0.00000000298
  • ค่า P เพศ : 0.00000000000171
  • ค่า P ของดิวิชั่น : 0.00000185

โดยสรุป เราจะกล่าวว่าโปรแกรมการฝึกซ้อม เพศ และการแบ่งส่วนล้วนเป็นตัวบ่งชี้ที่สำคัญในการเพิ่มความสูงของการกระโดดในผู้เล่น

นอกจากนี้เรายังบอกอีกว่าไม่มีผลกระทบจากการโต้ตอบที่มีนัยสำคัญระหว่างปัจจัยทั้งสามนี้

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีปรับให้พอดีกับโมเดล ANOVA อื่นๆ ใน Python:

วิธีการดำเนินการวิเคราะห์ความแปรปรวนแบบทางเดียวใน Python
วิธีดำเนินการวิเคราะห์ความแปรปรวนแบบสองทางใน Python
วิธีดำเนินการวัด ANOVA ซ้ำใน Python

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *