Tutorial R ANOVA: unidirezionale e bidirezionale (con esempi)
Cos'รจ l'ANOVA?
Analisi della varianza (ANOVA) รจ una tecnica statistica, comunemente usata per studiare le differenze tra due o piรน medie di gruppo. Il test ANOVA รจ incentrato sulle diverse fonti di variazione in una variabile tipica. L'ANOVA in R fornisce principalmente la prova dell'esistenza dell'uguaglianza media tra i gruppi. Questo metodo statistico รจ un'estensione del t-test. Viene usato in una situazione in cui la variabile fattore ha piรน di un gruppo.
ANOVA a senso unico
Esistono molte situazioni in cui รจ necessario confrontare la media tra piรน gruppi. Ad esempio, il reparto marketing vuole sapere se tre team hanno le stesse prestazioni di vendita.
- Squadra: fattore di livello 3: A, B e C
- Vendita: una misura della performance
Il test ANOVA puรฒ stabilire se i tre gruppi hanno prestazioni simili.
Per chiarire se i dati provengono dalla stessa popolazione, รจ possibile eseguire a analisi della varianza unidirezionale (di seguito ANOVA unidirezionale). Questo test, come qualsiasi altro test statistico, fornisce prove se l'ipotesi H0 puรฒ essere accettata o rifiutata.
Ipotesi nel test ANOVA unidirezionale
- H0: le medie tra i gruppi sono identiche
- H3: Almeno, la media di un gruppo รจ diversa
In altre parole, l'ipotesi H0 implica che non ci siano prove sufficienti per dimostrare che la media del gruppo (fattore) รจ diversa da un'altra.
Questo test รจ simile al t-test, sebbene il test ANOVA sia raccomandato in situazioni con piรน di 2 gruppi. Tranne per il fatto che il t-test e l'ANOVA forniscono risultati simili.
Ipotesi
Assumiamo che ciascun fattore sia campionato casualmente, indipendente e provenga da una popolazione distribuita normalmente con varianze sconosciute ma uguali.
Interpretare il test ANOVA
La statistica F viene utilizzata per verificare se i dati provengono da popolazioni significativamente diverse, ovvero medie campionarie diverse.
Per calcolare la statistica F, รจ necessario dividere il variabilitร tra gruppi sulla variabilitร allโinterno del gruppo.
Migliori tra gruppi la variabilitร riflette le differenze tra i gruppi allโinterno dellโintera popolazione. Guarda i due grafici seguenti per comprendere il concetto di varianza tra gruppi.
Il grafico a sinistra mostra pochissime variazioni tra i tre gruppi, ed รจ molto probabile che le tre medie tendano a coincidere complessivo media (cioรจ media per i tre gruppi).
Il grafico di destra traccia tre distribuzioni distanti tra loro e nessuna di esse si sovrappone. C'รจ un'alta probabilitร che la differenza tra la media totale e la media dei gruppi sia ampia.
Migliori all'interno del gruppo la variabilitร considera la differenza tra i gruppi. La variazione deriva dalle singole osservazioni; alcuni punti potrebbero essere totalmente diversi da quelli indicati dal gruppo. IL all'interno del gruppo la variabilitร coglie questo effetto e si riferisce all'errore di campionamento.
Per comprendere visivamente il concetto di variabilitร all'interno del gruppo, guarda il grafico qui sotto.
La parte sinistra traccia la distribuzione di tre diversi gruppi. Hai aumentato la diffusione di ciascun campione ed รจ chiaro che la varianza individuale รจ ampia. Il test F diminuirร , il che significa che tenderai ad accettare l'ipotesi nulla
La parte destra mostra esattamente gli stessi campioni (media identica) ma con una variabilitร inferiore. Porta ad un aumento del test F e tende a favorire l'ipotesi alternativa.
ร possibile utilizzare entrambe le misure per costruire le statistiche F. ร molto intuitivo comprendere la statistica F. Se il numeratore aumenta, significa che la variabilitร tra gruppi รจ elevata ed รจ probabile che i gruppi del campione provengano da distribuzioni completamente diverse.
In altre parole, una statistica F bassa indica una differenza significativa minima o nulla rispetto alla media del gruppo.
Esempio di test ANOVA unidirezionale
Utilizzerai il dataset poison per implementare il test ANOVA unidirezionale. Il dataset contiene 48 righe e 3 variabili:
- Tempo: tempo di sopravvivenza dell'animale
- veleno: Tipo di veleno utilizzato: livello di fattore: 1,2 e 3
- trattare: Tipo di trattamento utilizzato: livello di fattore: 1,2 e 3
Prima di iniziare a calcolare il test ANOVA, รจ necessario preparare i dati come segue:
- Passaggio 1: importa i dati
- Passaggio 2: rimuovere la variabile non necessaria
- Passaggio 3: converti la variabile veleno come livello ordinato
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)
Produzione:
## 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, ...
Il nostro obiettivo รจ testare la seguente ipotesi:
- H0: non vi รจ alcuna differenza nella media del tempo di sopravvivenza tra i gruppi
- H3: La media del tempo di sopravvivenza รจ diversa per almeno un gruppo.
In altre parole, si vuole sapere se esiste una differenza statistica tra la media del tempo di sopravvivenza in base al tipo di veleno somministrato alla cavia.
Procederai come segue:
- Passaggio 1: controlla il formato della variabile veleno
- Passaggio 2: stampare la statistica riassuntiva: conteggio, media e deviazione standard
- Passaggio 3: tracciare un box plot
- Passaggio 4: calcolare il test ANOVA unidirezionale
- Passaggio 5: eseguire un test t a coppie
Passo 1) Puoi controllare il livello del veleno con il seguente codice. Dovresti vedere tre valori di caratteri perchรฉ li converti in fattore con il verbo mutate.
levels(df$poison)
Produzione:
## [1] "1" "2" "3"
Passo 2) Si calcola la media e la deviazione standard.
df % > % group_by(poison) % > % summarise( count_poison = n(), mean_time = mean(time, na.rm = TRUE), sd_time = sd(time, na.rm = TRUE) )
Produzione:
## # 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) Nel passaggio tre, puoi verificare graficamente se c'รจ una differenza tra la distribuzione. Tieni presente che includi il punto tremolante.
ggplot(df, aes(x = poison, y = time, fill = poison)) +
geom_boxplot() +
geom_jitter(shape = 15,
color = "steelblue",
position = position_jitter(0.21)) +
theme_classic()
Produzione:
Passo 4) Puoi eseguire il test ANOVA unidirezionale con il comando aov. La sintassi di base per un test ANOVA รจ:
aov(formula, data) Arguments: - formula: The equation you want to estimate - data: The dataset used
La sintassi della formula รจ:
y ~ X1+ X2+...+Xn # X1 + X2 +... refers to the independent variables y ~ . # use all the remaining variables as independent variables
Puoi rispondere alla nostra domanda: c'รจ qualche differenza nel tempo di sopravvivenza della cavia, conoscendo il tipo di veleno somministrato.
Si noti che si consiglia di memorizzare il modello e utilizzare la funzione summary() per ottenere una stampa migliore dei risultati.
anova_one_way <- aov(time~poison, data = df) summary(anova_one_way)
Spiegazione del codice
- aov(time ~ poison, data = df): esegui il test ANOVA con la seguente formula
- summary(anova_one_way): Stampa il riepilogo del test
Produzione:
## 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
Il valore p รจ inferiore alla soglia abituale di 0.05. Sei sicuro di dire che esiste una differenza statistica tra i gruppi, indicata da "*".
Confronto a coppie
Il test ANOVA unidirezionale non informa quale gruppo ha una media diversa. Invece, puoi eseguire un test Tukey con la funzione TukeyHSD().
TukeyHSD(anova_one_way)
Produzione:
ANOVA a due vie
Un test ANOVA bidirezionale aggiunge un'altra variabile di gruppo alla formula. ร identico al test ANOVA unidirezionale, sebbene la formula cambi leggermente:
y=x1+x2
con รจ una variabile quantitativa e e sono variabili categoriali.
Ipotesi nel test ANOVA bidirezionale
- H0: le medie sono uguali per entrambe le variabili (ovvero, variabile fattore)
- H3: Le medie sono diverse per entrambe le variabili
Aggiungi la variabile Treat al nostro modello. Questa variabile indica il trattamento riservato alla cavia. Ti interessa vedere se esiste una dipendenza statistica tra il veleno e il trattamento riservato alla cavia.
Regoliamo il nostro codice aggiungendo Treat con l'altra variabile indipendente.
anova_two_way <- aov(time~poison + treat, data = df) summary(anova_two_way)
Produzione:
## 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 ## ---
Puoi concludere che sia il veleno che il trattamento sono statisticamente diversi da 0. Puoi rifiutare l'ipotesi NULL e confermare che la modifica del trattamento o del veleno influisce sul tempo di sopravvivenza.
Sintesi
Possiamo riassumere il test nella tabella seguente:
| Test | Code | Ipotesi | P-value |
|---|---|---|---|
| ANOVA unidirezionale |
aov(y ~ X, data = df) |
H3: la media รจ diversa per almeno un gruppo | 0.05 |
| a coppie |
TukeyHSD(ANOVA summary) |
0.05 | |
| ANOVA bidirezionale |
aov(y ~ X1 + X2, data = df) |
H3: La media รจ diversa per entrambi i gruppi | 0.05 |




