Tavaline lineaarne mudel

Tavalist regressioonanalüüsi, dispersioonanalüüsi või kovariatsioonanalüüsi mudelit on võimalik sobitada funktsiooni lm abil. Näiteks

> lm(weight ~ Time*Diet, data=ChickWeight)

Call:
lm(formula = weight ~ Time * Diet, data = ChickWeight)

Coefficients:
(Intercept)         Time        Diet2        Diet3        Diet4   Time:Diet2 
    30.9310       6.8418      -2.2974     -12.6807      -0.1389       1.7673 
 Time:Diet3   Time:Diet4 
     4.5811       2.8726  

Nagu näeme väljastatakse sellise käsu peale mudeli parameetrite hinnangud (baastasemeks valib R vaikimisi faktori esimese taseme), ent tavaliselt sellest üksi ei piisa. Seetõttu on hoopis levinum mudeli esmane salvestamine ja siis salvestatud mudelile erinevate (mudeli kohta käivaid tulemusi väljastavate) funktsioonide rakendamine. 

Seetõttu on mõistlikum talitada näiteks järgmiselt:

> m1=lm(weight ~ Time*Diet, data=ChickWeight)
> summary(m1)

Call:
lm(formula = weight ~ Time * Diet, data = ChickWeight)

Residuals:
     Min       1Q   Median       3Q      Max
-135.425  -13.757   -1.311   11.069  130.391

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)  30.9310     4.2468   7.283 1.09e-12 ***
Time          6.8418     0.3408  20.076  < 2e-16 ***
Diet2        -2.2974     7.2672  -0.316  0.75202   
Diet3       -12.6807     7.2672  -1.745  0.08154 . 
Diet4        -0.1389     7.2865  -0.019  0.98480   
Time:Diet2    1.7673     0.5717   3.092  0.00209 **
Time:Diet3    4.5811     0.5717   8.014 6.33e-15 ***
Time:Diet4    2.8726     0.5781   4.969 8.92e-07 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 34.07 on 570 degrees of freedom
Multiple R-squared: 0.773,      Adjusted R-squared: 0.7702
F-statistic: 277.3 on 7 and 570 DF,  p-value: < 2.2e-16

Kuivõrd faktorite olulisust testitakse reeglina tervikuna, siis on dispersioonanalüüsi või kovariatsioonanalüüsi korral mugavam kasutada funktsiooni anova:

> anova(m1)
Analysis of Variance Table

Response: weight
           Df  Sum Sq Mean Sq  F value    Pr(>F)   
Time        1 2042344 2042344 1759.757 < 2.2e-16 ***
Diet        3  129876   43292   37.302 < 2.2e-16 ***
Time:Diet   3   80804   26935   23.208 3.474e-14 ***
Residuals 570  661532    1161                      
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

mispeale väljastatakse nn. esimest tüüpi ruutude summad (ehk oluline on tunnuste järjekord mudelis). 

Sobitatud mudelist eraldavad olulist infot veel näiteks funktsioonid coef (parameetrite väärtused), confint (parameetrite usaldusvahemikud), residuals (mudeli jäägid). Mudeli abil prognoosida on võimalik funktsiooni predict abil. Lineaarse mudeli keerukamat diagnostikat võimaldab funktsioon influence.measures (aga ka selle abifailis loetletud funktsioonid) 

Üks kasulik funktsioon on veel drop1, mis võrdleb sobitatud mudeliga mudeleid, kus  üks tunnus on mudelist välja jäätud (ehk väljastades nn. kolmandat tüüpi ruutude summasid). Samas visatakse mudelist välja ainult kõrgemat järku liikmeid (s.o. kui mudelis on kaks peamõju ja nende koosmõju siis eemaldatakse mudelist vaid koosmõju), sest sageli ei oma vastav test muidu mõtet.

Niisiis

> drop1(m1,test="F")
Single term deletions

Model:
weight ~ Diet * Time
          Df Sum of Sq    RSS    AIC F value     Pr(F)   
<none>                 661532 4086.7                     
Diet:Time  3     80804 742336 4147.3  23.208 3.474e-14 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

 

Et kätte saada ka peamõjudele vastavad väärtused on mõistlik kasutada funktsiooni update abi, mis võimaldab lihtsa vaevaga mudelisse liikmeid lisada või neid sealt eemaldada:

> m2=update(m1,.~.-Time:Diet) 

Sümbolil . on siin süntaksis tähendus "kõik mis oli eelnevalt". Seega mudelis m2 on modeleeritavaks ikka tunnus weight, ent seletavate tunnustena Time ja Diet, mitte aga nende koosmõju. Nüüd siis näiteks

> drop1(m2,test="F")
Single term deletions

Model:
weight ~ Diet + Time
       Df Sum of Sq     RSS    AIC  F value     Pr(F)   
<none>               742336 4147.3                      
Diet    3    129876  872212 4234.5   33.417 < 2.2e-16 ***
Time    1   2016357 2758693 4904.1 1556.401 < 2.2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

 

Tasemetevahelist erinevust (mitmest võrdlust) võimaldab läbi viia näiteks funktsioon TukeyHSD