[R] Help with three-way anova

John Fox jfox at mcmaster.ca
Wed Apr 6 15:11:53 CEST 2005


Dear Mick,

If all factors have two levels, then, with contr.sum (which you've
apparently used here), the t-tests will be equivalent to "Type-III" F-tests.
Alternatively, you can get either the "Type-II" or "Type-III" tests (most
people prefer the former) from the Anova() function in the car package.

I hope this helps,
 John

--------------------------------
John Fox
Department of Sociology
McMaster University
Hamilton, Ontario
Canada L8S 4M4
905-525-9140x23604
http://socserv.mcmaster.ca/jfox 
-------------------------------- 

> -----Original Message-----
> From: r-help-bounces at stat.math.ethz.ch 
> [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of 
> michael watson (IAH-C)
> Sent: Wednesday, April 06, 2005 7:18 AM
> To: John Fox
> Cc: r-help
> Subject: RE: [R] Help with three-way anova
> 
> Hi John
> 
> Thanks for your help, that was a very clear answer.  It looks 
> as though, due to my design, the best way forward is:
> 
> > contrasts(il4$Infected)
>    [,1]
> I    -1
> UI    1
> > contrasts(il4$Vaccinated)
>    [,1]
> UV   -1
> V     1
> > summary(lm(IL.4 ~ Infected * Vaccinated, il4))
> 
> Thanks
> Mick
> 
> -----Original Message-----
> From: John Fox [mailto:jfox at mcmaster.ca]
> Sent: 06 April 2005 12:52
> To: michael watson (IAH-C)
> Cc: 'r-help'; f.calboli at imperial.ac.uk
> Subject: RE: [R] Help with three-way anova
> 
> 
> Dear Mick,
> 
> For a three-way ANOVA, the difference between aov() and lm() is mostly
> in the print and summary methods -- aov() calls lm() but in 
> its summary
> prints an ANOVA table rather than coefficient estimates, etc. You can
> get the same ANOVA table from the object returned by lm via 
> the anova()
> function. The problem, however, is that for unbalanced data you'll get
> sequential sums of squares which likely don't test hypotheses of
> interest to you.
> 
> If you didn't explicitly set the contrast coding, then the out-of-box
> default in R [options("contrasts")] is to use treatment.contr(), which
> produces dummy-coded (0/1) contrasts. In this case, the "intercept"
> represents the fitted value when all of the factors are at their
> baseline levels, and it's probably entirely uninteresting to test
> whether it is 0.
> 
> More generally, however, it seems unreasonable to try to learn how to
> fit and interpret linear models in R from the help files. There's a
> brief treatment in the Introduction to R manual that's 
> distributed with
> R, and many other more detailed treatments -- see
> http://www.r-project.org/other-docs.html.
> 
> Regards,
>  John
> 
> --------------------------------
> John Fox
> Department of Sociology
> McMaster University
> Hamilton, Ontario
> Canada L8S 4M4
> 905-525-9140x23604
> http://socserv.mcmaster.ca/jfox 
> -------------------------------- 
> 
> > -----Original Message-----
> > From: r-help-bounces at stat.math.ethz.ch
> > [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of 
> > michael watson (IAH-C)
> > Sent: Wednesday, April 06, 2005 4:31 AM
> > To: f.calboli at imperial.ac.uk
> > Cc: r-help
> > Subject: RE: [R] Help with three-way anova
> > 
> > OK, now I am lost.
> > 
> > I went from using aov(), which I fully understand, to lm()
> > which I probably don't.  I didn't specify a contrasts matrix 
> > in my call to lm()....
> > 
> > Basically I want to find out if Infected/Uninfected affects
> > the level of IL.4, and if Vaccinated/Unvaccinated affects the 
> > level of IL.4, obviously trying to separate the effects of 
> > Infection from the effects of Vaccination.
> > 
> > The documentation for specifying contrasts to lm() is a
> > little convoluted, sending me to the help file for 
> > model.matrix.default, and the help there doesn't really give 
> > me much to go on when trying to figure out what contrasts 
> > matrix I need to use...
> > 
> > Many thanks for your help
> > 
> > Mick
> > 
> > -----Original Message-----
> > From: Federico Calboli [mailto:f.calboli at imperial.ac.uk]
> > Sent: 06 April 2005 10:15
> > To: michael watson (IAH-C)
> > Cc: r-help
> > Subject: RE: [R] Help with three-way anova
> > 
> > 
> > On Wed, 2005-04-06 at 09:11 +0100, michael watson (IAH-C) wrote:
> > > OK, so I tried using lm() instead of aov() and they give similar
> > > results:
> > > 
> > > My.aov <-  aov(IL.4 ~ Infected + Vaccinated + Lesions, data)
> > > My.lm  <-   lm(IL.4 ~ Infected + Vaccinated + Lesions, data)
> > 
> > Incidentally, if you want interaction terms you need
> > 
> > lm(IL.4 ~ Infected * Vaccinated * Lesions, data)
> > 
> > for all the possible interactions in the model (BUT you need enough 
> > degrees of freedom from the start to be able to do this).
> > > 
> > > If I do summary(My.lm) and summary(My.aov), I get similar
> > results, but
> > 
> > > not identical. If I do anova(My.aov) and anova(My.lm) I get
> > identical
> > > results.  I guess that's to be expected though.
> > > 
> > > Regarding the results of summary(My.lm), basically
> > Intercept, Infected
> > 
> > > and Vaccinated are all significant at p<=0.05.  I presume the
> > > signifcance of the Intercept is that it is significantly 
> > different to
> > > zero?  How do I interpret that?
> > 
> > I guess it's all due to the contrast matrix you used. Check with
> > contrasts() the term(s) in the datafile you use as independent 
> > variables, and change the contrast matrix as you see fit.
> > 
> > HTH,
> > 
> > F
> > --
> > Federico C. F. Calboli
> > Department of Epidemiology and Public Health
> > Imperial College, St Mary's Campus
> > Norfolk Place, London W2 1PG
> > 
> > Tel  +44 (0)20 7594 1602     Fax (+44) 020 7594 3193
> > 
> > f.calboli [.a.t] imperial.ac.uk
> > f.calboli [.a.t] gmail.com
> > 
> > ______________________________________________
> > R-help at stat.math.ethz.ch mailing list 
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide!
> > http://www.R-project.org/posting-guide.html
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! 
> http://www.R-project.org/posting-guide.html




More information about the R-help mailing list