Tvíhliða fervikagreining í R

Á þessari síðu sýnum við hvernig tvíhliða fervikagreining (two-sided ANOVA) er framkvæmd í R. Í tvíhliða fervikagreiningu höfum við eina svarbreytu sem er talnabreyta og tvær skýribreytur sem eru flokkabreytur.

Við munum:

Við munum vinna með gögn um púls nemenda.

dat <- read.table("puls.csv", header=TRUE, sep=';')
dat$lik_fl <- cut(dat$likamsraekt, c(0,2,4,6,20), include.lowest=TRUE)
levels(dat$lik_fl) <- c('litil','hofleg','mikil','mjog mikil')

Líkan skilgreint

Skipunin lm() metur línulegt líkan.

lm1 <- lm(seinniPuls~inngrip + lik_fl, data=dat)

Fervikagreiningartaflan reiknuð og tilgátuprófin framkvæmd

Með skipuninni drop1() prófum við hvort munur sé á meðalgildum annarrar breytunnar að teknu tilliti til hinnar breytunnar. Dæmi um spurningar sem við gætum svarað væru:

Sé skipunin mötuð með stillingunni \texttt{test='F'} fáum við hina hefðbundnu fervikagreiningartöflu. Hún sýnir tvö p-gildi - eitt fyrir hvora breytu.

drop1(lm1,test='F')
## Single term deletions
## 
## Model:
## seinniPuls ~ inngrip + lik_fl
##         Df Sum of Sq   RSS AIC F value Pr(>F)    
## <none>               31552 790                   
## inngrip  1     27807 59359 880     123 <2e-16 ***
## lik_fl   3      3383 34935 799       5 0.0025 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Í úttakinu sjáum við að seinni púls nemenda er ólíkur eftir því hvort nemendur hlutu inngrip eða ekki, að teknu tilliti til líkamsræktar. Frígráðan er ein, því það eru bara tvær mögulegar útkomur á þessari flokkabreytu og p-gildið fyrir það próf er \( 2\cdot 10^{-16} \).

Við sjáum líka að seinni púls nemenda er ólíkur eftir því hversu mikla líkamsrækt þeir stunda, að teknu tilliti til þess hvort þeir hlutu inngrip eða ekki. Frígráðurnar eru þrjár, því það eru fjórar mögulegar útkomur á þessari flokkabreytu og p-gildið fyrir það próf er \( {0.0025} \).

Metnu meðalgildin

Þegar við skrifum heitið á líkaninu birtast metnu meðalgildin.

lm1
## 
## Call:
## lm(formula = seinniPuls ~ inngrip + lik_fl, data = dat)
## 
## Coefficients:
##      (Intercept)   inngripsat_kyrr      lik_flhofleg       lik_flmikil  
##           101.75            -28.30             -1.07             -6.63  
## lik_flmjog mikil  
##           -12.44

Í þessu líkani eru metnir 5 stuðlar:

Ef við viljum meta meðalgildi hópsins sem sat kyrr og stundaði mikla hreyfingu, þá þurfum við að draga báða stuðlana frá mati viðmiðunarhópsins, þ.e. \( 101.75 - 28.30 - 6.63 = 66.82 \). Sama gildir um aðra hópa.

Með skipuninni confint() reiknum við öryggisbil fyrir meðalgildin.

confint(lm1)
##                    2.5 %   97.5 %
## (Intercept)       96.383 107.1146
## inngripsat_kyrr  -33.342 -23.2666
## lik_flhofleg      -7.428   5.2982
## lik_flmikil      -14.002   0.7399
## lik_flmjog mikil -19.575  -5.3104

o.s.frv.

Víxlhrif prófuð

Með því að aðgreina tvær breytur með \( * \) í stað \( + \) tilgreinum við að víxlhrif séu milli þeirra.

Það er ekki við hæfi að prófa hvort meðalgildi séu ólík hjá breytu sem víxlverkar við aðra breytu. Þess vegna framkvæmir drop1() eingöngu tilgátuprófið hvort að vixlverkun sé á milli breytanna.

lm2 <- lm(seinniPuls~inngrip*lik_fl, data=dat)
drop1(lm2,test='F')
## Single term deletions
## 
## Model:
## seinniPuls ~ inngrip * lik_fl
##                Df Sum of Sq   RSS AIC F value Pr(>F)
## <none>                      31047 794               
## inngrip:lik_fl  3       504 31552 790    0.74   0.53

Hér má sjá að víxlhrifin milli inngrips og líkamsræktar eru ekki marktæk, p-gildið er 0.53, sem er stærra en 0.05.

Normaldreifingarrit

Skipanirnar qqnorm() og qqline() teikna normaldreifingarrit fyrir líkanið. Þær eru mataðar með $resid af líkaninu.

Forsenda líkansins er sú að leifar líkansins séu normaldreifðar. Við viljum að punktarnir falli hér um bil á línuna, því það myndu normaldreifðar leifar gera.

qqnorm(lm2$resid)
qqline(lm2$resid)

plot of chunk unnamed-chunk-7

Takið eftir því hvernig punktarnir sveigja frá línunni í efra hægra horninu. Þetta gefur til kynna að stærstu frávikin séu of stór, þ.e.a.s. að einstaklingarnir geti verið með “óvenjulega” háan púls. Frávikin eru því ekki alveg normaldreifð, heldur örlítið hægri skekkt.