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.

Tulkitse ANOVA-testi

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

Tulkitse ANOVA-testi

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

Esimerkki yksisuuntaisesta ANOVA-testistä

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

Parikohtainen vertailu

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