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

Vad รคr ANOVA?

Variansanalys (ANOVA) รคr en statistisk teknik som vanligtvis anvรคnds fรถr att studera skillnader mellan tvรฅ eller flera gruppmedelvรคrden. ANOVA-testet รคr centrerat pรฅ de olika kรคllorna till variation i en typisk variabel. ANOVA i R ger i fรถrsta hand bevis pรฅ fรถrekomsten av den genomsnittliga jรคmlikheten mellan grupperna. Denna statistiska metod รคr en fรถrlรคngning av t-testet. Den anvรคnds i en situation dรคr faktorvariabeln har mer รคn en grupp.

Envรคgs ANOVA

Det finns mรฅnga situationer dรคr du behรถver jรคmfรถra medelvรคrdet mellan flera grupper. Marknadsavdelningen vill till exempel veta om tre team har samma fรถrsรคljningsprestanda.

  • Lag: Faktor pรฅ 3 nivรฅer: A, B och C
  • Fรถrsรคljning: Ett mรฅtt pรฅ prestanda

ANOVA-testet kan avgรถra om de tre grupperna har liknande prestationer.

Fรถr att klargรถra om uppgifterna kommer frรฅn samma population kan du utfรถra en enkelriktad variansanalys (envรคgs ANOVA hรคrefter). Detta test, liksom alla andra statistiska test, ger bevis pรฅ om H0-hypotesen kan accepteras eller fรถrkastas.

Hypotes i envรคgs ANOVA-test

  • H0: Medelvรคrdena mellan grupperna รคr identiska
  • H3: ร…tminstone รคr medelvรคrdet fรถr en grupp olika

Med andra ord antyder H0-hypotesen att det inte finns tillrรคckligt med bevis fรถr att bevisa att medelvรคrdet av gruppen (faktorn) skiljer sig frรฅn en annan.

Detta test liknar t-testet, รคven om ANOVA-testet rekommenderas i situationer med fler รคn 2 grupper. Fรถrutom det ger t-testet och ANOVA liknande resultat.

antaganden

Vi antar att varje faktor รคr slumpmรคssigt urval, oberoende och kommer frรฅn en normalfรถrdelad population med okรคnda men lika varianser.

Tolka ANOVA-test

F-statistiken anvรคnds fรถr att testa om data kommer frรฅn signifikant olika populationer, dvs olika urvalsmedelvรคrden.

Fรถr att berรคkna F-statistiken mรฅste du dividera variation mellan grupper รถver variation inom gruppen.

Ocuco-landskapet mellan-gruppen Variabilitet speglar skillnaderna mellan grupperna inom hela befolkningen. Titta pรฅ de tvรฅ graferna nedan fรถr att fรถrstรฅ konceptet med varians mellan grupper.

Den vรคnstra grafen visar mycket liten variation mellan de tre grupperna, och det รคr mycket troligt att de tre medelvรคrdena tenderar att รถvergripande medelvรคrde (dvs medelvรคrde fรถr de tre grupperna).

Den hรถgra grafen plottar tre distributioner lรฅngt ifrรฅn varandra, och ingen av dem รถverlappar varandra. Det finns en stor chans att skillnaden mellan det totala medelvรคrdet och gruppens medelvรคrde blir stor.

Tolka ANOVA-test

Ocuco-landskapet inom gruppen variabilitet tar hรคnsyn till skillnaden mellan grupperna. Variationen kommer frรฅn de enskilda observationerna; vissa punkter kan vara helt annorlunda รคn vad gruppen menar. De inom gruppen variabilitet tar upp denna effekt och hรคnvisar till provtagningsfelet.

Fรถr att visuellt fรถrstรฅ konceptet inom gruppvariabilitet, titta pรฅ grafen nedan.

Den vรคnstra delen plottar fรถrdelningen av tre olika grupper. Du รถkade spridningen av varje prov och det รคr tydligt att den individuella variansen รคr stor. F-testet kommer att minska, vilket innebรคr att du tenderar att acceptera nollhypotesen

Den hรถgra delen visar exakt samma prov (identiskt medelvรคrde) men med lรคgre variabilitet. Det leder till en รถkning av F-testet och tenderar till den alternativa hypotesen.

Tolka ANOVA-test

Du kan anvรคnda bรฅda mรฅtten fรถr att konstruera F-statistiken. Det รคr vรคldigt intuitivt att fรถrstรฅ F-statistiken. Om tรคljaren รถkar betyder det att variationen mellan grupperna รคr hรถg, och det รคr troligt att grupperna i urvalet kommer frรฅn helt olika fรถrdelningar.

Med andra ord indikerar en lรฅg F-statistik liten eller ingen signifikant skillnad mellan gruppens genomsnitt.

Exempel Envรคgs ANOVA-test

Du kommer att anvรคnda giftdataset fรถr att implementera envรคgs ANOVA-testet. Datauppsรคttningen innehรฅller 48 rader och 3 variabler:

  • Tid: Djurets รถverlevnadstid
  • gift: Typ av gift som anvรคnds: faktornivรฅ: 1,2 och 3
  • behandla: Typ av behandling som anvรคnds: faktornivรฅ: 1,2 och 3

