Cara melakukan anova tiga arah dengan python
ANOVA tiga arah digunakan untuk menentukan apakah terdapat perbedaan yang signifikan secara statistik antara rata-rata tiga atau lebih kelompok independen yang telah didistribusikan pada tiga faktor.
Contoh berikut menunjukkan cara melakukan ANOVA tiga arah dengan Python.
Contoh: ANOVA tiga arah dengan Python
Misalkan seorang peneliti ingin menentukan apakah dua program pelatihan menghasilkan peningkatan rata-rata yang berbeda dalam tinggi lompatan di antara pemain bola basket perguruan tinggi.
Peneliti menduga bahwa jenis kelamin dan pembagian (Divisi I atau II) juga dapat mempengaruhi tinggi lompatan, oleh karena itu ia juga mengumpulkan data mengenai faktor-faktor tersebut.
Tujuannya adalah melakukan ANOVA tiga arah untuk menentukan bagaimana program pelatihan, jenis kelamin, dan pembagian mempengaruhi tinggi lompatan.
Gunakan langkah-langkah berikut untuk melakukan ANOVA tiga arah ini dengan Python:
Langkah 1: Buat datanya
Pertama, mari buat pandas DataFrame untuk menampung data:
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
Langkah 2: Lakukan ANOVA tiga arah
Selanjutnya, kita dapat menggunakan fungsi anova_lm() dari perpustakaan statsmodels untuk melakukan ANOVA tiga arah:
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
Langkah 3: Interpretasikan hasilnya
Kolom Pr(>F) menampilkan nilai p untuk masing-masing faktor dan interaksi antar faktor.
Dari hasil tersebut, kita dapat melihat bahwa tidak ada interaksi antara ketiga faktor tersebut yang signifikan secara statistik.
Kita juga dapat melihat bahwa ketiga faktor tersebut (program, gender, dan pembagian) signifikan secara statistik dengan nilai p berikut:
- Nilai P program : 0,00000000298
- Nilai P Jenis Kelamin : 0,00000000000171
- Nilai P pembagian : 0,00000185
Sebagai kesimpulan, kami dapat mengatakan bahwa program pelatihan, gender, dan pembagian merupakan indikator signifikan peningkatan tinggi lompatan pemain.
Kami juga dapat mengatakan bahwa tidak ada efek interaksi yang signifikan antara ketiga faktor ini.
Sumber daya tambahan
Tutorial berikut menjelaskan cara menyesuaikan model ANOVA lainnya dengan Python:
Cara Melakukan ANOVA Satu Arah dengan Python
Cara Melakukan ANOVA Dua Arah dengan Python
Cara Melakukan Tindakan Berulang ANOVA dengan Python