ANOVA u R-u: Jednosmjerni i dvosmjerni test s primjerima
โก Pametni saลพetak
ANOVA u R-u usporeฤuje srednje vrijednosti triju ili viลกe skupina dijeljenjem ukupne varijacije na komponente izmeฤu skupina i unutar skupina. Ovaj vodiฤ provodi jednosmjerne i dvosmjerne testove na skupu podataka o otrovima, provjerava pretpostavke i izolira razliฤite parove pomoฤu Tukey HSD-a.

ล to je ANOVA?
Analiza varijance (ANOVA) je statistiฤka tehnika koja se koristi za usporedbu srednjih vrijednosti dviju ili viลกe skupina. Test funkcionira tako da ukupnu varijaciju u mjerenju podijeli na dio objaลกnjen pripadnoลกฤu skupini i dio koji ostaje kao sluฤajni ลกum. ANOVA u R-u stoga govori razlikuje li se barem jedna srednja vrijednost skupine od ostalih, a ne koja. To je izravno proลกirenje t-test na situacije u kojima faktorska varijabla ima viลกe od dvije razine.
Prije pokretanja testa, korisno je znati koji ฤlan ANOVA obitelji odgovara vaลกem dizajnu.
Vrste ANOVA testova u R-u
โANOVAโ je skup testova, a ne jedan postupak. Odabir pravog ฤlana ovisi o tome koliko faktora imate i kako su podaci prikupljeni.
| test | Kada ga koristiti | R poziv |
|---|---|---|
| Jednosmjerna ANOVA | Jedan faktor s tri ili viลกe razina | aov(y ~ x, podaci = df) |
| Dvosmjerna ANOVA | Dva neovisna faktora | aov(y ~ x1 + x2, podaci = df) |
| Dvosmjerno s interakcijom | Uฤinak jednog faktora ovisi o drugom | aov(y ~ x1 * x2, podaci = df) |
| ANOVA s ponovljenim mjerenjima | Isti subjekti mjereni su viลกe puta | aov(y ~ x + Pogreลกka(subjekt/x)) |
| ANKOVA | Kontinuirana kovarijanta mora se kontrolirati za | aov(y ~ x + kovarijanta, podaci = df) |
| MANOVA | Dvije ili viลกe varijabli odgovora odjednom | manova(cbind(y1, y2) ~ x) |
Ovaj vodiฤ pokriva prve tri. Preostale varijante koriste isto aov() suฤelje, tako da kada jednom moลพete proฤitati jednu izlaznu tablicu, moลพete ih proฤitati sve.
ANOVA vs T-test u R: Kljuฤne razlike
Oba testa usporeฤuju srednje vrijednosti, stoga je vrijedno biti precizan oko toga gdje jedan zamjenjuje drugi.
| Kriteriji | T-test | ANOVA |
|---|---|---|
| Broj grupa | Toฤno dva | Dvije ili viลกe |
| Statistika testa | t | F, jednako t na kvadrat kada postoje dvije grupe |
| Proizlaziti | Imenuje smjer razlike | Samo izvjeลกtava da postoji razlika |
| Potrebno je praฤenje | nijedan | Post hoc test kao ลกto je Tukey HSD |
| R funkcija | t.test() | aov() |
S tri grupe, iskuลกenje je provesti tri odvojena t-testa. Oduprite se tome. Svaki test nosi vlastitu stopu pogreลกke od 5 posto, pa tri usporedbe poveฤavaju vjerojatnost laลพno pozitivnog rezultata na otprilike 14 posto. ANOVA odgovara na isto pitanje jednim testom, a Tukey HSD zatim obraฤuje detalje parova s โโkontroliranom stopom pogreลกke. Za sluฤaj dvije grupe, pogledajte vodiฤ za t-test.
Jednosmjerna ANOVA
Postoje mnoge situacije u kojima trebate usporediti srednju vrijednost izmeฤu viลกe skupina. Na primjer, odjel marketinga ลพeli znati imaju li tri tima isti prodajni uฤinak.
- Tim: faktor 3 razine: A, B i C
- Prodaja: mjera uspjeลกnosti
ANOVA test moลพe pokazati imaju li tri skupine sliฤne performanse.
Da biste razjasnili dolaze li podaci iz iste populacije, moลพete izvesti a jednosmjerna analiza varijance (u daljnjem tekstu jednosmjerna ANOVA). Kao i svaki drugi statistiฤki test, daje dokaze o tome moลพe li se H0 hipoteza odbaciti. Imajte na umu da neodbacivanje H0 nije isto ลกto i dokazivanje njezine istinitosti.
Hipoteza u jednosmjernom ANOVA testu
- H0: Srednje vrijednosti izmeฤu skupina su identiฤne
- H1: Barem je srednja vrijednost jedne skupine razliฤita
Drugim rijeฤima, ako se H0 ne odbaci, nema dovoljno dokaza za zakljuฤak da se bilo koja srednja vrijednost grupe razlikuje od ostalih.
Ovaj test je sliฤan t-testu, ali ANOVA je ispravan izbor kada postoji viลกe od dvije grupe. S toฤno dvije grupe, dva testa su ekvivalentna i F-statistika je jednaka kvadratu t-statistike.
Pretpostavke
Jednosmjerna ANOVA temelji se na tri uvjeta: opaลพanja su nasumiฤno uzorkovana i neovisna jedno o drugome, reziduali unutar svake skupine su pribliลพno normalno rasporeฤeni, a varijanca je ista u svakoj skupini (homogenost varijance). Odjeljak o provjeri pretpostavki u nastavku pokazuje kako testirati svaku od njih u R-u.
Interpretirajte ANOVA test
F-statistika se koristi za testiranje jesu li podaci iz znaฤajno razliฤitih populacija, tj. razliฤite srednje vrijednosti uzorka.
Da biste izraฤunali F-statistiku, trebate podijeliti varijabilnost izmeฤu grupa nad varijabilnost unutar grupe.
The meฤu-skupina Varijabilnost odraลพava koliko se srednja vrijednost svake grupe razlikuje od ukupne srednje vrijednosti. Usporedite dva grafa u nastavku kako biste bolje shvatili o ฤemu se radi.
Lijevi graf pokazuje vrlo male varijacije izmeฤu triju skupina, tako da su sve tri skupine srednje vrijednosti blizu ukupni znaฤe.
Desni graf prikazuje tri daleko udaljene distribucije bez preklapanja, tako da je jaz izmeฤu ukupnog prosjeka i prosjeka svake skupine velik.
The unutar grupe Varijabilnost mjeri koliko se pojedinaฤna opaลพanja razlikuju od prosjeka vlastite skupine. Neke se toฤke nalaze daleko od prosjeka svoje skupine, a izraz unutar skupine obuhvaฤa upravo taj raspon, ลกto je pogreลกka uzorkovanja.
Kako biste vizualno razumjeli koncept varijabilnosti unutar grupe, pogledajte grafikon u nastavku.
Lijevi dio prikazuje distribuciju triju razliฤitih skupina. Poveฤali ste raspon svakog uzorka i jasno je da je individualna varijanca velika. F-statistika pada, tako da ne biste mogli odbaciti nultu hipotezu.
Desni dio prikazuje uzorke s istim srednjim vrijednostima, ali puno manjim rasponom. To poveฤava F-statistiku i ukazuje u korist alternativne hipoteze.
Moลพete koristiti obje mjere za konstruiranje F-statistike. Vrlo je intuitivno razumjeti F-statistiku. Ako se brojnik poveฤava, to znaฤi da je varijabilnost meฤu grupama velika i da je vjerojatno da su grupe u uzorku izvuฤene iz potpuno razliฤitih distribucija.
Drugim rijeฤima, niska F-statistika ukazuje na malu ili nikakvu znaฤajnu razliku izmeฤu prosjeka grupe.
Primjer Jednosmjerni ANOVA test
Koristit ฤete skup podataka o otrovu za provedbu jednosmjernog ANOVA testa. Skup podataka sadrลพi 48 redaka i 3 varijable:
- Vrijeme: Vrijeme preลพivljavanja ลพivotinje
- otrov: vrsta koriลกtenog otrova: razina faktora: 1,2 i 3
- lijeฤiti: Vrsta koriลกtenog tretmana: razina faktora: 1,2 i 3
Prije nego poฤnete izraฤunavati ANOVA test, morate pripremiti podatke na sljedeฤi naฤin:
- Korak 1: Uvezite podatke
- Korak 2: Uklonite nepotrebnu varijablu
- Korak 3: Pretvorite varijablu otrov u naruฤenu razinu
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)
Izlaz:
## 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, ...
Naลก cilj je testirati sljedeฤu pretpostavku:
- H0: Nema razlike u prosjeku vremena preลพivljavanja izmeฤu skupina
- H1: Prosjek vremena preลพivljavanja je razliฤit za barem jednu skupinu.
Drugim rijeฤima, ลพelite znati postoji li statistiฤka razlika izmeฤu srednjeg vremena preลพivljavanja ovisno o vrsti otrova koji je dan zamorcu.
Postupit ฤete na sljedeฤi naฤin:
- Korak 1: Provjerite format varijable poison
- Korak 2: Ispiลกite sumarnu statistiku: broj, srednju vrijednost i standardnu โโdevijaciju
- Korak 3: Iscrtajte okvirni dijagram
- Korak 4: Izraฤunajte jednosmjerni ANOVA test
- Korak 5: Pokrenite parnu usporedbu s Tukey HSD-om
Korak 1) Provjerite razine otrova pomoฤu donjeg koda. Trebali biste vidjeti trostruke vrijednosti jer je glagol mutate pretvorio stupac u ureฤeni faktor.
levels(df$poison)
Izlaz:
## [1] "1" "2" "3"
Korak 2) Vi izraฤunavate srednju vrijednost i standardnu โโdevijaciju.
df %>% group_by(poison) %>% summarise( count_poison = n(), mean_time = mean(time, na.rm = TRUE), sd_time = sd(time, na.rm = TRUE) )
Izlaz:
## # 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
Korak 3) U treฤem koraku moลพete grafiฤki provjeriti postoji li razlika izmeฤu distribucije. Imajte na umu da ste ukljuฤili potresnu toฤku.
ggplot(df, aes(x = poison, y = time, fill = poison)) + geom_boxplot() + geom_jitter(shape = 15, color = "steelblue", position = position_jitter(0.21)) + theme_classic()
Izlaz:
Korak 4) Moลพete pokrenuti jednosmjerni ANOVA test s naredbom aov. Osnovna sintaksa za ANOVA test je:
aov(formula, data)
Arguments:
- formula: The equation you want to estimate
- data: The dataset used
Sintaksa formule je:
y ~ X1+ X2+...+Xn # X1 + X2 +... refers to the independent variables y ~ . # use all the remaining variables as independent variables
Sada moลพete odgovoriti na pitanje: postoji li razlika u vremenu preลพivljavanja izmeฤu zamoraca, s obzirom na vrstu primijenjenog otrova?
Pohranite model u objekt i proslijedite ga funkciji summary() kako biste dobili ฤitljiv ispis rezultata.
anova_one_way <- aov(time~poison, data = df) summary(anova_one_way)
Code Objaลกnjenje
- aov(vrijeme ~ otrov, podaci = df): Pokrenite ANOVA test sa sljedeฤom formulom
- summary(anova_one_way): Ispis saลพetka testa
Izlaz:
## 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-vrijednost je 7.66e-05, daleko ispod uobiฤajenog praga od 0.05, a tri zvjezdice oznaฤavaju najjaฤi kod znaฤajnosti. Moลพete odbaciti H0 i zakljuฤiti da barem jedna skupina otrova ima drugaฤije prosjeฤno vrijeme preลพivljavanja.
Kako provjeriti ANOVA pretpostavke u R-u
ANOVA p-vrijednost je pouzdana samo kada su ispunjena tri prethodno navedena uvjeta. Svaki od njih ima izravnu provjeru u R-u i svi se izvode na prilagoฤenom objektu modela.
1. Neovisnost opaลพanja. Ovo je svojstvo dizajna studije, a ne podataka, tako da nijedan test to ne moลพe spasiti. Svaki zamorac mora se izmjeriti jednom i nasumiฤno dodijeliti svojoj skupini. Ako se isti subjekt pojavljuje u nekoliko redaka, potreban vam je model ponovljenih mjerenja.
2. Normalnost reziduala. ANOVA pretpostavlja da su reziduali, a ne sirovi podaci, pribliลพno normalni. Pregledajte QQ dijagram i potvrdite Shapiro-Wilkovim testom:
par(mfrow = c(2, 2)) plot(anova_one_way) # four diagnostic plots shapiro.test(residuals(anova_one_way))
Toฤke koje grane s dijagonalom normalnog QQ dijagrama oznaฤavaju normalne reziduale. Shapiro-Wilkova p-vrijednost iznad 0.05 znaฤi da se normalnost ne moลพe odbaciti.
3. Homogenost varijance. Svaka grupa trebala bi pokazati sliฤan raspon. Grafik ostataka u odnosu na prilagoฤene vrijednosti trebao bi izgledati kao ravna traka, a ne kao lijevak. Potvrdite to Leveneovim testom, koji je robusniji na nenormalnosti od Bartlettovog:
library(car)
leveneTest(time ~ poison, data = df)
bartlett.test(time ~ poison, data = df)
P-vrijednost iznad 0.05 podrลพava jednake varijance.
ล to uฤiniti kada pretpostavka ne uspije. Ako su varijance nejednake, pokrenite oneway.test(time ~ poison, data = df, var.equal = FALSE), Welchovu korekciju. Ako su reziduali oฤito nenormalni i uzorak je malen, prebacite se na Kruskal-Wallisov test rangova, kruskal.test(time ~ poison, data = df). Kod velikih uravnoteลพenih uzoraka, ANOVA je priliฤno robusna do umjerenih odstupanja od normalnosti, tako da je graniฤni Shapiro-Wilkov rezultat rijetko koban.
Usporedba u paru
Znaฤajan F-test govori da srednje vrijednosti grupe nisu sve jednake, ali ne i koji se par razlikuje. Tukeyjev test iskrenih znaฤajnih razlika odgovara na to usporeฤujuฤi svaki par, kontrolirajuฤi stopu pogreลกke na razini obitelji.
TukeyHSD(anova_one_way)
Izlaz:
Proฤitajte izlazni redak po paru. razl stupac sadrลพi razliku izmeฤu dvaju grupnih prosjeka, niska temperatura i licenca ograniฤili 95-postotni interval pouzdanosti za tu razliku i prid. je p-vrijednost prilagoฤena za viลกestruke usporedbe. Par se znaฤajno razlikuje kada njegov interval iskljuฤuje nulu, ลกto je ekvivalentno kada je p adj ispod 0.05. U ovom skupu podataka, usporedbe koje ukljuฤuju otrov 3 su znaฤajne, ลกto odgovara kutijastom dijagramu: skupina 3 ima jasno niลพe prosjeฤno vrijeme preลพivljavanja od skupina 1 i 2, dok su skupine 1 i 2 statistiฤki nerazluฤive jedna od druge.
Dvosmjerna ANOVA
Dvosmjerna ANOVA dodaje drugi faktor formuli. Funkcionira potpuno isto kao i jednosmjerni test, samo se formula mijenja:
y ~ x1 + x2
Ovdje je y kvantitativna varijabla odgovora, dok su x1 i x2 kategoriฤki faktori.
Hipoteza u dvosmjernom ANOVA testu
- H0: Grupne sredine su jednake za obje faktorske varijable
- H1: Barem jedna srednja vrijednost grupe razlikuje se za barem jedan od dva faktora
Modelu dodajete varijablu tretmana. Ova varijabla biljeลพi tretman koji je dan zamorcu. Aditivna formula u nastavku testira utjeฤe li svaki faktor samostalno na vrijeme preลพivljavanja, nakon ลกto se uzmu u obzir ostali.
Prilagodite kod dodavanjem rijeฤi "treat" uz prvu nezavisnu varijablu.
anova_two_way <- aov(time~poison + treat, data = df) summary(anova_two_way)
Izlaz:
## 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 ## ---
Obje p-vrijednosti (5.7e-07 za otrov i 6.7e-06 za tretman) su daleko ispod 0.05, pa odbacujete H0 za oba faktora i zakljuฤujete da promjena otrova ili tretmana utjeฤe na vrijeme preลพivljavanja.
Dodavanje interakcijskog pojma
Gornji aditivni model pretpostavlja da je uฤinak otrova isti bez obzira na tretman. Kako bismo testirali tu pretpostavku, zamijenite znak plus zvjezdicom, ลกto odgovara i glavnim uฤincima i njihovoj interakciji:
anova_interaction <- aov(time~poison * treat, data = df) summary(anova_interaction)
Ako redak otrov:treat nije znaฤajan, aditivni model je bolji izbor jer troลกi manje stupnjeva slobode.
ANOVA u R-u: Brzi vodiฤ za testiranje
U donjoj tablici navedeni su svi gore koriลกteni testovi, R pozivi koji ih pokreฤu i hipoteze koje procjenjuju:
| test | Code | hipoteza | P-vrijednosti |
|---|---|---|---|
| Jednosmjerna ANOVA |
aov(y ~ X, data = df)
|
H1: Prosjek je razliฤit za barem jednu grupu | 0.05 |
| U paru |
TukeyHSD(ANOVA summary) |
0.05 | |
| Dvosmjerna ANOVA |
aov(y ~ X1 + X2, data = df)
|
H1: Barem jedna srednja vrijednost grupe razlikuje se za bilo koji faktor | 0.05 |




