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?!