Hoe u een tweerichtings-anova uitvoert in python
Een tweerichtings-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 twee factoren zijn verdeeld.
Het doel van een tweerichtings-ANOVA is om de impact van twee factoren op een responsvariabele te bepalen en om te bepalen of er al dan niet een interactie tussen de twee factoren op de responsvariabele bestaat.
In deze tutorial wordt uitgelegd hoe u een tweerichtings-ANOVA uitvoert in Python.
Voorbeeld: tweerichtings-ANOVA in Python
Een botanicus wil weten of de plantengroei wordt beïnvloed door blootstelling aan zonlicht en de frequentie van water geven. Ze plant 30 zaden en laat ze twee maanden lang groeien onder verschillende omstandigheden wat betreft blootstelling aan de zon en waterfrequentie. Na twee maanden registreert ze de hoogte van elke plant, in inches.
Gebruik de volgende stappen om een tweeweg-ANOVA uit te voeren om te bepalen of de waterfrequentie en blootstelling aan de zon een significant effect hebben op de plantengroei, en om te bepalen of er een interactie-effect is tussen de waterfrequentie en blootstelling aan de zon. water geven en blootstelling aan de zon.
Stap 1: Voer de gegevens in.
Eerst maken we een Panda DataFrame dat de volgende drie variabelen bevat:
- water: hoe vaak elke plant water kreeg: dagelijks of wekelijks
- zon: hoeveelheid blootstelling aan de zon die elke plant heeft ontvangen: laag, gemiddeld of hoog
- hoogte: de hoogte van elke plant (in inches) na twee maanden
import numpy as np import pandas as pd #create data df = pd.DataFrame({'water': np.repeat(['daily', 'weekly'], 15), 'sun': np.tile(np.repeat(['low', 'med', 'high'], 5), 2), 'height': [6, 6, 6, 5, 6, 5, 5, 6, 4, 5, 6, 6, 7, 8, 7, 3, 4, 4, 4, 5, 4, 4, 4, 4, 4, 5, 6, 6, 7, 8]}) #view first ten rows of data df[:10] water sun height 0 daily low 6 1 daily low 6 2 daily low 6 3 daily low 5 4 daily low 6 5 daily med 5 6 daily med 5 7 daily med 6 8 daily med 4 9 daily med 5
Stap 2: Voer de tweerichtings-ANOVA uit.
Vervolgens zullen we de tweeweg-ANOVA uitvoeren met behulp van de anova_lm() functie uit de statsmodels-bibliotheek:
import statsmodels.api as sm from statsmodels.formula.api import ols #perform two-way ANOVA model = ols('height ~ C(water) + C(sun) + C(water):C(sun)', data=df).fit() sm.stats.anova_lm(model, typ=2) sum_sq df F PR(>F) C(water) 8.533333 1.0 16.0000 0.000527 C(sun) 24.866667 2.0 23.3125 0.000002 C(water):C(sun) 2.466667 2.0 2.3125 0.120667 Residual 12.800000 24.0 NaN NaN
Stap 3: Interpreteer de resultaten.
We kunnen de volgende p-waarden zien voor elk van de factoren in de tabel:
- water: p-waarde = 0,000527
- zon: p-waarde = 0,0000002
- water*zon: p-waarde = 0,120667
Omdat de p-waarden voor water en zon beide kleiner zijn dan 0,05, betekent dit dat beide factoren een statistisch significant effect hebben op de planthoogte.
En aangezien de p-waarde voor het interactie-effect (0,120667) niet minder dan 0,05 bedraagt, vertelt dit ons dat er geen significant interactie-effect is tussen blootstelling aan de zon en de waterfrequentie.
Opmerking: Hoewel de ANOVA-resultaten ons vertellen dat de waterfrequentie en blootstelling aan de zon een statistisch significant effect hebben op de planthoogte, zullen we post-hoc tests moeten uitvoeren om precies te bepalen hoe verschillende niveaus van water en zonlicht de planthoogte beïnvloeden.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in Python kunt uitvoeren:
Eenrichtings-ANOVA uitvoeren in Python
Hoe u een drieweg-ANOVA uitvoert in Python