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.
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.
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:
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:
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 |