[R] Type III ANOVA of package car depends on factor level order
Xiaoxu LI
lixiaoxu at gmail.com
Mon Nov 17 20:27:29 CET 2008
## Question1: How to define IV with interaction alone, without main effects?
## Question2: Should Type III ANOVA in package car be independent of
the factor level order?
## data from http://www.otago.ac.nz/sas/stat/chap30/sect52.htm
drug <- c(t(t(rep(1,3)))%*%t(1:4));
disease <- c(t(t(1:3)) %*% t(rep(1,4)));
y <- t(matrix(c(
42 ,44 ,36 ,13 ,19 ,22
,33 ,NA ,26 ,NA ,33 ,21
,31 ,-3 ,NA ,25 ,25 ,24
,28 ,NA ,23 ,34 ,42 ,13
,NA ,34 ,33 ,31 ,NA ,36
,3 ,26 ,28 ,32 ,4 ,16
,NA ,NA ,1 ,29 ,NA ,19
,NA ,11 ,9 ,7 ,1 ,-6
,21 ,1 ,NA ,9 ,3 ,NA
,24 ,NA ,9 ,22 ,-2 ,15
,27 ,12 ,12 ,-5 ,16 ,15
,22 ,7 ,25 ,5 ,12 ,NA
),nrow=6));
## verify data with http://www.otago.ac.nz/sas/stat/chap30/sect52.htm
(cbind(drug,disease,y));
## make a big table
drug <- as.factor(rep(drug,6));
disease <- as.factor(rep(disease,6));
y <- c(y);
## verify data through type I ANOVA to
http://www.otago.ac.nz/sas/stat/chap30/sect52.htm
anova(lm(y~drug*disease));
require(car);
## Type III ANOVA in package car is not Type III ANOVA in SAS
Anova(lm(y~drug*disease),type='III');
## Type III ANOVA in package car equates to wishful
## "anova(lm(y~INTERACTION +disease),lm(y~drug*disease))"
## However in R, df of lm(y~drug:disease) is automatically df of
lm(y~drug*disease)
## How to define IV with interaction alone, without main effects?
## Verify type III of package car to be (INTERACTION + disease) vs.
(disease*drug)
## However at the 3rd row, replace the maximun levels(drug==4,
disease=3) with the minimum levels (==1).
rbind(Anova(lm(y~drug*disease),type='III')$'Sum Sq'[2:4]
, c(
anova(
lm(y~ 1
+ ( I((drug==2)&(disease==2))
+ I((drug==3)&(disease==2))
+ I((drug==4)&(disease==2))
+ I((drug==2)&(disease==3))
+ I((drug==3)&(disease==3))
+ I((drug==4)&(disease==3))
)
+ ( I(disease==2) + I(disease==3)))
,lm(y~drug*disease))$'Sum of Sq'[2]
, anova(
lm(y~ 1
+ ( I((drug==2)&(disease==2))
+ I((drug==3)&(disease==2))
+ I((drug==4)&(disease==2))
+ I((drug==2)&(disease==3))
+ I((drug==3)&(disease==3))
+ I((drug==4)&(disease==3))
)
+ ( I(drug==2) + I(drug==3) + I(drug==4)))
,lm(y~drug*disease))$'Sum of Sq'[2]
, anova(lm(y~drug+disease),lm(y~drug*disease))$'Sum of Sq'[2]
)
,
c(
anova(
lm(y~ 1
+ ( I((drug==2)&(disease==2))
+ I((drug==3)&(disease==2))
+ I((drug==1)&(disease==2))
+ I((drug==2)&(disease==1))
+ I((drug==3)&(disease==1))
+ I((drug==1)&(disease==1))
)
+ ( I(disease==2) + I(disease==1)))
,lm(y~drug*disease))$'Sum of Sq'[2]
, anova(
lm(y~ 1
+ ( I((drug==2)&(disease==2))
+ I((drug==3)&(disease==2))
+ I((drug==1)&(disease==2))
+ I((drug==2)&(disease==1))
+ I((drug==3)&(disease==1))
+ I((drug==1)&(disease==1))
)
+ ( I(drug==2) + I(drug==3) + I(drug==1)))
,lm(y~drug*disease))$'Sum of Sq'[2]
, anova(lm(y~drug+disease),lm(y~drug*disease))$'Sum of Sq'[2]
)
)
## I don't know whether the problem is in anova(lm1,lm2) or lm, or Anova
## while type II is independent of level order --
rbind(Anova(lm(y~drug*disease),type='II')$'Sum Sq'[1:3]
, c(
anova(
lm(y~ 1+disease)
,lm(y~ 1
+ ( I(drug==2)
+ I(drug==3)
+ I(drug==4)
)
+ ( I(disease==2) + I(disease==3)))
,lm(y~drug*disease))$'Sum of Sq'[2]
, anova(
lm(y~ 1+drug)
,lm(y~ 1
+ ( I(drug==2)
+ I(drug==3)
+ I(drug==4)
)
+ ( I(disease==2) + I(disease==3)))
,lm(y~drug*disease))$'Sum of Sq'[2]
, anova(lm(y~drug+disease),lm(y~drug*disease))$'Sum of Sq'[2]
)
,
c(
anova(
lm(y~ 1+disease)
,lm(y~ 1
+ ( I(drug==2)
+ I(drug==3)
+ I(drug==1)
)
+ ( I(disease==2) + I(disease==1)))
,lm(y~drug*disease))$'Sum of Sq'[2]
, anova(
lm(y~ 1+drug)
,lm(y~ 1
+ ( I(drug==2)
+ I(drug==3)
+ I(drug==1)
)
+ ( I(disease==2) + I(disease==1)))
,lm(y~drug*disease))$'Sum of Sq'[2]
, anova(lm(y~drug+disease),lm(y~drug*disease))$'Sum of Sq'[2]
)
)
## LI, Xiaoxu
## School of Humanities & Social Sciences, Shenzhen Graduate School of
Peking Univ.
## http://lixiaoxu.lxxm.com/
More information about the R-help
mailing list