Re: [R] Two-factor ANOVA Help

From: Gabor Grothendieck <ggrothendieck_at_gmail.com>
Date: Sun 09 Oct 2005 - 00:20:17 EST

On 10/8/05, Gabor Grothendieck <ggrothendieck@gmail.com> wrote:
> On 10/8/05, Jim Brindle <j_brindle@hotmail.com> wrote:
> > Hello,
> >
> > I am trying to perform a two-factor ANOVA analysis using a blocking design with "Vol" as the response variable. My intent is to have "Rater" treated as the treatment variable and the "Pipe" treated as the blocking variable. I am reading and preparing my dataset using the following three lines of code:
> >
> > values <- read.table("filename", header=TRUE)
> > attach(values)
> > values = data.frame(values)
> >
> > The dataset is the following:
> >
> > Pipe Rater Volume
> > 1 A 5.129
> > 1 B 5.296
> > 1 C 4.679
> > 1 D 4.776
> > 2 A 8.519
> > 2 B 8.482
> > 2 C 7.659
> > 2 D 7.798
> > 3 A 13.769
> > 3 B 14.621
> > 3 C 12.418
> > 3 D 13.189
> >
> > Below there are 2 versions which I've used to run my analysis.
> >
> > Option #1:
> >
> > g <- lm(Volume ~ factor(Rater) + factor(Pipe), values)
> > print(anova(g))
> >
> > Option #2:
> >
> > Rater <- as.factor(Rater)
> > Pipe <- as.factor(Pipe)
> > g <- lm(Volume ~ Rater + Pipe, values)
> > print(anova(g))
> >
> >
> > A couple of questions I have are:
> >
> > 1. I thought that option #1 and option #2 would have given me the same results and they don't appear to. The only difference (to me) is how I have specified the factors used in the model. However, there appears to be something else I am missing and I was just wondering if anyone has any insight as to which is the correct way to code this analysis?
>
> Note that values, as returned from read.table, is already a data frame

> and Rater is already a factor so you only need to convert Pipe to a
> factor:
>
> values <- read.table("filename.dat", header = TRUE)
>
> # shows classes of columns among other things
> # note that Rater is already a factor and values is already a data frame
> str(g)
>
> # convert Pipe to a factor
> values$Pipe <- factor(values$Pipe)
> g <- lm(Volume ~., values)
> g
>
> >
> > 2. Unless otherwise specified is there a particular reference level that R uses by default - for example in this case, the second treatment level (Rater B)?
>
> By default R uses treatment contrasts and uses the first level as the baseline.
> You can change this using contrasts and contr.treatment.
>
> e.g. To use treatment effects on Pipe with level 2 as the baseline:
>
> contrasts(values$Pipe) <- contr.treatment(3, base = 2)
> g2 <- lm(Volume ~., values)
> g2
>
> >
> > 3. Is there a good reference someone can point me to for more insight on the two-factor ANOVA analysis with R?
> >
>
> See ?read.table, ?contrasts, ?contr.treatment
>

One more point. In your #2 the second argument to lm is specified as values so that's where lm will look for the variables. The Rater and Pipe defined immediately above that line will never be found since those variables will already have been found in the values data frame.



R-help@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 Received on Sun Oct 09 00:24:30 2005

This archive was generated by hypermail 2.1.8 : Sun 23 Oct 2005 - 18:32:17 EST