Anova: 1-factor model
# lees data
> bron <- "http://www.mzandee.net/~zandee/statistiek/data/haemo.txt"
> ziek <- read.table(bron, header=T)
> attach(ziek)
> names(ziek)
[1] "haemo" "ziekte"
> ziek
haemo ziekte
1 13 A
2 13 A
3 15 A
4 12 A
5 9 B
6 10 B
7 11 B
8 10 B
9 10 B
10 7 C
11 6 C
12 6 C
13 8 C
# doe 1-factor variantieanalyse
> anova(aov(haemo~ziekte, data=ziek))
Analysis of Variance Table
Response: haemo
|
|
Df |
Sum Sq |
Mean Sq |
F value |
Pr(>F) |
|
ziekte |
2 |
84.50 |
42.25 |
44.474 |
1.054e-05 ** |
|
Residuals |
10 |
9.50 |
0.95 |
|
|
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
en nu 'op het handje' in R...
# laat totaal-kwadraatsom grafisch zien
plot(1:13,haemo,ylim=c(5,16), ylab="y",xlab="volgorde")
abline(mean(haemo),0)
for(i in 1:13) lines(c(i,i),c(mean(haemo),haemo[i]))
plot(1:13,haemo,ylim=c(5,16), type="n", ylab="y",xlab="volgorde")

# bereken totaal kwadraatsom
sst <- sum((haemo-mean(haemo))^2)
sst # = variatie veroorzaakt door ziekten + residu
[1] 94 # klopt ! [zie anova-tabel]
# laat binnen-kwadraatsom grafisch zien
points(1:4, haemo[ziekte=="A"], pch=1)
points(5:9, haemo[ziekte=="B"], pch=16)
points(10:13, haemo[ziekte=="C"], pch=8)
abline(mean(haemo[ziekte=="A"]),0)
abline(mean(haemo[ziekte=="B"]),0)
abline(mean(haemo[ziekte=="C"]),0)
for(i in 1:4) lines(c(i,i),c(mean(haemo[ziekte=="A"]),haemo[ziekte=="A"][i]))
for(i in 1:4) lines(c(i+4,i+4),c(mean(haemo[ziekte=="B"]),haemo[ziekte=="B"][i]))
for(i in 1:4) lines(c(i+9,i+9),c(mean(haemo[ziekte=="C"]),haemo[ziekte=="C"][i]))

# bereken binnen kwadraatsommen
ssa <- sum((haemo[ziekte=="A"]-mean(haemo[ziekte=="A"]))^2)
ssa
[1] 4.75
ssb <-sum((haemo[ziekte=="B"]-mean(haemo[ziekte=="B"]))^2)
ssb
[1] 2
ssc <- sum((haemo[ziekte=="C"]-mean(haemo[ziekte=="C"]))^2)
ssc
[1] 2.75
residu <- ssa + ssb + ssc
residu
[1] 9.5 # klopt !
Bron:
Buijs, A. - Statistiek om mee te werken. Stenfert Kroese, Groningen (2003)
Crawley, M.J. - Statistics. An introduction using R. Wiley, Hoboken, NJ, USA (2005)