anova a 1 fator
A ANOVA é uma técnica baseada em análise de variância usada para comparar médias de várias populações independentes. Cada população é definida por um fator (uma v.a. indepedente) cujos valores definem «grupos», por exemplo, se a «região do país» é o fator, então norte, centro e sul são os grupos fixos (pré-determinados) antes da experiência. Se o fator é uma temperaturapode existir lugar a sorteamento gerando valores de um domínio. Neste caso chama-se de anova de efeitos aleatórios.
exemplos
Quandos os valores da v.a. X são pre-determinada antes da experiência diz-se que é uma anova de efeitos fixos (i.e., grupos fixos).
Assim, fatores fixos, ou efeitos fixos, é quando os tratamentos/grupos/níveis são pré-determinados à partida temos uma experiência com efeitos fixos.
exemplo 1: ANOVA 1 fator - efeitos fixos
Como o objetivo de estudar o efeito do tipo de dieta (X1, variá- vel independente, categorizada) no peso corporal (Y, variável dependente, numérica) de animais de uma determinada espé- cie, foram estudados cinquenta animais distribuídos ao acaso por 5 grupos (5 níveis) onde cada grupo ficou sujeito a um tipo de dieta alimentar.
Assume-se: Peso corporal = função (tipo de dieta)
Conjetura a testar: O peso médio corporal é diferente nos 5 grupos de animais sujeitos às 5 dietas distintas.

exemplo 2: ANOVA 1 fator - efeitos fixos
Quinze amostras de uma espécie de planta foram distribuídas ao acaso por 3 locais distintos (X, variável independente, nominal) e, para cada amostra, foi analisado o conteúdo de fósforo (Y, variável dependente, contínua).
Assume-se Conteúdo de fósforo=função (local)
Objetivo: Avaliar o efeito do local na quantidade média de fósforo na planta.