Innan du bรถrjar berรคkna ANOVA-testet mรฅste du fรถrbereda data enligt fรถljande:

  • Steg 1: Importera data
  • Steg 2: Ta bort onรถdig variabel
  • Steg 3: Konvertera variabel gift enligt bestรคlld nivรฅ
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)

Produktion:

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

Vรฅrt mรฅl รคr att testa fรถljande antagande:

  • H0: Det finns ingen skillnad i genomsnittlig รถverlevnadstid mellan grupper
  • H3: Genomsnittet fรถr รถverlevnadstid รคr olika fรถr minst en grupp.

Du vill med andra ord veta om det finns en statistisk skillnad mellan medelvรคrdet av รถverlevnadstiden beroende pรฅ vilken typ av gift som ges till marsvinet.

Du kommer att gรฅ tillvรคga enligt fรถljande:

  • Steg 1: Kontrollera formatet pรฅ det variabla giftet
  • Steg 2: Skriv ut den sammanfattande statistiken: antal, medelvรคrde och standardavvikelse
  • Steg 3: Rita en boxplot
  • Steg 4: Berรคkna envรคgs ANOVA-testet
  • Steg 5: Kรถr ett parvis t-test

Steg 1) Du kan kontrollera nivรฅn pรฅ giftet med fรถljande kod. Du bรถr se tre teckenvรคrden eftersom du konverterar dem i faktor med det muterade verbet.

levels(df$poison)

Produktion:

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

Steg 2) Du berรคknar medelvรคrdet och standardavvikelsen.

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

Produktion:

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

Steg 3) I steg tre kan du grafiskt kontrollera om det รคr skillnad mellan fรถrdelningen. Observera att du inkluderar den skakiga punkten.

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

Produktion:

Envรคgs ANOVA-testexempel

Steg 4) Du kan kรถra envรคgs ANOVA-testet med kommandot aov. Den grundlรคggande syntaxen fรถr ett ANOVA-test รคr:

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

Formelns syntax รคr:

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

Du kan svara pรฅ vรฅr frรฅga: Finns det nรฅgon skillnad i รถverlevnadstiden mellan marsvinet, med kunskap om vilken typ av gift som ges.

Observera att det rekommenderas att lagra modellen och anvรคnda funktionen summary() fรถr att fรฅ en bรคttre utskrift av resultaten.

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

Kodfรถrklaring

  • aov(tid ~ gift, data = df): Kรถr ANOVA-testet med fรถljande formel
  • summary(anova_one_way): Skriv ut sammanfattningen av testet

Produktion:

##             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รคrdet รคr lรคgre รคn det vanliga trรถskelvรคrdet pรฅ 0.05. Du รคr sรคker pรฅ att sรคga att det finns en statistisk skillnad mellan grupperna, indikerad med "*".

Parvis jรคmfรถrelse

Envรคgs ANOVA-testet informerar inte vilken grupp som har ett annat medelvรคrde. Istรคllet kan du utfรถra ett Tukey-test med funktionen TukeyHSD().

TukeyHSD(anova_one_way)

Produktion:

Parvis jรคmfรถrelse

Tvรฅvรคgs ANOVA

Ett tvรฅvรคgs ANOVA-test lรคgger till ytterligare en gruppvariabel till formeln. Det รคr identiskt med envรคgs ANOVA-testet, รคven om formeln รคndras nรฅgot:

y=x1+x2

with รคr en kvantitativ variabel och och รคr kategoriska variabler.

Hypotes i tvรฅvรคgs ANOVA-test

  • H0: Medelvรคrdena รคr lika fรถr bรฅda variablerna (dvs faktorvariabel)
  • H3: Medelvรคrdena รคr olika fรถr bรฅda variablerna

Du lรคgger till behandlingsvariabel till vรฅr modell. Denna variabel indikerar behandlingen som ges till marsvinet. Du รคr intresserad av att se om det finns ett statistiskt beroende mellan giftet och behandlingen som ges till marsvinet.

Vi justerar vรฅr kod genom att lรคgga till behandla med den andra oberoende variabeln.

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

Produktion:

##             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 dra slutsatsen att bรฅde gift och godis skiljer sig statistiskt frรฅn 0. Du kan fรถrkasta NULL-hypotesen och bekrรคfta att en fรถrรคndring av behandlingen eller giftet pรฅverkar tiden fรถr รถverlevnad.

Sammanfattning

Vi kan sammanfatta testet i tabellen nedan:

Testa Koda Hypotes P-vรคrde
Envรคgs ANOVA
aov(y ~ X, data = df)
H3: Genomsnittet รคr olika fรถr minst en grupp 0.05
Parvis
TukeyHSD(ANOVA summary)
0.05
Tvรฅvรคgs ANOVA
aov(y ~ X1 + X2, data = df)
H3: Genomsnittet รคr olika fรถr bรฅda grupperna 0.05

Sammanfatta detta inlรคgg med: