Como realizar uma anova de três vias em python


Uma ANOVA de três fatores é 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 distribuídos por três fatores.

O exemplo a seguir mostra como realizar uma ANOVA de três fatores em Python.

Exemplo: ANOVA de três fatores em Python

Suponha que um pesquisador queira determinar se dois programas de treinamento levam a diferentes melhorias médias na altura do salto entre jogadores universitários de basquete.

O pesquisador suspeita que o gênero e a divisão (Divisão I ou II) também possam afetar a altura do salto, por isso também coleta dados sobre esses fatores.

Seu objetivo é realizar uma ANOVA de três fatores para determinar como o programa de treinamento, o gênero e a divisão afetam a altura do salto.

Use as etapas a seguir para realizar esta ANOVA de três fatores em Python:

Etapa 1: crie os dados

Primeiro, vamos criar um DataFrame do pandas para armazenar os dados:

 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

Etapa 2: execute a ANOVA de três fatores

A seguir, podemos usar a função anova_lm() da biblioteca statsmodels para realizar a ANOVA de três fatores:

 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

Etapa 3: interprete os resultados

A coluna Pr(>F) exibe o valor p para cada fator individual e as interações entre os fatores.

A partir dos resultados, podemos ver que nenhuma das interações entre os três fatores foi estatisticamente significativa.

Podemos também ver que cada um dos três factores (programa, género e divisão) foi estatisticamente significativo com os seguintes valores de p:

  • Valor P do programa : 0,00000000298
  • Valor P de gênero : 0,00000000000171
  • Valor P da divisão : 0,00000185

Concluindo, diríamos que o programa de treinamento, o gênero e a divisão são indicadores significativos do aumento da altura do salto nos jogadores.

Diríamos também que não existem efeitos de interação significativos entre estes três fatores.

Recursos adicionais

Os tutoriais a seguir explicam como ajustar outros modelos ANOVA em Python:

Como realizar ANOVA unidirecional em Python
Como realizar uma ANOVA bidirecional em Python
Como realizar ANOVA de medidas repetidas em Python

Add a Comment

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