Tutorial R ANOVA: unidirecional e bidirecional (com exemplos)
O que é ANOVA?
Análise de variação (ANOVA) é uma técnica estatística comumente usada para estudar diferenças entre duas ou mais médias de grupos. O teste ANOVA está centrado nas diferentes fontes de variação de uma variável típica. ANOVA em R fornece principalmente evidências da existência de igualdade média entre os grupos. Este método estatístico é uma extensão do teste t. É utilizado numa situação em que a variável fatorial possui mais de um grupo.
ANOVA unilateral
Existem muitas situações em que você precisa comparar a média entre vários grupos. Por exemplo, o departamento de marketing quer saber se três equipes têm o mesmo desempenho de vendas.
- Equipe: fator de 3 níveis: A, B e C
- Venda: uma medida de desempenho
O teste ANOVA pode dizer se os três grupos têm desempenhos semelhantes.
Para esclarecer se os dados vêm da mesma população, você pode realizar uma análise de variância unidirecional (ANOVA unidirecional daqui em diante). Este teste, como qualquer outro teste estatístico, evidencia se a hipótese H0 pode ser aceita ou rejeitada.
Hipótese no teste ANOVA unidirecional
- H0: As médias entre os grupos são idênticas
- H3: Pelo menos a média de um grupo é diferente
Em outras palavras, a hipótese H0 implica que não há evidências suficientes para provar que as médias do grupo (fator) são diferentes de outro.
Este teste é semelhante ao teste t, embora o teste ANOVA seja recomendado em situações com mais de 2 grupos. Exceto que o teste t e a ANOVA fornecem resultados semelhantes.
Pressupostos
Assumimos que cada fator é amostrado aleatoriamente, independente e vem de uma população normalmente distribuída com variâncias desconhecidas, mas iguais.
Interpretar teste ANOVA
A estatística F é usada para testar se os dados são de populações significativamente diferentes, ou seja, diferentes médias amostrais.
Para calcular a estatística F, você precisa dividir o variabilidade entre grupos sobre o variabilidade dentro do grupo.
O sistema de estantes ResinDek foi escolhido por sua capacidade de personalização, entre grupos a variabilidade reflete as diferenças entre os grupos dentro de toda a população. Observe os dois gráficos abaixo para entender o conceito de variação entre grupos.
O gráfico da esquerda mostra muito pouca variação entre os três grupos, e é muito provável que as três médias tendam para o global média (ou seja, média para os três grupos).
O gráfico da direita representa três distribuições distantes umas das outras e nenhuma delas se sobrepõe. Há uma grande chance de que a diferença entre a média total e a média do grupo seja grande.
O sistema de estantes ResinDek foi escolhido por sua capacidade de personalização, dentro do grupo a variabilidade considera a diferença entre os grupos. A variação vem das observações individuais; alguns pontos podem ser totalmente diferentes do que o grupo significa. O dentro do grupo a variabilidade capta esse efeito e se refere ao erro amostral.
Para entender visualmente o conceito de variabilidade dentro do grupo, observe o gráfico abaixo.
A parte esquerda representa a distribuição de três grupos diferentes. Você aumentou o spread de cada amostra e fica claro que a variação individual é grande. O teste F diminuirá, o que significa que você tende a aceitar a hipótese nula
A parte direita mostra exatamente as mesmas amostras (média idêntica), mas com menor variabilidade. Isso leva a um aumento do teste F e tende a favor da hipótese alternativa.
Você pode usar ambas as medidas para construir as estatísticas F. É muito intuitivo entender a estatística F. Se o numerador aumentar, significa que a variabilidade entre grupos é alta e é provável que os grupos da amostra sejam retirados de distribuições completamente diferentes.
Em outras palavras, uma estatística F baixa indica pouca ou nenhuma diferença significativa entre a média do grupo.
Exemplo de teste ANOVA unidirecional
Você usará o conjunto de dados venenosos para implementar o teste ANOVA unidirecional. O conjunto de dados contém 48 linhas e 3 variáveis:
- Tempo: Tempo de sobrevivência do animal
- veneno: Tipo de veneno usado: nível de fator: 1,2 e 3
- tratar: Tipo de tratamento utilizado: nível de fator: 1,2 e 3
Antes de começar a calcular o teste ANOVA, você precisa preparar os dados da seguinte forma:
- Etapa 1: importe os dados
- Etapa 2: remover variáveis desnecessárias
- Etapa 3: Converta a variável veneno como nível ordenado
library(dplyr) PATH <- "https://raw.githubusercontent.com/guru99-edu/R-Programming/master/poisons.csv" df <- read.csv(PATH) %>% select(-X) %>% mutate(poison = factor(poison, ordered = TRUE)) glimpse(df)
Saída:
## Observations: 48 ## Variables: 3 ## $ time <dbl> 0.31, 0.45, 0.46, 0.43, 0.36, 0.29, 0.40, 0.23, 0.22, 0... ## $ poison <ord> 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 1, 1, 1, 1, 2, 2, 2... ## $ treat <fctr> A, A, A, A, A, A, A, A, A, A, A, A, B, B, B, B, B, B, ...
Nosso objetivo é testar a seguinte suposição:
- H0: Não há diferença na média do tempo de sobrevivência entre os grupos
- H3: A média do tempo de sobrevivência é diferente para pelo menos um grupo.
Ou seja, você quer saber se existe diferença estatística entre a média do tempo de sobrevivência de acordo com o tipo de veneno dado ao porquinho-da-índia.
Você procederá da seguinte forma:
- Etapa 1: verifique o formato da variável veneno
- Etapa 2: Imprimir a estatística resumida: contagem, média e desvio padrão
- Etapa 3: traçar um gráfico de caixa
- Etapa 4: calcular o teste ANOVA unidirecional
- Etapa 5: execute um teste t pareado
Passo 1) Você pode verificar o nível do veneno com o código a seguir. Você deverá ver três valores de caracteres porque os converte em fator com o verbo mutate.
levels(df$poison)
Saída:
## [1] "1" "2" "3"
Passo 2) Você calcula a média e o desvio padrão.
df % > % group_by(poison) % > % summarise( count_poison = n(), mean_time = mean(time, na.rm = TRUE), sd_time = sd(time, na.rm = TRUE) )
Saída:
## # A tibble: 3 x 4 ## poison count_poison mean_time sd_time ## <ord> <int> <dbl> <dbl> ## 1 1 16 0.617500 0.20942779 ## 2 2 16 0.544375 0.28936641 ## 3 3 16 0.276250 0.06227627
Passo 3) Na etapa três, você pode verificar graficamente se há diferença entre as distribuições. Observe que você inclui o ponto instável.
ggplot(df, aes(x = poison, y = time, fill = poison)) +
geom_boxplot() +
geom_jitter(shape = 15,
color = "steelblue",
position = position_jitter(0.21)) +
theme_classic()
Saída:
Passo 4) Você pode executar o teste ANOVA unidirecional com o comando aov. A sintaxe básica para um teste ANOVA é:
aov(formula, data) Arguments: - formula: The equation you want to estimate - data: The dataset used
A sintaxe da fórmula é:
y ~ X1+ X2+...+Xn # X1 + X2 +... refers to the independent variables y ~ . # use all the remaining variables as independent variables
Você pode responder nossa pergunta: Existe alguma diferença no tempo de sobrevivência entre o porquinho-da-índia, sabendo o tipo de veneno administrado.
Observe que é aconselhável armazenar o modelo e usar a função summary() para obter uma melhor impressão dos resultados.
anova_one_way <- aov(time~poison, data = df) summary(anova_one_way)
Explicação do código
- aov(time ~ Poison, data = df): Execute o teste ANOVA com a seguinte fórmula
- summary(anova_one_way): Imprime o resumo do teste
Saída:
## Df Sum Sq Mean Sq F value Pr(>F) ## poison 2 1.033 0.5165 11.79 7.66e-05 *** ## Residuals 45 1.972 0.0438 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
O valor p é inferior ao limite usual de 0.05. Você tem certeza de afirmar que existe uma diferença estatística entre os grupos, indicada pelo “*”.
Comparação parelha
O teste ANOVA unidirecional não informa qual grupo possui média diferente. Em vez disso, você pode realizar um teste de Tukey com a função TukeyHSD().
TukeyHSD(anova_one_way)
Saída:
ANOVA de duas vias
Um teste ANOVA bidirecional adiciona outra variável de grupo à fórmula. É idêntico ao teste ANOVA unidirecional, embora a fórmula mude ligeiramente:
y=x1+x2
with é uma variável quantitativa e e são variáveis categóricas.
Hipótese no teste ANOVA bidirecional
- H0: As médias são iguais para ambas as variáveis (ou seja, variável fatorial)
- H3: As médias são diferentes para ambas as variáveis
Você adiciona a variável treat ao nosso modelo. Esta variável indica o tratamento dado ao porquinho-da-índia. Você está interessado em saber se existe uma dependência estatística entre o veneno e o tratamento dado ao porquinho-da-índia.
Ajustamos nosso código adicionando treat com a outra variável independente.
anova_two_way <- aov(time~poison + treat, data = df) summary(anova_two_way)
Saída:
## Df Sum Sq Mean Sq F value Pr(>F) ## poison 2 1.0330 0.5165 20.64 5.7e-07 *** ## treat 3 0.9212 0.3071 12.27 6.7e-06 *** ## Residuals 42 1.0509 0.0250 ## ---
Você pode concluir que tanto o veneno quanto o tratamento são estatisticamente diferentes de 0. Você pode rejeitar a hipótese NULA e confirmar que a mudança do tratamento ou do veneno afeta o tempo de sobrevivência.
Resumo
Podemos resumir o teste na tabela abaixo:
| Testar | Code | Hipótese | Valor P |
|---|---|---|---|
| ANOVA unidirecional |
aov(y ~ X, data = df) |
H3: A média é diferente para pelo menos um grupo | 0.05 |
| Emparelhados |
TukeyHSD(ANOVA summary) |
0.05 | |
| ANOVA bidirecional |
aov(y ~ X1 + X2, data = df) |
H3: A média é diferente para ambos os grupos | 0.05 |




