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.

Interpretar teste ANOVA

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.

Interpretar teste ANOVA

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:

Exemplo de teste ANOVA unilateral

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:

Comparação parelha

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

Resuma esta postagem com: