R ANOVA oktatóanyag: egyirányú és kétirányú (példákkal)

Mi az ANOVA?

Varianciaelemzés (ANOVA) egy statisztikai technika, amelyet általában két vagy több csoportátlag közötti különbségek tanulmányozására használnak. Az ANOVA teszt egy tipikus változó különböző variációs forrásaira összpontosít. Az R-ben végzett ANOVA elsősorban a csoportok közötti átlagos egyenlőség meglétét bizonyítja. Ez a statisztikai módszer a t-próba kiterjesztése. Olyan helyzetben használják, amikor a faktorváltozónak egynél több csoportja van.

Egyirányú ANOVA

Sok olyan helyzet van, amikor több csoport átlagát kell összehasonlítani. Például a marketing osztály tudni akarja, hogy három csapatnak ugyanaz az értékesítési teljesítménye.

  • Csapat: 3 szintű faktor: A, B és C
  • Kiárusítás: A teljesítmény mértéke

Az ANOVA teszt meg tudja állapítani, hogy a három csoport hasonló teljesítményt nyújt-e.

Annak tisztázására, hogy az adatok ugyanabból a sokaságból származnak-e, végrehajthat a egyirányú varianciaanalízis (a továbbiakban egyirányú ANOVA). Ez a teszt, mint minden más statisztikai teszt, bizonyítja, hogy a H0 hipotézis elfogadható vagy elvethető.

Hipotézis egyutas ANOVA tesztben

  • H0: A csoportok közötti átlagok azonosak
  • H3: Legalább egy csoport átlaga különbözik

Más szavakkal, a H0 hipotézis azt jelenti, hogy nincs elegendő bizonyíték annak bizonyítására, hogy a csoport (tényező) átlaga különbözik a másiktól.

Ez a teszt hasonló a t-próbához, bár az ANOVA teszt javasolt 2-nél több csoport esetén. Ettől eltekintve a t-próba és az ANOVA hasonló eredményeket ad.

Feltételezések

Feltételezzük, hogy minden tényező véletlenszerűen mintavételezett, független, és egy normális eloszlású, ismeretlen, de egyenlő varianciájú populációból származik.

Értelmezze az ANOVA tesztet

Az F-statisztikát annak tesztelésére használják, hogy az adatok jelentősen eltérő populációkból származnak-e, azaz eltérő mintaátlagok.

Az F-statisztika kiszámításához el kell osztani a csoportok közötti változékonyság felett csoporton belüli változékonyság.

A csoport között A variabilitás az egész populáción belül a csoportok közötti különbségeket tükrözi. Tekintse meg az alábbi két grafikont, hogy megértse a csoportok közötti variancia fogalmát.

A bal oldali grafikon nagyon csekély eltérést mutat a három csoport között, és nagyon valószínű, hogy a három átlag a átfogó átlag (azaz a három csoport átlaga).

A jobb oldali grafikon három eloszlást ábrázol egymástól távol, és egyik sem fedi át egymást. Nagy eséllyel nagy lesz a különbség a teljes átlag és a csoportátlag között.

Értelmezze az ANOVA tesztet

A csoporton belül A variabilitás a csoportok közötti különbséget veszi figyelembe. Az eltérés az egyéni megfigyelésekből származik; egyes pontok teljesen eltérhetnek attól, amit a csoport jelent. A csoporton belül A variabilitás felveszi ezt a hatást, és a mintavételi hibára hivatkozik.

A csoporton belüli változékonyság fogalmának vizuális megértéséhez tekintse meg az alábbi grafikont.

A bal oldali rész három különböző csoport eloszlását ábrázolja. Növelte az egyes minták terjedését, és nyilvánvaló, hogy az egyéni szórás nagy. Az F-próba csökkenni fog, ami azt jelenti, hogy hajlamosak vagyunk elfogadni a nullhipotézist

A jobb oldali rész pontosan ugyanazokat a mintákat mutatja (azonos átlag), de kisebb variabilitással. Ez az F-próba növekedéséhez vezet, és az alternatív hipotézis javára irányul.

Értelmezze az ANOVA tesztet

Mindkét mértéket használhatja az F-statisztika elkészítéséhez. Nagyon intuitív az F-statisztika megértése. Ha a számláló növekszik, az azt jelenti, hogy nagy a csoportok közötti variabilitás, és valószínű, hogy a mintában szereplő csoportok teljesen eltérő eloszlásokból származnak.

Más szavakkal, az alacsony F-statisztika azt jelzi, hogy a csoport átlaga között csekély vagy nincs szignifikáns különbség.

Példa Egyirányú ANOVA teszt

