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.