R ANOVA vodič: Jednosmjerni i dvosmjerni (s primjerima)
Što je ANOVA?
Analiza varijance (ANOVA) je statistička tehnika koja se obično koristi za proučavanje razlika između dvije ili više grupnih sredina. ANOVA test je usredotočen na različite izvore varijacije u tipičnoj varijabli. ANOVA u R prvenstveno pruža dokaz o postojanju srednje jednakosti između skupina. Ova statistička metoda je proširenje t-testa. Koristi se u situaciji kada faktorska varijabla ima više od jedne grupe.
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 nastavku jednosmjerna ANOVA). Ovaj test, kao i svaki drugi statistički test, daje dokaz može li se H0 hipoteza prihvatiti ili odbaciti.
Hipoteza u jednosmjernom ANOVA testu
- H0: Srednje vrijednosti između skupina su identične
- H3: Barem je srednja vrijednost jedne skupine različita
Drugim riječima, hipoteza H0 implicira da nema dovoljno dokaza koji bi dokazali da se srednja vrijednost skupine (faktora) razlikuje od druge.
Ovaj test je sličan t-testu, iako se ANOVA test preporučuje u situaciji s više od 2 grupe. Osim toga, t-test i ANOVA daju slične rezultate.
Pretpostavke
Pretpostavljamo da je svaki faktor nasumično odabran, neovisan i da dolazi iz normalno raspoređene populacije s nepoznatim, ali jednakim varijancama.
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 razlike između skupina unutar cijele populacije. Pogledajte dva grafikona u nastavku da biste razumjeli koncept varijance između grupa.
Lijevi grafikon pokazuje vrlo male varijacije između ove tri skupine i vrlo je vjerojatno da tri srednje vrijednosti teže ukupni srednja vrijednost (tj. srednja vrijednost za tri skupine).
Desni grafikon prikazuje tri međusobno udaljene distribucije i nijedna se ne preklapa. Postoji velika vjerojatnost da će razlika između ukupnog prosjeka i prosjeka grupa biti velika.
The unutar grupe varijabilnost uzima u obzir razlike među skupinama. Varijacije proizlaze iz individualnih opažanja; neke točke mogu biti potpuno drugačije od značenja grupe. The unutar grupe varijabilnost otkriva ovaj učinak i odnosi se na pogrešku uzorkovanja.
Kako biste vizualno razumjeli koncept varijabilnosti unutar grupe, pogledajte grafikon u nastavku.
Lijevi dio prikazuje distribuciju tri različite skupine. Povećali ste raspon svakog uzorka i jasno je da je individualna varijanca velika. F-test će se smanjiti, što znači da ste skloni prihvatiti nultu hipotezu
Desni dio prikazuje potpuno iste uzorke (identična srednja vrijednost), ali s manjom varijabilnošću. To dovodi do povećanja F-testa i ide 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
- H3: Prosjek vremena preživljavanja je različit za barem jednu skupinu.
Drugim riječima, želite znati postoji li statistička razlika između srednje vrijednosti vremena preživljavanja prema 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: Izvedite parni t-test
Korak 1) Možete provjeriti razinu otrova pomoću sljedećeg koda. Trebali biste vidjeti tri vrijednosti znakova jer ih pretvarate u faktor pomoću glagola mutirati.
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
Možete odgovoriti na naše pitanje: Postoji li razlika u vremenu preživljavanja između zamoraca, znajući vrstu otrova koji je dat.
Imajte na umu da se savjetuje pohraniti model i koristiti funkciju summary() za bolji ispis rezultata.
anova_one_way <- aov(time~poison, data = df) summary(anova_one_way)
Objašnjenje koda
- 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 niža je od uobičajenog praga od 0.05. Uvjereni ste da možete reći da postoji statistička razlika između grupa, označena "*".
Usporedba u paru
Jednosmjerni ANOVA test ne daje informacije koja skupina ima različitu srednju vrijednost. Umjesto toga, možete izvesti Tukey test s funkcijom TukeyHSD().
TukeyHSD(anova_one_way)
Izlaz:
Dvosmjerna ANOVA
Dvosmjerni ANOVA test dodaje još jednu grupnu varijablu u formulu. Identičan je jednosmjernom ANOVA testu, iako se formula malo mijenja:
y=x1+x2
s je kvantitativna varijabla i i su kategoričke varijable.
Hipoteza u dvosmjernom ANOVA testu
- H0: Srednje vrijednosti su jednake za obje varijable (tj. faktorsku varijablu)
- H3: Srednje vrijednosti su različite za obje varijable
Našem modelu dodajete varijablu tretiranja. Ova varijabla pokazuje tretman koji se daje zamorcu. Zanima vas postoji li statistička ovisnost između otrova i tretmana koji je dat zamorcu.
Naš kod prilagođavamo dodavanjem tretmana drugoj nezavisnoj varijabli.
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 ## ---
Možete zaključiti da se i otrov i lijek statistički razlikuju od 0. Možete odbaciti NULL hipotezu i potvrditi da promjena tretmana ili otrova utječe na vrijeme preživljavanja.
rezime
Test možemo sažeti u tablici u nastavku:
test | Kodirati | hipoteza | P-vrijednosti |
---|---|---|---|
Jednosmjerna ANOVA |
aov(y ~ X, data = df) |
H3: 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) |
H3: Prosjek je različit za obje skupine | 0.05 |