Como realizar uma anova bidirecional em python
Uma ANOVA bidirecional é usada para determinar se há ou não uma diferença estatisticamente significativa entre as médias de três ou mais grupos independentes que foram divididos em dois fatores.
O objetivo de uma ANOVA bidirecional é determinar o impacto de dois fatores em uma variável de resposta e determinar se existe ou não uma interação entre os dois fatores na variável de resposta.
Este tutorial explica como realizar uma ANOVA bidirecional em Python.
Exemplo: ANOVA bidirecional em Python
Um botânico quer saber se o crescimento das plantas é influenciado pela exposição à luz solar e pela frequência de rega. Ela planta 30 sementes e deixa crescer por dois meses em diferentes condições de exposição solar e frequência de rega. Depois de dois meses, ela registra a altura de cada planta, em centímetros.
Use as etapas a seguir para realizar uma ANOVA bidirecional para determinar se a frequência de irrigação e a exposição ao sol têm um efeito significativo no crescimento das plantas e para determinar se há um efeito de interação entre a frequência de irrigação e a exposição ao sol. rega e exposição ao sol.
Passo 1: Insira os dados.
Primeiro, criaremos um DataFrame do pandas que contém as três variáveis a seguir:
- água: quantas vezes cada planta foi regada: diariamente ou semanalmente
- sol: quantidade de exposição solar que cada planta recebeu: baixa, média ou alta
- altura: a altura de cada planta (em polegadas) após dois meses
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
Etapa 2: execute a ANOVA bidirecional.
A seguir, realizaremos a ANOVA bidirecional usando a função anova_lm() da biblioteca statsmodels:
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
Etapa 3: interprete os resultados.
Podemos ver os seguintes valores p para cada um dos fatores da tabela:
- água: valor p = 0,000527
- sol: valor p = 0,0000002
- água*sol: valor p = 0,120667
Como os valores p para água e sol são inferiores a 0,05, isso significa que ambos os fatores têm um efeito estatisticamente significativo na altura das plantas.
E como o valor p para o efeito de interação (0,120667) não é inferior a 0,05, isso nos diz que não há efeito de interação significativo entre a exposição ao sol e a frequência de rega.
Nota: Embora os resultados da ANOVA nos digam que a frequência de rega e a exposição ao sol têm um efeito estatisticamente significativo na altura das plantas, precisaremos realizar testes post-hoc para determinar exatamente como os diferentes níveis de água e luz solar afetam a altura das plantas.
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras tarefas comuns em Python:
Como realizar ANOVA unidirecional em Python
Como realizar uma ANOVA de três vias em Python