ANOVA: como utilizar e aplicar
Uma das maiores dúvidas de nossos leitores é como utilizar a ANOVA ou até mesmo como verificar se a média entre mais de dois grupos são iguais. Vista como uma generalização do teste t, a ANOVA, abreviação em inglês de Análise de Variância, é amplamente utilizada em experimentos biológicos, agrícolas e diversas outras pesquisas.
Este post é um guia bem simples de como utilizar a chamada One-way ANOVA, nome dado para quando queremos comparar as médias de mais de dois grupos. Vamos passar pela ideia geral, os requisitos para sua utilização, como interpretar o teste de hipótese que a ferramenta realiza e como implementar no R e no Excel.
A ANOVA pode ser utilizada para muitas outras coisas, principalmente em planejamento de experimentos. Se você tem uma boa leitura em inglês, recomendo o artigo da Wikipedia sobre ANOVA.
A ideia por trás da ANOVA
Suponha que temos três amostras independentes de tamanho 100 (n=100) e dispomos o boxplot delas no gráfico na figura abaixo. Além do boxplot, traçamos uma linha auxiliar na horizontal que nos diz qual é a média de todas as 300 observações (3 amostras de 100 observações, 3×100 = 300). Na figura temos dois exemplos: um em que a média das três amostras é diferente (esquerda) e outro em que a média das três amostras é igual (direita).
Note que se as médias das amostras são diferentes, como no caso da figura à esquerda, a diferença entre a média de cada amostra e a média global (a linha cinza horizontal) vai ser grande. Por outro lado, se as médias são iguais, a média de cada grupo/amostra é a mesma que a média global ou muito próximas. Tão próximas que estatisticamente são iguais.
A ideia da ANOVA é justamente verificar o quão distante a média de cada grupo está da média global. Ou seja, em termos de variância, se os grupos possuem a mesma média, a variância entre os grupos deve ser pequena quando comparada com a variância amostral dentro de cada grupo. Caso isto não tenha ficado tão claro para você, visualize a figura acima e pense que se as médias forem estatisticamente iguais as caixas dos boxplots irão conter a média global. Caso contrário, eu rejeito a hipótese de igualdade se uma linha horizontal não pode ser traçada tal que cruze todas as caixas de boxplot.
Mas ATENÇÃO! Demos apenas a ideia da ANOVA, agora para facilitar sua interpretação e visualização. Para realmente utilizar a ferramenta é preciso satisfazer alguns requisitos dispostos a seguir.
O que preciso ter para usar ANOVA
Assim como o teste t, a ANOVA possui algumas restrições para ser usada que são listadas abaixo.
- Os resíduos (observação menos a média) devem ser normais ou próximos da normalidade. Para verificar se suas dados são normais, clique aqui.
- As variâncias de cada amostra devem ser iguais. Caso não seja, é possível padronizar dividindo pela variância amostral de forma a obter variância igual a um em todos os grupos.
- As amostras devem ser independentes.
Como interpretar uma tabela ANOVA
Não entraremos em detalhes do cálculo dos resultados de uma ANOVA, deixamos isso para os cursos de estatística e planejamento de experimentos. O foco deste tópico é como interpretar a tabela ANOVA resultante.
Para o exemplo da esquerda da figura mostrada acima, ou seja, para médias diferentes em cada grupo, temos a seguinte tabela ANOVA nesta saída do R (vamos mostrar na sequência como fazer).
Analysis of Variance Table
Response: valor
Df Sum Sq Mean Sq F value Pr(>F)
grupo 2 1368.65 684.32 697.89 < 2.2e-16 ***
Residuals 297 291.23 0.98
Esta é uma tabela ANOVA comum. A primeira linha corresponde à análise de variância dos grupos/amostras/tratamentos, enquanto que a segunda linha representa a análise de variância dos resíduos. Na primeira coluna temos os graus de liberdade, seguido da soma de quadrados (Sum Sq
), Soma média de quadrados (Mean Sq
) que nada mais é que a soma de quadrados divididos pelos graus de liberdade, Em seguida, temos o valor da estatística F utilizada para realizar o teste de hipótese (F value
) e por último o p-valor (Pr(>F)
).
No fim das contas, o que provavelmente mais importa para você é o p-valor, valor da última coluna. Se o p-valor é abaixo do nível de significância estabelecido, geralmente 0.05 (5%), então existe pelo menos uma diferença significativa entre dois grupos. CUIDADO: observe que eu disse pelo menos uma diferença significativa entre dois grupos, ou seja, um p-valor significativo não quer dizer que a média é diferente em todos os grupos, mas sim que existe pelo menos um grupo de média diferente dos demais. Por isso a importância de se observar os gráficos para verificar qual o grupo diferente.
Para ilustrar também o caso de médias iguais, vejamos a saída da tabela ANOVA para o exemplo mostrado à direita da figura acima.
Analysis of Variance Table
Response: valor
Df Sum Sq Mean Sq F value Pr(>F)
grupo 2 0.32 0.16195 0.1332 0.8753
Residuals 297 361.04 1.21562
Note que o p-valor é bem acima de 0.05. De fato, os grupos tem médias muito parecidas. Tanto que a soma de quadrados (Sum Sq) dos grupos é de 0.32, minúsculo perto dos 361.04 do mesmo correpondente aos resíduos. Como dito anteriormente, se as médias dos grupos são iguais, elas coincidem com a média global e quando calculamos o quão distante as médias de cada grupo estão da média global, temos uma soma de quadrados pequena.
Como implementar no R ou Excel
Para implementar no R é preciso criar um conjunto de dados de duas variáveis: uma com os valores a serem estudados e outra identificando a que grupo aquele valor pertence. Depois basta fazer um ajuste linear pela função lm()
e utilizar a função anova()
para obter a tabela ANOVA. No exemplo abaixo vamos criar os mesmos dados da figura mostrada anteriormente, criar esse conjunto de dados de duas variáveis e construir a tabela ANOVA. O código pode ser simplesmente copiado e colado que você irá obter os mesmos resultados mostrados aqui.
#### Gerar amostras aleatórias
# Médias diferentes
set.seed(14)
am1 <- rnorm(100) + 5
am2 <- rnorm(100) + 7
am3 <- rnorm(100) + 2
diff <- data.frame(valor = c(am1, am2, am3),
grupo = rep(c("g1", "g2", "g3"), each =100))
# Médias iguais
am1 <- rnorm(100) + 4
am2 <- rnorm(100) + 4
am3 <- rnorm(100) + 4
iguais <- data.frame(valor = c(am1, am2, am3),
grupo = rep(c("g1", "g2", "g3"), each =100))
#### Boxplots
par(mfrow = c(1,2))
boxplot(valor~grupo,
data = diff,
col = c("lightyellow", "lightpink", "lightblue"),
main = "médias diferentes")
abline( h = mean(diff$valor),
col = "gray80",
lwd = 2 )
boxplot(valor~grupo,
data = iguais,
col = c("lightyellow", "lightpink", "lightblue"),
main = "médias diferentes")
abline( h = mean(iguais$valor),
col = "gray80",
lwd = 2 )
#### ANOVA
fit.diff <- lm(valor ~ grupo, data = diff)
anova(fit.diff)
fit.iguais <- lm(valor ~ grupo, data = iguais)
anova(fit.iguais)
Para ver como implementar uma ANOVA no Excel, veja aqui neste link do eHow Brasil.