A méregadatkészletet fogja használni az egyirányú ANOVA-teszt megvalósításához. Az adatkészlet 48 sort és 3 változót tartalmaz:

  • Idő: Az állat túlélési ideje
  • méreg: Felhasznált méreg típusa: faktorszint: 1,2 és 3
  • kezelés: Az alkalmazott kezelés típusa: faktorszint: 1,2, 3 és XNUMX

Mielőtt elkezdené az ANOVA-teszt kiszámítását, a következők szerint kell elkészítenie az adatokat:

  • 1. lépés: Importálja az adatokat
  • 2. lépés: Távolítsa el a szükségtelen változókat
  • 3. lépés: Konvertálja a változó mérget rendezett szintre
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, ...		

Célunk a következő feltételezés tesztelése:

  • H0: Nincs különbség a túlélési idő átlagában a csoportok között
  • H3: A túlélési idő átlaga legalább egy csoportnál eltérő.

Más szóval, azt szeretné tudni, hogy van-e statisztikai különbség a túlélési idő átlaga között a tengerimalacnak adott méreg típusa szerint.

A következőképpen jár el:

  • 1. lépés: Ellenőrizze a méreg változó formátumát
  • 2. lépés: Nyomtassa ki az összefoglaló statisztikát: szám, átlag és szórás
  • 3. lépés: Rajzoljon fel egy dobozos ábrát
  • 4. lépés: Számítsa ki az egyirányú ANOVA-tesztet
  • 5. lépés: Futtasson le egy páronkénti t-tesztet

Step 1) A méregszintet a következő kóddal ellenőrizheti. Három karakterértéket kell látnia, mert faktorba konvertálja őket a mute igével.

levels(df$poison)

output:

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

Step 2) Kiszámolja az átlagot és a szórást.

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

Step 3) A harmadik lépésben grafikusan ellenőrizheti, hogy van-e különbség a disztribúció között. Ne feledje, hogy tartalmazza a vibráló pontot.

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:

Példa egyirányú ANOVA tesztre

Step 4) Az egyirányú ANOVA tesztet az aov paranccsal futtathatja. Az ANOVA teszt alapvető szintaxisa a következő:

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

A képlet szintaxisa a következő:

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

Kérdésünkre válaszolhat: Van-e különbség a tengerimalacok túlélési idejében, ismerve az adott méreg fajtáját?

Vegye figyelembe, hogy az eredmények jobb kinyomtatása érdekében tanácsos tárolni a modellt, és a summary() függvényt használni.

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

Kód Magyarázat

  • aov(idő ~ méreg, adat = df): Futtassa le az ANOVA tesztet a következő képlettel
  • summary(anova_one_way): Nyomtassa ki a teszt összefoglalóját

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

A p-érték alacsonyabb, mint a szokásos 0.05-ös küszöb. Biztosan állíthatja, hogy statisztikai különbség van a csoportok között, amit a „*” jelöl.

Páronkénti összehasonlítás

Az egyirányú ANOVA teszt nem tájékoztat arról, hogy melyik csoportnak van eltérő átlaga. Ehelyett végrehajthat egy Tukey-tesztet a TukeyHSD() függvénnyel.

TukeyHSD(anova_one_way)

output:

Páronkénti összehasonlítás

Kétirányú ANOVA

A kétirányú ANOVA teszt egy másik csoportváltozót ad a képlethez. Ez megegyezik az egyutas ANOVA teszttel, bár a képlet kissé változik:

y=x1+x2

with egy mennyiségi változó és a és kategorikus változók.

Hipotézis kétutas ANOVA tesztben

  • H0: Mindkét változó átlaga egyenlő (azaz faktorváltozó)
  • H3: Az átlagok mindkét változónál eltérőek

Hozzáadja a kezelési változót a modellünkhöz. Ez a változó a tengerimalac kezelését jelzi. Érdekelne, hogy van-e statisztikai függés a méreg és a tengerimalacnak adott kezelés között.

A kódunkat úgy állítjuk be, hogy a másik független változóval kezeljük.

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

Megállapíthatja, hogy mind a méreg, mind a kezelés statisztikailag különbözik a 0-tól. Elutasíthatja a NULL hipotézist, és megerősítheti, hogy a kezelés vagy a méreg megváltoztatása befolyásolja a túlélés idejét.

Összegzésként

A tesztet az alábbi táblázatban foglalhatjuk össze:

Tesztelés Kód Hipotézis P-értéket
Egyirányú ANOVA
aov(y ~ X, data = df)
H3: Az átlag legalább egy csoportnál eltérő 0.05
Páronként
TukeyHSD(ANOVA summary)
0.05
Kétirányú ANOVA
aov(y ~ X1 + X2, data = df)
H3: Az átlag mindkét csoportnál eltérő 0.05