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.

  • ๐Ÿ“ Osnovna statistika: F-omjer dijeli varijabilnost izmeฤ‘u grupa s varijabilnosti unutar grupe, tako da veฤ‡e vrijednosti govore protiv jednakih srednjih vrijednosti.
  • ๐Ÿงช Jednosmjerna sintaksa: aov(time~poison, data = df) nakon ฤega slijedi summary() vraฤ‡a stupnjeve slobode, F-vrijednost i p-vrijednost.
  • โœ… Provjere pretpostavki: Testirajte neovisnost, normalnost reziduala pomoฤ‡u shapiro.test() i jednaku varijancu pomoฤ‡u leveneTest() prije nego ลกto se povjerujete p-vrijednosti.
  • ๐Ÿ”Ž Post hoc analiza: TukeyHSD() usporeฤ‘uje svaki par grupa dok stopa pogreลกaka za cijelu obitelj drลพi na navedenoj razini.
  • ๐Ÿงฎ Dvosmjerno produลพenje: aov(vrijeme~otrov + tretman, podaci = df) dodaje drugi faktor, a poison:treat dodaje ฤlan interakcije.
  • ๐Ÿ“Š Rezultati ฤitanja: P-vrijednost ispod 0.05 odbacuje nultu hipotezu o jednakim srednjim vrijednostima, ali nikada ne identificira koja se skupina razlikuje.

ANOVA u R-u Jednosmjerno Dvosmjerno

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

Interpretirajte ANOVA test

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.

Interpretirajte ANOVA test

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:

Primjer jednosmjernog ANOVA testa

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:

Usporedba u paru

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

Pitanja i odgovori

F-vrijednost je omjer varijance izmeฤ‘u skupina i varijance unutar skupine. Vrijednosti blizu 1 sugeriraju da su srednje vrijednosti skupina sliฤne. Velike vrijednosti ukazuju na to da su skupine izvuฤene iz populacija s razliฤitim srednjim vrijednostima.

Koristite oneway.test() s var.equal = FALSE kada su varijance nejednake, a kruskal.test() kada su reziduali oฤito nenormalni. Transformacija asimetriฤnog odgovora s log() ฤesto vraฤ‡a i normalnost i jednaku varijancu.

Svaki t-test nosi vlastiti rizik od 5 posto laลพno pozitivnih rezultata. Tri parna testa poveฤ‡avaju stopu pogreลกke na razini obitelji na oko 14 posto. ANOVA odrลพava jedan ukupni test na 5 posto, a Tukey HSD prilagoฤ‘ava parne usporedbe.

ANOVA je standardni filter za odabir znaฤajki: rangira kategoriฤke prediktore prema tome koliko snaลพno odvajaju numeriฤki cilj. Timovi za umjetnu inteligenciju takoฤ‘er ga koriste za usporedbu varijanti modela u razliฤitim naborima unakrsne validacije.

Da. AI asistenti mogu objasniti stupnjeve slobode, prevesti p-vrijednosti u jednostavan jezik i oznaฤiti krลกenja pretpostavki u dijagnostiฤkim dijagramima. Uvijek provjerite oฤitanje u odnosu na vlastite rezultate leveneTest() i shapiro.test().

Saลพmite ovu objavu uz: