R ANOVA -opetusohjelma: yksisuuntainen ja kaksisuuntainen (esimerkein)
Mikรค on ANOVA?
Varianssianalyysi (ANOVA) on tilastollinen tekniikka, jota kรคytetรครคn yleisesti kahden tai useamman ryhmรคn keskiarvojen vรคlisten erojen tutkimiseen. ANOVA-testi keskittyy tyypillisen muuttujan eri vaihtelulรคhteisiin. ANOVA R:ssรค tarjoaa ensisijaisesti todisteita keskimรครคrรคisen tasa-arvon olemassaolosta ryhmien vรคlillรค. Tรคmรค tilastollinen menetelmรค on t-testin laajennus. Sitรค kรคytetรครคn tilanteessa, jossa tekijรคmuuttujalla on useampi kuin yksi ryhmรค.
Yksisuuntainen ANOVA
On monia tilanteita, joissa sinun on verrattava useiden ryhmien keskiarvoa. Esimerkiksi markkinointiosasto haluaa tietรครค, onko kolmella tiimillรค sama myyntitulos.
- Joukkue: 3 tasotekijรค: A, B ja C
- Myynti: Suorituskyvyn mitta
ANOVA-testi voi kertoa, ovatko kolme ryhmรครค samanlaisia.
Selvittรครคksesi, tulevatko tiedot samasta populaatiosta, voit suorittaa a yksisuuntainen varianssianalyysi (yksisuuntainen ANOVA jรคljempรคnรค). Tรคmรค testi, kuten kaikki muutkin tilastolliset testit, osoittaa, voidaanko H0-hypoteesi hyvรคksyรค vai hylรคtรค.
Hypoteesi yksisuuntaisessa ANOVA-testissรค
- H0: Ryhmien keskiarvot ovat samat
- H3: Ainakin yhden ryhmรคn keskiarvo on erilainen
Toisin sanoen H0-hypoteesi viittaa siihen, ettรค ei ole tarpeeksi todisteita osoittamaan, ettรค ryhmรคn (tekijรคn) keskiarvo on erilainen kuin toisesta.
Tรคmรค testi on samanlainen kuin t-testi, vaikka ANOVA-testiรค suositellaan tilanteessa, jossa on enemmรคn kuin 2 ryhmรครค. Sitรค paitsi t-testi ja ANOVA antavat samanlaiset tulokset.
Oletukset
Oletamme, ettรค jokainen tekijรค on satunnaisesti otettu, riippumaton ja tulee normaalijakaumasta populaatiosta, jonka varianssit ovat tuntemattomia, mutta samat.
Tulkitse ANOVA-testi
F-tilastolla testataan, ovatko tiedot merkittรคvรคsti eri populaatioista eli eri otoskeskiarvoista.
F-tilaston laskemiseksi sinun on jaettava ryhmien vรคlistรค vaihtelua yli ryhmรคn sisรคistรค vaihtelua.
ryhmรคn vรคlillรค vaihtelu heijastaa ryhmien vรคlisiรค eroja koko vรคestรถn sisรคllรค. Katso alla olevia kahta kaaviota ymmรคrtรครคksesi ryhmien vรคlisen varianssin kรคsitteen.
Vasen kaavio nรคyttรครค hyvin vรคhรคn vaihtelua kolmen ryhmรคn vรคlillรค, ja on erittรคin todennรคkรถistรค, ettรค kolme keskiarvoa pyrkii yleinen keskiarvo (eli kolmen ryhmรคn keskiarvo).
Oikeassa kaaviossa on kolme jakaumaa kaukana toisistaan, eikรค mikรครคn ole pรครคllekkรคistรค. On suuri mahdollisuus, ettรค ero kokonaiskeskiarvon ja ryhmien keskiarvon vรคlillรค on suuri.
ryhmรคn sisรคllรค vaihtelu ottaa huomioon ryhmien vรคlisen eron. Vaihtelu tulee yksittรคisistรค havainnoista; Jotkut kohdat voivat olla tรคysin erilaisia โโkuin ryhmรค tarkoittaa. The ryhmรคn sisรคllรค vaihtelevuus poimii tรคmรคn vaikutuksen ja viittaa nรคytteenottovirheeseen.
Ymmรคrtรครคksesi visuaalisesti ryhmรคn sisรคisen vaihtelun kรคsitteen, katso alla olevaa kaaviota.
Vasen osa kuvaa kolmen eri ryhmรคn jakautumista. Kasvatit jokaisen otoksen leviรคmistรค ja on selvรครค, ettรค yksilรถllinen varianssi on suuri. F-testi pienenee, mikรค tarkoittaa, ettรค sinulla on taipumus hyvรคksyรค nollahypoteesi
Oikea osa nรคyttรครค tรคsmรคlleen samat nรคytteet (identtinen keskiarvo), mutta pienemmรคllรค vaihtelulla. Se johtaa F-testin kasvuun ja puoltaa vaihtoehtoista hypoteesia.
Voit kรคyttรครค molempia mittareita F-tilastojen muodostamiseen. F-tilaston ymmรคrtรคminen on erittรคin intuitiivista. Jos osoittaja kasvaa, se tarkoittaa, ettรค ryhmien vรคlinen vaihtelu on suuri, ja on todennรคkรถistรค, ettรค otoksen ryhmรคt on otettu tรคysin erilaisista jakaumista.
Toisin sanoen alhainen F-tilasto osoittaa vain vรคhรคn tai ei ollenkaan merkittรคvรครค eroa ryhmรคn keskiarvon vรคlillรค.
Esimerkki Yksisuuntainen ANOVA-testi
Kรคytรคt myrkkytietojoukkoa toteuttaaksesi yksisuuntaisen ANOVA-testin. Tietojoukko sisรคltรครค 48 riviรค ja 3 muuttujaa:
- Aika: Elรคimen selviytymisaika
- myrkky: Kรคytetty myrkkytyyppi: tekijรคtaso: 1,2 ja 3
- hoito: Kรคytetty hoitotyyppi: tekijรคtaso: 1,2 ja 3
Ennen kuin aloitat ANOVA-testin laskemisen, sinun on valmisteltava tiedot seuraavasti:
- Vaihe 1: Tuo tiedot
- Vaihe 2: Poista tarpeeton muuttuja
- Vaihe 3: Muunna muuttuva myrkky mรครคrรคtyksi tasoksi
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)
lรคhtรถ:
## 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, ...
Tavoitteemme on testata seuraavaa oletusta:
- H0: Eloonjรครคmisajan keskiarvossa ei ole eroa ryhmien vรคlillรค
- H3: Eloonjรครคmisajan keskiarvo on erilainen ainakin yhdessรค ryhmรคssรค.
Toisin sanoen haluat tietรครค, onko eloonjรครคmisajan keskiarvon vรคlillรค tilastollista eroa marsulle annetun myrkyn tyypin mukaan.
Toimit seuraavasti:
- Vaihe 1: Tarkista muuttujan myrkyn muoto
- Vaihe 2: Tulosta yhteenvetotilasto: mรครคrรค, keskiarvo ja keskihajonna
- Vaihe 3: Piirrรค laatikkokuva
- Vaihe 4: Laske yksisuuntainen ANOVA-testi
- Vaihe 5: Suorita pareittainen t-testi
Vaihe 1) Voit tarkistaa myrkyn tason seuraavalla koodilla. Sinun pitรคisi nรคhdรค kolme merkkiarvoa, koska muunnat ne muuttujaverbillรค.
levels(df$poison)
lรคhtรถ:
## [1] "1" "2" "3"
Vaihe 2) Lasket keskiarvon ja keskihajonnan.
df % > % group_by(poison) % > % summarise( count_poison = n(), mean_time = mean(time, na.rm = TRUE), sd_time = sd(time, na.rm = TRUE) )
lรคhtรถ:
## # 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
Vaihe 3) Kolmannessa vaiheessa voit tarkistaa graafisesti, onko jakelun vรคlillรค eroa. Huomaa, ettรค sisรคllytรคt vรคrinรคpisteen.
ggplot(df, aes(x = poison, y = time, fill = poison)) +
geom_boxplot() +
geom_jitter(shape = 15,
color = "steelblue",
position = position_jitter(0.21)) +
theme_classic()
lรคhtรถ:
Vaihe 4) Voit suorittaa yksisuuntaisen ANOVA-testin komennolla aov. ANOVA-testin perussyntaksi on:
aov(formula, data) Arguments: - formula: The equation you want to estimate - data: The dataset used
Kaavan syntaksi on:
y ~ X1+ X2+...+Xn # X1 + X2 +... refers to the independent variables y ~ . # use all the remaining variables as independent variables
Voit vastata kysymykseemme: Onko marsun selviytymisajassa eroa, kun tiedรคt annetun myrkyn tyypin.
Huomaa, ettรค on suositeltavaa tallentaa malli ja kรคyttรครค funktiota summary() saadaksesi paremman tulosteen tuloksista.
anova_one_way <- aov(time~poison, data = df) summary(anova_one_way)
Koodin selitys
- aov(aika ~ myrkky, data = df): Suorita ANOVA-testi seuraavalla kaavalla
- summary(anova_one_way): Tulosta testin yhteenveto
lรคhtรถ:
## 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-arvo on pienempi kuin tavallinen kynnysarvo 0.05. Voit luottaa siihen, ettรค ryhmien vรคlillรค on tilastollinen ero, joka on merkitty *-merkillรค.
Parikohtainen vertailu
Yksisuuntainen ANOVA-testi ei kerro, millรค ryhmรคllรค on erilainen keskiarvo. Sen sijaan voit suorittaa Tukey-testin funktiolla TukeyHSD().
TukeyHSD(anova_one_way)
lรคhtรถ:
Kaksisuuntainen ANOVA
Kaksisuuntainen ANOVA-testi lisรครค kaavaan toisen ryhmรคmuuttujan. Se on identtinen yksisuuntaisen ANOVA-testin kanssa, vaikka kaava muuttuu hieman:
y=x1+x2
kanssa on kvantitatiivinen muuttuja ja ja ovat kategorisia muuttujia.
Hypoteesi kaksisuuntaisessa ANOVA-testissรค
- H0: Keskiarvot ovat samat molemmille muuttujille (eli tekijรคmuuttujalle)
- H3: Keskiarvot ovat erilaiset molemmille muuttujille
Lisรครคt hoitomuuttujan malliimme. Tรคmรค muuttuja osoittaa marsulle annetun hoidon. Olet kiinnostunut nรคkemรครคn, onko myrkyn ja marsulle annetun hoidon vรคlillรค tilastollista riippuvuutta.
Muokkaamme koodiamme lisรครคmรคllรค hoitoon toisella riippumattomalla muuttujalla.
anova_two_way <- aov(time~poison + treat, data = df) summary(anova_two_way)
lรคhtรถ:
## 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 ## ---
Voit pรครคtellรค, ettรค sekรค myrkky ettรค hoito eroavat tilastollisesti 0:sta. Voit hylรคtรค NULL-hypoteesin ja vahvistaa, ettรค hoidon tai myrkyn muuttaminen vaikuttaa eloonjรครคmisaikaan.
Yhteenveto
Voimme tiivistรครค testin alla olevaan taulukkoon:
| Testi | Koodi | Hypoteesi | P-arvo |
|---|---|---|---|
| Yksisuuntainen ANOVA |
aov(y ~ X, data = df) |
H3: Keskiarvo on erilainen ainakin yhdessรค ryhmรคssรค | 0.05 |
| Pareittain |
TukeyHSD(ANOVA summary) |
0.05 | |
| Kaksisuuntainen ANOVA |
aov(y ~ X1 + X2, data = df) |
H3: Keskiarvo on erilainen molemmissa ryhmissรค | 0.05 |




