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

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *