[R] car::linearHypothesis Sum of Sqaures Error?
John Fox
jfox at mcmaster.ca
Tue Oct 9 20:59:13 CEST 2012
Dear John,
> -----Original Message-----
> From: John Jay Wiley Jr. [mailto:jwileyjr at syr.edu]
> Sent: Tuesday, October 09, 2012 9:17 AM
> To: John Fox
> Cc: r-help at r-project.org
> Subject: RE: [R] car::linearHypothesis Sum of Sqaures Error?
>
> John,
>
> Thank you for the reply.
>
> The data are balanced; I double-checked. I believe the contrasts are
> orthogonal. Sum of squares in summary(aov) with the contrasts split out
> add to the main effect. I am still unsure of where the error is for the
> sum of squares calculation.
>
> I have written some code with a parallel model structure that may help
> (see below).
>
> Can linearHypothesis return type II tests? It seems to only return type
> III with no option to set 'type'.
>
> Cheers,
> John
>
> y<-runif(36,0,100)
> block<-factor(rep(c("A","B","C"),each=12))
> a<-factor(rep(c("A","B"),times=3,each=6))
> b<-factor(rep(c("A","B"),times=6,each=3))
> c<-factor(rep(c("A","B","C"),times=12,each=1))
> covar<-0.6*y+rnorm(36,10,25)
> data<-data.frame(y,block,a,b,c,covar)
>
> c_contrasts<-matrix(c(-1,2,-1,1,0,-1),3,2)
> dimnames(c_contrasts)<-list(levels(data$c),c("B vs. A&C","A vs. C"))
> contrasts(data$c)<-c_contrasts
>
> model<-lm(y~block+a*b*c+covar,data=data)
> summary.aov(model,split=list(c=list("B vs. A&C"=1,"A vs. C"=2)))
> #Sum of squares add here, but factorial ANCOVA non-orthogonal in type I
> SS
>
> Anova(model,type=2)
> Anova(model,type=3)
> linearHypothesis(model,c("cB vs. A&C","cA vs. C"))
There are two problems here: (1) the covariate isn't balanced; (2) you
didn't pay attention to the contrasts for factors other than c. The default
is contr.treatment, which produces terms whose contrasts are not orthogonal
in the row basis of the design.
So, the following two ANOVAs (not ANCOVAs) give the same result, but the
third doesn't. For balanced data, types I (sequential), II, and III tests
should all be the same.
----------- snip --------------
model.2 <- lm(y~block+a*b*c, data=data)
anova(model.2)
Anova(model.2)
Anova(model.2, type=3) # incorrect
----------- snip --------------
Here's one way to get correct type III tests:
----------- snip --------------
options(contrasts=c("contr.sum", "contr.poly"))
model.3 <- update(model.2)
anova(model.3)
Anova(model.3)
Anova(model.3, type=3) # now all the same
----------- snip --------------
> #Anova and linear hypothesis produce equal sum of squares for c
> main effect in type III
> linearHypothesis(model,"cB vs. A&C")
> linearHypothesis(model,"cA vs. C")
> #Sum of squares of the individual contrasts do not add to the main
> effect of c
This is a manifestation of the same problem:
----------- snip --------------
linearHypothesis(model.3, c("cB vs. A&C","cA vs. C")) # SS equal to the sum
of the next two
linearHypothesis(model.3, "cB vs. A&C")
linearHypothesis(model.3, "cA vs. C")
----------- snip --------------
It doesn't make sense to ask whether linearHypothesis() does "type II" or
"type III" tests -- it just tests directly specified linear hypotheses
concerning the parameters of the model as parametrized. Anova() can
formulate sets of type II and III linear hypotheses (but for the latter, you
do have to pay attention to the parametrization).
Best,
John
>
>
> John J. Wiley, Jr.
> PhD Candidate
> State University of New York
> College of Environmental Science and Forestry
> Department of Environmental and Forest Biology
> 460 Illick Hall
> Syracuse, NY 13210
> 315.470.4825 (office)
> 740.590.6121 (cell)
>
> ________________________________________
> From: John Fox [jfox at mcmaster.ca]
> Sent: Tuesday, October 09, 2012 7:15 AM
> To: John Jay Wiley Jr.
> Cc: r-help at r-project.org
> Subject: Re: [R] car::linearHypothesis Sum of Sqaures Error?
>
> Dear John
>
> On Tue, 9 Oct 2012 02:07:07 +0000
> "John Jay Wiley Jr." <jwileyjr at syr.edu> wrote:
> > I am working with a RCB 2x2x3 ANCOVA, and I have noticed a difference
> in the calculation of sum of squares in a Type III calculation.
>
> For type III tests, you should use contrasts that are orthogonal in the
> row basis of the design. Perhaps you've done that (by setting the
> contrasts for the factors directly), but I suspect not. Why not just use
> type II tests? They're hard to screw up.
>
> As well, I assume that the variables that enter additively are the
> covariates. If not, and a covariate is involved in the interaction, the
> type III tests aren't sensible unless the 0 point of the covariate is
> where you want to test a "main effect" or lower-order interaction.
>
> >
> > Anova output is a follows:
> >
> > > Anova(aov(MSOIL~Forest+Burn*Thin*Moisture+ROCK,data=env3l),type=3)
> > Anova Table (Type III tests)
> >
> > Response: MSOIL
> > Sum Sq Df F value Pr(>F)
> > (Intercept) 22.3682 1 53.2141 3.499e-07 ***
> > Forest 1.0954 2 1.3029 0.29282
> > Burn 2.6926 1 6.4058 0.01943 *
> > Thin 0.0494 1 0.1176 0.73503
> > Moisture 1.2597 2 1.4984 0.24644
> > ROCK 2.1908 1 5.2119 0.03296 *
> > Burn:Thin 0.2002 1 0.4764 0.49763
> > Burn:Moisture 1.0612 2 1.2623 0.30360
> > Thin:Moisture 1.6590 2 1.9734 0.16392
> > Burn:Thin:Moisture 1.1175 2 1.3292 0.28605
> > Residuals 8.8272 21
> >
> >
> > However, I would like to calculate some a priori contrasts within the
> Moisture factor as follows:
> >
> > Transect_moisture_contrasts<-matrix(c(-1,2,-1,1,0,-1),3,2)
> > dimnames(Transect_moisture_contrasts)<-list(levels(env$Moisture),c("I
> vs. X&M","X vs. M"))
> > contrasts(env$Moisture)<-Transect_moisture_contrasts
> > > contrasts(env3l$Moisture)
> > I vs. X&M X vs. M
> > X -1 1
> > I 2 0
> > M -1 -1
> >
> >
> > soilmodel<-lm(MSOIL~Forest+Burn*Thin*Moisture+ROCK,data=env3l)
> > > linearHypothesis(soilmodel,"MoistureI vs. X&M")
> > Linear hypothesis test
> >
> > Hypothesis:
> > MoistureI vs. X&M = 0
> >
> > Model 1: restricted model
> > Model 2: MSOIL ~ Forest + Burn * Thin * Moisture + ROCK
> >
> > Res.Df RSS Df Sum of Sq F Pr(>F)
> > 1 22 9.4106
> > 2 21 8.8272 1 0.58333 1.3877 0.252
> > > linearHypothesis(soilmodel,"MoistureX vs. M")
> > Linear hypothesis test
> >
> > Hypothesis:
> > MoistureX vs. M = 0
> >
> > Model 1: restricted model
> > Model 2: MSOIL ~ Forest + Burn * Thin * Moisture + ROCK
> >
> > Res.Df RSS Df Sum of Sq F Pr(>F)
> > 1 22 9.6359
> > 2 21 8.8272 1 0.80871 1.9239 0.18
> >
> > The sum of squares for these two contrasts do not add up to the sum of
> squares of the main effect Moisture
> > > .80871+.58333
> > [1] 1.39204
> > > 1.39204-1.2596
> > [1] 0.13244
> >
> > Checking them together produces the correct sum of squares for the
> main effect
> > > linearHypothesis(soilmodel,c("MoistureI vs. X&M","MoistureX vs. M"))
> > Linear hypothesis test
> >
> > Hypothesis:
> > MoistureI vs. X&M = 0
> > MoistureX vs. M = 0
> >
> > Model 1: restricted model
> > Model 2: MSOIL ~ Forest + Burn * Thin * Moisture + ROCK
> >
> > Res.Df RSS Df Sum of Sq F Pr(>F)
> > 1 23 10.0869
> > 2 21 8.8272 2 1.2596 1.4984 0.2464
> >
> >
> > So my question is:
> > Should the sum of squares for the two contrasts add to the main effect
> here?
>
> Only if the data are balanced.
>
> I hope this helps,
> John
>
> ------------------------------------------------
> John Fox
> Sen. William McMaster Prof. of Social Statistics
> Department of Sociology
> McMaster University
> Hamilton, Ontario, Canada
> http://socserv.mcmaster.ca/jfox/
>
> > If they should, maybe we can figure out why mine do not.
> >
> > Thanks in advance for any assistance.
> >
> > Cheers,
> > John
> >
> >
> > John J. Wiley, Jr.
> > PhD Candidate
> > State University of New York
> > College of Environmental Science and Forestry
> > Department of Environmental and Forest Biology
> > 460 Illick Hall
> > Syracuse, NY 13210
> > 315.470.4825 (office)
> > 740.590.6121 (cell)
> >
> > [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide http://www.R-project.org/posting-
> guide.html
> > and provide commented, minimal, self-contained, reproducible code.
>
>
More information about the R-help
mailing list