# 1. In this case I don't seem to be getting contr.sum contrasts:
options(contrasts = c("contr.sum", "contr.poly"))
getOption("contrasts")
[1] "contr.sum" "contr.poly"
scores <- rep(seq(-2, 2), 3); scores
[1] -2 -1 0 1 2 -2 -1 0 1 2 -2 -1 0 1 2
[1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
Levels: 1 2 3
# I get this:
model.matrix(~ scores:fac)
(Intercept) scores:fac1 scores:fac2 scores:fac3
1 1 -2 0 0
2 1 -1 0 0
3 1 0 0 0
4 1 1 0 0
5 1 2 0 0
6 1 0 -2 0
7 1 0 -1 0
8 1 0 0 0
9 1 0 1 0
10 1 0 2 0
11 1 0 0 -2
12 1 0 0 -1
13 1 0 0 0
14 1 0 0 1
15 1 0 0 2
attr(,"assign")
[1] 0 1 1 1
attr(,"contrasts")
attr(,"contrasts")$fac
[1] "contr.sum"
# But I was expecting this since I am using contr.sum
cbind(1, model.matrix(~ fac)[,2:3] * scores)
fac1 fac2
1 1 -2 0
2 1 -1 0
3 1 0 0
4 1 1 0
5 1 2 0
6 1 0 -2
7 1 0 -1
8 1 0 0
9 1 0 1
10 1 0 2
11 1 2 2
12 1 1 1
13 1 0 0
14 1 -1 -1
15 1 -2 -2
# 2.
# here I don't get contr.sum but rather get contr.treatment
options(contrasts = c("contr.treatment", "contr.poly"))
getOption("contrasts")
[1] "contr.treatment" "contr.poly"
model.matrix(lm(seq(15) ~ fac, contrasts = c("contr.sum", "contr.poly")))
(Intercept) fac2 fac3
1 1 0 0
2 1 0 0
3 1 0 0
4 1 0 0
5 1 0 0
6 1 1 0
7 1 1 0
8 1 1 0
9 1 1 0
10 1 1 0
11 1 0 1
12 1 0 1
13 1 0 1
14 1 0 1
15 1 0 1
attr(,"assign")
[1] 0 1 1
attr(,"contrasts")
attr(,"contrasts")$fac
[1] "contr.treatment"
model.matrix(lm(seq(15) ~ fac)) # same
(Intercept) fac2 fac3
1 1 0 0
2 1 0 0
3 1 0 0
4 1 0 0
5 1 0 0
6 1 1 0
7 1 1 0
8 1 1 0
9 1 1 0
10 1 1 0
11 1 0 1
12 1 0 1
13 1 0 1
14 1 0 1
15 1 0 1
attr(,"assign")
[1] 0 1 1
attr(,"contrasts")
attr(,"contrasts")$fac
[1] "contr.treatment"
# I was expecting the first one to give me this
options(contrasts = c("contr.sum", "contr.poly"))
model.matrix(lm(seq(15) ~ fac))
(Intercept) fac1 fac2
1 1 1 0
2 1 1 0
3 1 1 0
4 1 1 0
5 1 1 0
6 1 0 1
7 1 0 1
8 1 0 1
9 1 0 1
10 1 0 1
11 1 -1 -1
12 1 -1 -1
13 1 -1 -1
14 1 -1 -1
15 1 -1 -1
attr(,"assign")
[1] 0 1 1
attr(,"contrasts")
attr(,"contrasts")$fac
[1] "contr.sum"
[1] "R version 2.10.1 (2009-12-14)"
[1] "Windows Vista (build 6002) Service Pack 2"