R ANOVA Tutorial: One way & Two way (med eksempler)

Hvad er ANOVA?

Analyse af variation (ANOVA) er en statistisk teknik, der almindeligvis bruges til at studere forskelle mellem to eller flere gruppemiddelvรฆrdier. ANOVA test er centreret om de forskellige kilder til variation i en typisk variabel. ANOVA i R giver primรฆrt bevis for eksistensen af โ€‹โ€‹den gennemsnitlige lighed mellem grupperne. Denne statistiske metode er en udvidelse af t-testen. Den bruges i en situation, hvor faktorvariablen har mere end รฉn gruppe.

Envejs ANOVA

Der er mange situationer, hvor du skal sammenligne gennemsnittet mellem flere grupper. For eksempel vil marketingafdelingen gerne vide, om tre teams har den samme salgsprรฆstation.

  • Hold: Faktor pรฅ 3 niveauer: A, B og C
  • Salg: Et mรฅl for ydeevne

ANOVA-testen kan fortรฆlle, om de tre grupper har lignende prรฆstationer.

For at afklare, om dataene kommer fra samme population, kan du udfรธre en envejs variansanalyse (envejs ANOVA herefter). Denne test, ligesom alle andre statistiske test, giver bevis for, om H0-hypotesen kan accepteres eller forkastes.

Hypotese i envejs ANOVA-test

  • H0: Middelvรฆrdierne mellem grupperne er identiske
  • H3: I det mindste er gennemsnittet af en gruppe anderledes

Med andre ord indebรฆrer H0-hypotesen, at der ikke er tilstrรฆkkelig evidens til at bevise, at middelvรฆrdien af โ€‹โ€‹gruppen (faktoren) er forskellig fra en anden.

Denne test ligner t-testen, selvom ANOVA-testen anbefales i situationer med mere end 2 grupper. Bortset fra det giver t-testen og ANOVA lignende resultater.

Forudsรฆtninger

Vi antager, at hver faktor er tilfรฆldigt udvalgt, uafhรฆngig og kommer fra en normalfordelt population med ukendte, men lige store varianser.

Fortolk ANOVA test

F-statistikken bruges til at teste, om data er fra signifikant forskellige populationer, dvs. forskellige stikprรธvegennemsnit.

For at beregne F-statistikken skal du dividere variation mellem grupper over variation inden for gruppen.

mellem-gruppe Variabilitet afspejler forskellene mellem grupperne i hele befolkningen. Se pรฅ de to grafer nedenfor for at forstรฅ begrebet mellem-gruppe-varians.

Den venstre graf viser meget lidt variation mellem de tre grupper, og det er meget sandsynligt, at de tre middel har en tendens til samlet middelvรฆrdi (dvs. middelvรฆrdi for de tre grupper).

Den hรธjre graf plotter tre fordelinger langt fra hinanden, og ingen af โ€‹โ€‹dem overlapper hinanden. Der er stor chance for, at forskellen mellem det samlede gennemsnit og gruppegennemsnittet vil vรฆre stor.

Fortolk ANOVA test

inden for gruppen variabilitet tager hรธjde for forskellen mellem grupperne. Variationen kommer fra de enkelte observationer; nogle punkter kan vรฆre helt anderledes end gruppen betyder. Det inden for gruppen variabilitet opfanger denne effekt og henviser til prรธveudtagningsfejlen.

For visuelt at forstรฅ konceptet inden for gruppevariabilitet, se pรฅ grafen nedenfor.

Den venstre del plotter fordelingen af โ€‹โ€‹tre forskellige grupper. Du รธgede spredningen af โ€‹โ€‹hver prรธve, og det er tydeligt, at den individuelle varians er stor. F-testen vil falde, hvilket betyder, at du har tendens til at acceptere nulhypotesen

Den hรธjre del viser nรธjagtig de samme prรธver (identisk gennemsnit), men med lavere variabilitet. Det fรธrer til en forรธgelse af F-testen og tenderer til fordel for den alternative hypotese.

Fortolk ANOVA test

Du kan bruge begge mรฅl til at konstruere F-statistikken. Det er meget intuitivt at forstรฅ F-statistikken. Hvis tรฆlleren stiger, betyder det, at variabiliteten mellem grupper er hรธj, og det er sandsynligt, at grupperne i stikprรธven er trukket fra helt forskellige fordelinger.

En lav F-statistik indikerer med andre ord ringe eller ingen signifikant forskel mellem gruppens gennemsnit.

Eksempel Envejs ANOVA-test

Du vil bruge giftdatasรฆttet til at implementere envejs ANOVA-testen. Datasรฆttet indeholder 48 rรฆkker og 3 variabler:

  • Tid: Dyrets overlevelsestid
  • gift: Type brugt gift: faktorniveau: 1,2 og 3
  • behandle: Anvendt behandlingstype: faktorniveau: 1,2 og 3

Fรธr du begynder at beregne ANOVA-testen, skal du forberede dataene som fรธlger:

  • Trin 1: Importer dataene
  • Trin 2: Fjern unรธdvendig variabel
  • Trin 3: Konverter den variable gift som bestilt niveau
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)

