Como realizar uma anova de três fatores em r


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 R.

Exemplo: ANOVA de três fatores em R

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.

Siga as etapas a seguir para realizar esta ANOVA de três fatores em R:

Etapa 1: crie os dados

Primeiro, vamos criar um quadro de dados para armazenar os dados:

 #create dataset
df <- data. frame (program=rep(c(1, 2), each= 20 ),
                 gender=rep(c(' M ', ' F '), each= 10 , times= 2 ),
                 division=rep(c(1, 2), each= 5 , times= 4 ),
                 height=c(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 six rows of dataset
head(df)

  program gender division height
1 1 M 1 7
2 1 M 1 7
3 1 M 1 8
4 1 M 1 8
5 1 M 1 7
6 1 M 2 6

Etapa 2: visualizar estatísticas descritivas

Antes de realizar a ANOVA de três fatores, podemos usar o dplyr para resumir rapidamente o aumento médio da altura do salto agrupado por programa de treinamento, gênero e divisão:

 library (dplyr)

#calculate mean jumping height increase grouped by program, gender, and division
df %>%
  group_by(program, gender, division) %>%
  summarize(mean_height = mean(height))

# A tibble: 8 x 4
# Groups: program, gender [4]
  program gender division mean_height
                 
1 1 F 1 4.6
2 1 F 2 3.2
3 1 M 1 7.4
4 1 M 2 5.6
5 2 F 1 2.6
6 2 F 2 1.4
7 2 M 1 5.2
8 2 M 2 4  

Veja como interpretar o resultado:

  • O aumento médio na altura do salto para as mulheres da Divisão I que usaram o Programa de Treinamento 1 foi de 4,6 polegadas .
  • O aumento médio na altura do salto entre as mulheres da Divisão II que usaram o Programa de Treinamento 1 foi de 3,2 polegadas .
  • O aumento médio na altura do salto entre os homens da Divisão I que usaram o Programa de Treinamento 1 foi de 7,4 polegadas .

E assim por diante.

Etapa 3: execute a ANOVA de três fatores

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

 #perform three-way ANOVA
model <- aov(height ~ program * gender * division, data=df)

#view summary of three-way ANOVA
summary(model)

                        Df Sum Sq Mean Sq F value Pr(>F)    
program 1 36.1 36.10 65.636 2.98e-09 ***
gender 1 67.6 67.60 122.909 1.71e-12 ***
division 1 19.6 19.60 35.636 1.19e-06 ***
program:gender 1 0.0 0.00 0.000 1.000    
program:division 1 0.4 0.40 0.727 0.400    
gender:division 1 0.1 0.10 0.182 0.673    
program:gender:division 1 0.1 0.10 0.182 0.673    
Residuals 32 17.6 0.55                     
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

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.

Agora podemos usar dplyr novamente para encontrar o aumento médio da altura do salto para programa, gênero e divisão separadamente:

 library (dplyr)

#find mean jumping increase by program
df %>%
  group_by(program) %>%
  summarize(mean_height = mean(height))

# A tibble: 2 x 2
  program mean_height
           
1 1 5.2
2 2 3.3

#find mean jumping increase by gender
df %>%
  group_by(gender) %>%
  summarize(mean_height = mean(height))

# A tibble: 2 x 2
  gender mean_height
          
1 F 2.95
2M 5.55

#find mean jumping increase by division
df %>%
group_by(division) %>%
summarize(mean_height = mean(height))

# A tibble: 2 x 2
  division mean_height
            
1 1 4.95
2 2 3.55

Pelo resultado podemos observar o seguinte:

  • O aumento médio na altura do salto para indivíduos que usaram o programa de treinamento 1 ( 5,2 polegadas ) foi maior que o aumento médio para indivíduos que usaram o programa de treinamento 2 (3,3 polegadas ).
  • O aumento médio na altura do salto para os homens ( 5,55 polegadas ) foi maior do que o aumento médio para as mulheres (2,95 polegadas ).
  • O aumento médio na altura do salto entre os jogadores da Divisão 1 ( 4,95 polegadas ) foi maior do que o aumento médio entre os jogadores da Divisão 2 (3,55 polegadas ).

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 R:

Como realizar ANOVA unidirecional em R
Como realizar ANOVA bidirecional em R

Add a Comment

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