Dear all,
When using contr.sdif (from MASS), is it true that the *Intercept* is the
mean of the response variable *across all levels* of the explanatory
variables included in the model? Somehow, it doesn?t seem to be the
overall mean.
Many thanks for any help!
Christoph
# Below is an example:
# (using R 2.10.0 on Windows XP)
####
options(contrasts=c("contr.sdif","contr.poly"))
test1=lm(response.variable~G,mydata)
                   Estimate Std. Error t value Pr(>|t|)
(Intercept)           347.05      15.23  22.783  < 2e-16 ***
GLevel1-GLevel2       192.61      30.47   6.322 1.43e-08 ***
# so the contr.sdif intercept is
# the MEAN of the response variable *across all levels of G*, right?
#####
options(contrasts=c("contr.treatment","contr.poly"))
test2=lm(response.variable~G,mydata)
summary(test2)
             Estimate Std. Error t value Pr(>|t|)
(Intercept)   250.74      22.45  11.167  < 2e-16 ***
GLevel2       192.61      30.47   6.322 1.43e-08 ***
# With contr.treatment, the intercept obviously is the mean of
# the first level of G.
####
options(contrasts=c("contr.sdif","contr.poly"))
test3=lm(response.variable~G+covariate,mydata)
summary(test3)
                   Estimate Std. Error t value Pr(>|t|)
(Intercept)          362.757     26.586  13.645  < 2e-16 ***
GLevel1-GLevel2      201.557     32.976   6.112 3.63e-08 ***
covariate             -7.424     10.281  -0.722    0.472
# note that 362.757-0.5*201.557=261.9785 (The GLevel1 mean in test4)
####
options(contrasts=c("contr.treatment","contr.poly"))
test4=lm(response.variable~G+covariate,mydata)
summary(test4)
	  	Estimate Std. Error t value Pr(>|t|)
(Intercept)     261.979     27.375   9.570 8.50e-15 ***
GLevel2         201.557     32.976   6.112 3.63e-08 ***
covariate        -7.424     10.281  -0.722    0.472
###
tapply(mydata$response.variable,mydata$G,mean)
GLevel2    Level1
  250.7432   443.3523
mean(tapply(mydata$response.variable,mydata$G,mean))
##  347.0478 #corresponding to the intercept term in test1
with(mydata,mean(tapply(response.variable,list(covariate,G),mean)))
# [1] 363.5611 #this *seems* to be similar to the test3 intercept?!