[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