Hoe u een drieweg-anova uitvoert in python
Een drieweg-ANOVA wordt gebruikt om te bepalen of er al dan niet een statistisch significant verschil bestaat tussen de gemiddelden van drie of meer onafhankelijke groepen die over drie factoren zijn verdeeld.
In het volgende voorbeeld ziet u hoe u een drieweg-ANOVA uitvoert in Python.
Voorbeeld: drieweg-ANOVA in Python
Stel dat een onderzoeker wil bepalen of twee trainingsprogramma’s leiden tot verschillende gemiddelde verbeteringen in de spronghoogte onder universiteitsbasketbalspelers.
De onderzoeker vermoedt dat geslacht en divisie (Divisie I of II) ook van invloed kunnen zijn op de spronghoogte, daarom verzamelt hij ook gegevens over deze factoren.
Zijn doel is om een drieweg-ANOVA uit te voeren om te bepalen hoe trainingsprogramma, geslacht en divisie de spronghoogte beïnvloeden.
Gebruik de volgende stappen om deze drieweg-ANOVA in Python uit te voeren:
Stap 1: Creëer de gegevens
Laten we eerst een Panda DataFrame maken om de gegevens op te slaan:
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
Stap 2: Voer de drieweg-ANOVA uit
Vervolgens kunnen we de functie anova_lm() uit de statsmodels- bibliotheek gebruiken om de drieweg-ANOVA uit te voeren:
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
Stap 3: Interpreteer de resultaten
De kolom Pr(>F) toont de p-waarde voor elke individuele factor en de interacties tussen de factoren.
Uit de resultaten kunnen we opmaken dat geen van de interacties tussen de drie factoren statistisch significant was.
We kunnen ook zien dat elk van de drie factoren (programma, geslacht en divisie) statistisch significant was met de volgende p-waarden:
- Programma P-waarde: 0,00000000298
- Geslacht P-waarde: 0,00000000000171
- Afdeling P-waarde: 0,00000185
Concluderend zouden we kunnen zeggen dat trainingsprogramma, geslacht en divisie allemaal belangrijke indicatoren zijn voor de toegenomen spronghoogte bij spelers.
We zouden ook zeggen dat er geen significante interactie-effecten zijn tussen deze drie factoren.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere ANOVA-modellen in Python kunt passen:
Eenrichtings-ANOVA uitvoeren in Python
Hoe u een tweerichtings-ANOVA uitvoert in Python
Hoe herhaalde metingen ANOVA in Python uit te voeren