Output:

## 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, ...		

Vores mรฅl er at teste fรธlgende antagelse:

  • H0: Der er ingen forskel i overlevelsestidsgennemsnit mellem grupperne
  • H3: Overlevelsestidsgennemsnittet er forskelligt for mindst รฉn gruppe.

Med andre ord vil du gerne vide, om der er en statistisk forskel mellem middelvรฆrdien af โ€‹โ€‹overlevelsestiden i henhold til typen af โ€‹โ€‹gift, der er givet til marsvinet.

Du vil fortsรฆtte som fรธlger:

  • Trin 1: Tjek formatet af den variable gift
  • Trin 2: Udskriv den sammenfattende statistik: antal, middelvรฆrdi og standardafvigelse
  • Trin 3: Plot et boksplot
  • Trin 4: Beregn envejs ANOVA-testen
  • Trin 5: Kรธr en parvis t-test

Trin 1) Du kan kontrollere niveauet af giften med fรธlgende kode. Du bรธr se tre tegnvรฆrdier, fordi du konverterer dem i faktor med det muterede udsagnsord.

levels(df$poison)

Output:

## [1] "1" "2" "3"

Trin 2) Du beregner middelvรฆrdien og standardafvigelsen.

df % > %
	group_by(poison) % > %
	summarise(
		count_poison = n(),
		mean_time = mean(time, na.rm = TRUE),
		sd_time = sd(time, na.rm = TRUE)
	)

Output:

## 
# 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

Trin 3) I trin tre kan du grafisk tjekke, om der er forskel pรฅ fordelingen. Bemรฆrk, at du inkluderer den rystede prik.

ggplot(df, aes(x = poison, y = time, fill = poison)) +
    geom_boxplot() +
    geom_jitter(shape = 15,
        color = "steelblue",
        position = position_jitter(0.21)) +
    theme_classic()

Output:

Envejs ANOVA-testeksempel

Trin 4) Du kan kรธre envejs ANOVA-testen med kommandoen aov. Den grundlรฆggende syntaks for en ANOVA-test er:

aov(formula, data)
Arguments:			
- formula: The equation you want to estimate
- data: The dataset used	

Formlens syntaks er:

y ~ X1+ X2+...+Xn # X1 +  X2 +... refers to the independent variables
y ~ . # use all the remaining variables as independent variables

Du kan besvare vores spรธrgsmรฅl: Er der nogen forskel i overlevelsestiden mellem marsvinet, ved at kende typen af โ€‹โ€‹gift, der gives.

Bemรฆrk, at det tilrรฅdes at gemme modellen og bruge funktionen summary() for at fรฅ et bedre print af resultaterne.

anova_one_way <- aov(time~poison, data = df)
summary(anova_one_way)

Kode Forklaring

  • aov(tid ~ gift, data = df): Kรธr ANOVA-testen med fรธlgende formel
  • summary(anova_one_way): Udskriv resumรฉet af testen

Output:

##             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

P-vรฆrdien er lavere end den sรฆdvanlige tรฆrskel pรฅ 0.05. Du er sikker pรฅ at sige, at der er en statistisk forskel mellem grupperne, angivet med "*".

Parvis sammenligning

Envejs ANOVA-testen informerer ikke om, hvilken gruppe der har et andet gennemsnit. I stedet kan du udfรธre en Tukey-test med funktionen TukeyHSD().

TukeyHSD(anova_one_way)

Output:

Parvis sammenligning

To-vejs ANOVA

En tovejs ANOVA-test tilfรธjer en anden gruppevariabel til formlen. Den er identisk med envejs ANOVA-testen, selvom formlen รฆndres lidt:

y=x1+x2

med er en kvantitativ variabel og og er kategoriske variable.

Hypotese i to-vejs ANOVA test

  • H0: Middelvรฆrdierne er ens for begge variabler (dvs. faktorvariabel)
  • H3: Middelvรฆrdierne er forskellige for begge variable

Du tilfรธjer behandlingsvariabel til vores model. Denne variabel angiver den behandling, der gives til marsvinet. Du er interesseret i at se, om der er en statistisk afhรฆngighed mellem giften og behandlingen til marsvinet.

Vi justerer vores kode ved at tilfรธje treat med den anden uafhรฆngige variabel.

anova_two_way <- aov(time~poison + treat, data = df)
summary(anova_two_way)

Output:

##             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                    
## ---

Du kan konkludere, at bรฅde gift og godbid er statistisk forskellige fra 0. Du kan afvise NULL-hypotesen og bekrรฆfte, at รฆndring af behandlingen eller giften pรฅvirker overlevelsestidspunktet.

Resumรฉ

Vi kan opsummere testen i nedenstรฅende tabel:

Test Kode Hypotese P-vรฆrdi
Envejs ANOVA
aov(y ~ X, data = df)
H3: Gennemsnit er forskelligt for mindst รฉn gruppe 0.05
Parvis
TukeyHSD(ANOVA summary)
0.05
Tovejs ANOVA
aov(y ~ X1 + X2, data = df)
H3: Gennemsnit er forskelligt for begge grupper 0.05

Opsummer dette indlรฆg med: