[R] Why does the order of terms in a formula translate into different models/ model matrices?
Alexandra
alku at imm.dtu.dk
Fri Jan 27 14:04:30 CET 2012
Dear all,
I have encountered some strange things when creating lm objects in R: model
depends on the order of the terms specified in a formula.
Let us consider the following simple example:
> dat <- expand.grid(A = factor(c("a1", "a2")),
+ B = factor(paste("b", 1:4, sep="")),
+ rep = factor(1:2))
> set.seed(12345)
> dat$x <- 1:16 * .5 + runif(16)
> dat$Y <- rnorm(16)
> dat
A B rep x Y
1 a1 b1 1 1.220904 -0.2841597
2 a2 b1 1 1.875773 -0.9193220
3 a1 b2 1 2.260982 -0.1162478
4 a2 b2 1 2.886125 1.8173120
5 a1 b3 1 2.956481 0.3706279
6 a2 b3 1 3.166372 0.5202165
7 a1 b4 1 3.825095 -0.7505320
8 a2 b4 1 4.509224 0.8168998
9 a1 b1 2 5.227705 -0.8863575
10 a2 b1 2 5.989737 -0.3315776
11 a1 b2 2 5.534535 1.1207127
12 a2 b2 2 6.152373 0.2987237
13 a1 b3 2 7.235685 0.7796219
14 a2 b3 2 7.001137 1.4557851
15 a1 b4 2 7.891203 -0.6443284
16 a2 b4 2 8.462495 -1.5531374
> logLik(m0 <- lm(Y ~ A:B + x:A, dat))
'log Lik.' -13.22186 (df=11)
> logLik(m1 <- lm(Y ~ x:A + A:B, dat))
'log Lik.' -13.66822 (df=10)
To me it is a bit strange that m0 and m1 models appear to have different
loglikelihood (only the order of the terms in a formula was changed!)
My guess is that the problem lies in model.matrix:
X1 <- model.matrix(~ x:A + A:B, dat)
X2 <- model.matrix(~ A:B + x:A, dat)
## number of columns:
ncol(X1) ## 9
> ncol(X2) ## 11
## rank of design matrices:
qr(X1)$rank ## 9
qr(X2)$rank ## 10
Will be very grateful if someone could help me here!
Thanks,
Alexandra
--
View this message in context: http://r.789695.n4.nabble.com/Why-does-the-order-of-terms-in-a-formula-translate-into-different-models-model-matrices-tp4333408p4333408.html
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help
mailing list