estatística descritiva na ANOVA
Caixa-de-bigodes comparativas
Diagrama de médias e erros
pressupostos (conceitos)
Uma ANOVA a 1 fator realiza-se quando se têm k grupos de observações independentes (k amostras) sendo as amostras, de cada grupo, independentes entre si.
Para que esse teste seja paramétrico (o melhor mais potente é com a ANOVA paramétrica) então:
O planeamento deve ser equilibrado, isto é, os grupos devem ter a mesma dimensão n.
o número total de observações é N=k \times n
Cada grupo de observações deve ser bem modelado por uma distribuição normal (há auotes com consideram que a amostra no seu todo deve ser bem modelada por uma distribuição normal).
ver ajustamento à normal para procedimentos e conceitos relacionados
A variância das k subpopulações não deve diferir significativamente, isto é, deve existir homogeneidade de variâncias entre grupos.
análise de variância (anova)
MS_G é proporcional à variabilidade da média das observações Y_{i\cdot} em cada grupo. O fator é o principal responsável por esta variabilidade.
MS_E é a possivelmente pequena variabilidade usual dos «erros» num modelo devida natureza dos fenómenos (tudo é processo logo não há duas entidades iguais).
procedimento
ANOVA paramétrica a 1 fator:
- 1. Identificar as populações e hipóteses
A população é vista como k subpopulações.
identificar o fator (X) que divide a população em k subpopulações (k grupos/níveis/tratamentos)
a variável de resposta (Y)
indicar se são efeitos fixos ou aleatórios
escrever as hipóteses
- 2. Estatística descritiva e validação de pressupostos
Útil para se ficar com uma ideia gráfica de qual hipótese será escolhida.
estatística descritiva
boxplot
gráfico de médias e erros
gráficos de IC
validação dos pressupostos
mesma dimensão (planeamento equilibrado)
qqplot normal
Bartlett test (apenas se dados normais)
- 3. Metódo de teste
Não é fácil realizar o teste «à mão» devido aos elevado número de somas e quadrados.
Exemplo de tabela:
Sum of Squares |
df |
Mean Square |
F_{obs} |
valor-p |
|
Between Groups |
SS_G=100.667 |
g-1=2 |
MS_G=50.333 |
26.647 |
0.0 |
Within Groups |
SS_E=17.0 |
g(n-1)=9 |
MS_E=1.889 |
||
Total |
SS_T=117.667 |
ng-1=11 |
Alguns aspetos são apresentados:
Estatística de teste
F para comparação de duas variâncias
Valor observado
aquela big tabela
p-value
p = P(F>fobs)
- 4. Conclusão e Interpretação
Usa-se o método do p-value.
rejeitando H0: existe pelo menos uma média significativamente diferente das outras
não rejeitando H0: as médias não são significativamente diferentes
- 5. Comparação de pares
Apenas para «efeitos fixos».
método de Bonferroni
método de Tukey
Nota: não se aplica a efeitos aleatórios.
R Project
ANOVA paramétrica a 1 fator em R (online):
São 3 grupos (A,B,C) e n=5 observações por grupo fixo:
xxxxxxxxxx
# Introdução das colunas (aqui como linhas):
# "perda_peso" em função do "medicamento"
dados = data.frame(
perda_peso=c(
#11 observações medicamento A
3.0, 3.1, 3.1, 2.9, 3.6, 3.1, 2.8, 3.5, 3.6, 3.1, 2.7,
#11 observações medicamento B
2.9, 2.9, 2.9, 2.1, 2.0, 3.5, 2.9, 3.4, 2.4, 2.6, 2.1,
#11 observações medicamento C
3.1, 3.0, 3.2, 3.1, 3.1, 3.1, 2.7, 3.5, 3.9, 2.6, 2.5),
medicamento=c( rep("A",11), #repetir "A" 11 vezes
rep("B",11), #repetir "B" 11 vezes
rep("C",11) ) #repetir "C" 11 vezes
)
modelo = aov(perda_peso ~ medicamento, data=dados)
summary(modelo)
Verificação dos pressupostos da ANOVA paramétrica a 1 fator:
Caixas de bigodes comparativas
xxxxxxxxxx
# Introdução das colunas (aqui como linhas):
# "perda_peso" em função do "medicamento"
dados = data.frame(
perda_peso=c(
#11 observações medicamento A
3.0, 3.1, 3.1, 2.9, 3.6, 3.1, 2.8, 3.5, 3.6, 3.1, 2.7,
#11 observações medicamento B
2.9, 2.9, 2.9, 2.1, 2.0, 3.5, 2.9, 3.4, 2.4, 2.6, 2.1,
#11 observações medicamento C
3.1, 3.0, 3.2, 3.1, 3.1, 3.1, 2.7, 3.5, 3.9, 2.6, 2.5),
medicamento=c( rep("A",11), #repetir "A" 11 vezes
rep("B",11), #repetir "B" 11 vezes
rep("C",11) ) #repetir "C" 11 vezes
)
# Construir caixas de bigodes comparativas
boxplot( perda_peso ~ medicamento,
data=dados, pch=20,
main="Caixas de bigodes comparativas",
xlab="marca",
ylab="teor",
col="lightgray")
Ajustamento à Normal
xxxxxxxxxx
# Introdução das colunas (aqui como linhas):
# "perda_peso" em função do "medicamento"
dados = data.frame(
perda_peso=c(
#11 observações medicamento A
3.0, 3.1, 3.1, 2.9, 3.6, 3.1, 2.8, 3.5, 3.6, 3.1, 2.7,
#11 observações medicamento B
2.9, 2.9, 2.9, 2.1, 2.0, 3.5, 2.9, 3.4, 2.4, 2.6, 2.1,
#11 observações medicamento C
3.1, 3.0, 3.2, 3.1, 3.1, 3.1, 2.7, 3.5, 3.9, 2.6, 2.5),
medicamento=c( rep("A",11), #repetir "A" 11 vezes
rep("B",11), #repetir "B" 11 vezes
rep("C",11) ) #repetir "C" 11 vezes
)
# Expectável que os pontos se encontrem relativamente próximos da reta.
qqnorm(dados$perda_peso, pch=20, main="Perdas de peso em toda a amostra - Ajustamento à Normal")
#Adiciona uma reta ao QQ_plot da normal
qqline(dados$perda_peso, col="red")
# Via inferencial
shapiro.test(dados$perda_peso)
Homogeneidade de variâncias
xxxxxxxxxx
# Introdução das colunas (aqui como linhas):
# "perda_peso" em função do "medicamento"
dados = data.frame(
perda_peso=c(
#11 observações medicamento A
3.0, 3.1, 3.1, 2.9, 3.6, 3.1, 2.8, 3.5, 3.6, 3.1, 2.7,
#11 observações medicamento B
2.9, 2.9, 2.9, 2.1, 2.0, 3.5, 2.9, 3.4, 2.4, 2.6, 2.1,
#11 observações medicamento C
3.1, 3.0, 3.2, 3.1, 3.1, 3.1, 2.7, 3.5, 3.9, 2.6, 2.5),
medicamento=c( rep("A",11), #repetir "A" 11 vezes
rep("B",11), #repetir "B" 11 vezes
rep("C",11) ) #repetir "C" 11 vezes
)
# Averiguar a homogeneidade de variâncias
# Teste de Bartlett
bartlett.test(perda_peso ~ medicamento, data=dados)
Comparações múltiplas com Método de Tukey (que pares podem ser significativamente diferentes):
xxxxxxxxxx
# Introdução das colunas (aqui como linhas):
# "perda_peso" em função do "medicamento"
dados = data.frame(
perda_peso=c(
#11 observações medicamento A
3.0, 3.1, 3.1, 2.9, 3.6, 3.1, 2.8, 3.5, 3.6, 3.1, 2.7,
#11 observações medicamento B
2.9, 2.9, 2.9, 2.1, 2.0, 3.5, 2.9, 3.4, 2.4, 2.6, 2.1,
#11 observações medicamento C
3.1, 3.0, 3.2, 3.1, 3.1, 3.1, 2.7, 3.5, 3.9, 2.6, 2.5),
medicamento=c( rep("A",11), #repetir "A" 11 vezes
rep("B",11), #repetir "B" 11 vezes
rep("C",11) ) #repetir "C" 11 vezes
)
modelo = aov(perda_peso ~ medicamento, data=dados)
# Post-hoc
# Método de Tukey
TukeyHSD(modelo)
Comparações múltiplas com Bonferroni (que pares podem ser significativamente diferentes):
xxxxxxxxxx
# Introdução das colunas (aqui como linhas):
# "perda_peso" em função do "medicamento"
dados = data.frame(
perda_peso=c(
#11 observações medicamento A
3.0, 3.1, 3.1, 2.9, 3.6, 3.1, 2.8, 3.5, 3.6, 3.1, 2.7,
#11 observações medicamento B
2.9, 2.9, 2.9, 2.1, 2.0, 3.5, 2.9, 3.4, 2.4, 2.6, 2.1,
#11 observações medicamento C
3.1, 3.0, 3.2, 3.1, 3.1, 3.1, 2.7, 3.5, 3.9, 2.6, 2.5),
medicamento=c( rep("A",11), #repetir "A" 11 vezes
rep("B",11), #repetir "B" 11 vezes
rep("C",11) ) #repetir "C" 11 vezes
)
modelo = aov(perda_peso ~ medicamento, data=dados)
#Método de Bonferroni
# NOTA: se se assume igualdade de variâncias
# então pool.sd=T, senão pool.sd=F
pairwise.t.test(dados$perda_peso, dados$medicamento, p.adjust="bonferroni", pool.sd = T)
Outro exemplo:
Começa-se por introduzir os dados num data.frame.
A função rep(a,n) que repete «a» por n vezes auxilia na introdução dos tipos de habitat de cada porco ibérico observado.
dados = data.frame(
habitat=c( rep(1,5),rep(2,5),rep(3,5) ),
peso=c( 45, 53, 57, 48, 60, 72, 75, 85,
81, 74, 65, 61, 51, 55, 63) )
dados
Com o data.frame, invoca-se a função aov para efetuar uma ANOVA, em que o peso é função do habitat peso ~ habitat:
resultado = aov(peso ~ habitat,data=dados)
summary(resultado)