[R] car::Anova - Can it be used for ANCOVA with repeated-measures factors.

John Fox jfox at mcmaster.ca
Sun Jul 22 23:25:42 CEST 2012


Dear Henrik,

The within-subjects contrasts are constructed by Anova() to be orthogonal in the row-basis of the design, so you should be able to safely ignore the effects in which (for some reason that escapes me) you are uninterested. This would also be true (except for the estimated error) for the between-subjects design if you used "type-II" tests. It's true that the "type-III" between-subjects tests will be affected by the presence of an interaction, but for these tests to make sense at all, you have to formulate the model very carefully. For example, your type-III test for the "main effect" of treatment with the interaction in the model is for the treatment effect at age 0. Does that really make sense to you? Indeed, the type-III tests for the ANOVA (not ANCOVA) model only make sense because I was careful to use contrasts for the between-subjects factors that are orthogonal in the basis of the design:

 > contrasts(OBrienKaiser$treatment)
        [,1] [,2]
control   -2    0
A          1   -1
B          1    1

> contrasts(OBrienKaiser$gender)
  [,1]
F    1
M   -1

Best,
 John

On Sun, 22 Jul 2012 22:06:58 +0200
 Henrik Singmann <henrik.singmann at psychologie.uni-freiburg.de> wrote:
> Dear John,
> 
> thanks for your response. But if I simply ignore the unwanted effects, the estimates of the main effects for the within-subjects factors are distroted (rationale see below). Or doesn't this hold for between-within interactions?
> 
> Or put another way: Do you think this approach is the correct way of running an ANCOVA involving within-subject factors?
> 
> As far as I understand ANCOVA, the covariate(s) should only be additive factors and do not interact with the factors of interest:
> "Suppose that differences in [the mean of the covariate] are due to sources of variation related to [the mean of the dependent variable], but not directly related to the treatment effects." (Winer, 1972, p. 753, the parts in squared bracktes exchange the mathematical symbols with the definition).
> 
> Best,
> Henrik
> 
> PS: Showing that adding the interaction term massively changes the main effect for a between-factor:
> 
> > # The ANCOVA:
> > Anova(lm(pre.1 ~ treatment + age, data = n.OBrienKaiser), type = 3)
> Anova Table (Type III tests)
> 
> Response: pre.1
>              Sum Sq Df F value Pr(>F)
> (Intercept)    0.0  1    0.01   0.90
> treatment      0.3  2    0.06   0.94
> age            4.5  1    1.54   0.24
> Residuals     34.9 12
> >
> > # The ANOVA:
> > Anova(lm(pre.1 ~ treatment, data = n.OBrienKaiser), type = 3)
> Anova Table (Type III tests)
> 
> Response: pre.1
>              Sum Sq Df F value     Pr(>F)
> (Intercept)  225.6  1   74.47 0.00000097 ***
> treatment      1.1  2    0.17       0.84
> Residuals     39.4 13
> ---
> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> >
> > # The model with interaction
> > Anova(lm(pre.1 ~ treatment * age, data = n.OBrienKaiser), type = 3)
> Anova Table (Type III tests)
> 
> Response: pre.1
>                Sum Sq Df F value Pr(>F)
> (Intercept)     3.01  1    1.40  0.264
> treatment      13.71  2    3.18  0.085 .
> age            11.56  1    5.37  0.043 *
> treatment:age  13.37  2    3.11  0.089 .
> Residuals      21.53 10
> ---
> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> >
> 
> 
> Am 22.07.2012 16:59, schrieb John Fox:
> > Dear Henrik,
> >
> > As you discovered, entering the covariate age additively into the between-subject model doesn't prevent Anova() from reporting tests for the interactions between age and the within-subjects factors. I'm not sure why you would want to do so, but you could simply ignore these tests.
> >
> > I hope this helps,
> >   John
> >
> > --------------------------------
> > John Fox
> > Senator William McMaster
> >    Professor of Social Statistics
> > Department of Sociology
> > McMaster University
> > Hamilton, Ontario, Canada
> > http://socserv.mcmaster.ca/jfox
> >
> >
> >
> >> -----Original Message-----
> >> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> >> project.org] On Behalf Of Henrik Singmann
> >> Sent: July-21-12 1:29 PM
> >> To: r-help at stat.math.ethz.ch
> >> Subject: [R] car::Anova - Can it be used for ANCOVA with repeated-
> >> measures factors.
> >>
> >> Dear list,
> >>
> >> I would like to run an ANCOVA using car::Anova with repeated measures
> >> factors, but I can't figure out how to do it. My (between-subjects)
> >> covariate always interacts with my within-subject factors.
> >> As far as I understand ANCOVA, covariates usually do not interact with
> >> the effects of interest but are simply additive (or am I wrong here?).
> >>
> >> More specifically, I can add a covariate as a factor to the between-
> >> subjects part when fitting the MLM that behaves like expected (i.e.,
> >> does not interact with the other factors), but when calling Anova on
> >> the model, I don't know how I can specify the between-within design
> >> (i.e., which parts of the model should interact with the repeated
> >> measures factors).
> >>
> >> As far as I understand it, neither the idesign, icontrasts or imatrix
> >> arguments, nor the linearHypothesis function can specify the within-
> >> between design (as far as I get it they all specify the within or
> >> intra-subject design, see John Fox's slides from User 2011:
> >> http://web.warwick.ac.uk/statsdept/useR-
> >> 2011/TalkSlides/Contributed/17Aug_1705_FocusV_4-Multivariate_1-
> >> Fox.pdf).
> >>
> >> If this it is not possible using car::Anova, is there another way to
> >> achiebve what I want or is it plainly wrong?
> >> I have the feeling that using R's "New Functions for Multivariate
> >> Analysis" (Dalgaard, 2007, R News) this could be possible, but some
> >> advice on how, would be greatly appreciated, as this does not seem to
> >> be the most straight forward way.
> >>
> >> Below is an example using the car::OBrienKaiser dataset adding an age
> >> covariate. The example is merely an adoption from ?Anova with miniml
> >> changes and includes e.g. age:phase:hour which I don't want to have.
> >>
> >> Note that I posted this question to stackoverflow two days ago
> >> (http://stackoverflow.com/q/11567446/289572) and did not receive any
> >> responses. Please excuse my "crossposting", but I think R-help may be
> >> the better place.
> >>
> >> Best,
> >> Henrik
> >>
> >> PS: I know that the posting guide says "No questions about contributed
> >> packages" but there are some questions about car on R-help, so I
> >> thought this would be the correct place.
> >>
> >> ###### Example follows #####
> >>
> >> require(car)
> >> set.seed(1)
> >>
> >> n.OBrienKaiser <- within(OBrienKaiser, age <- sample(18:35, size = 16,
> >> replace = TRUE))
> >>
> >> phase <- factor(rep(c("pretest", "posttest", "followup"), c(5, 5, 5)),
> >> levels=c("pretest", "posttest", "followup")) hour <- ordered(rep(1:5,
> >> 3)) idata <- data.frame(phase, hour)
> >>
> >> mod.ok <- lm(cbind(pre.1, pre.2, pre.3, pre.4, pre.5, post.1, post.2,
> >> post.3, post.4, post.5,
> >>             fup.1, fup.2, fup.3, fup.4, fup.5) ~  treatment * gender +
> >> age, data=n.OBrienKaiser) (av.ok <- Anova(mod.ok, idata=idata,
> >> idesign=~phase*hour, type = 3))
> >>
> >> # Type II Repeated Measures MANOVA Tests: Pillai test statistic
> >>                               # Df test stat approx F num Df den Df
> >> Pr(>F)
> >> # (Intercept)                  1     0.971    299.9      1      9
> >> 0.000000032 ***
> >> # treatment                    2     0.492      4.4      2      9
> >> 0.04726 *
> >> # gender                       1     0.193      2.1      1      9
> >> 0.17700
> >> # age                          1     0.045      0.4      1      9
> >> 0.53351
> >> # treatment:gender             2     0.389      2.9      2      9
> >> 0.10867
> >> # phase                        1     0.855     23.6      2      8
> >> 0.00044 ***
> >> # treatment:phase              2     0.696      2.4      4     18
> >> 0.08823 .
> >> # gender:phase                 1     0.079      0.3      2      8
> >> 0.71944
> >> # age:phase                    1     0.140      0.7      2      8
> >> 0.54603
> >> # treatment:gender:phase       2     0.305      0.8      4     18
> >> 0.53450
> >> # hour                         1     0.939     23.3      4      6
> >> 0.00085 ***
> >> # treatment:hour               2     0.346      0.4      8     14
> >> 0.92192
> >> # gender:hour                  1     0.286      0.6      4      6
> >> 0.67579
> >> # age:hour                     1     0.262      0.5      4      6
> >> 0.71800
> >> # treatment:gender:hour        2     0.539      0.6      8     14
> >> 0.72919
> >> # phase:hour                   1     0.663      0.5      8      2
> >> 0.80707
> >> # treatment:phase:hour         2     0.893      0.3     16      6
> >> 0.97400
> >> # gender:phase:hour            1     0.700      0.6      8      2
> >> 0.76021
> >> # age:phase:hour               1     0.813      1.1      8      2
> >> 0.56210
> >> # treatment:gender:phase:hour  2     1.003      0.4     16      6
> >> 0.94434
> >> # ---
> >> # Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> >>
> >>
> >> --
> >> Dipl. Psych. Henrik Singmann
> >> PhD Student
> >> Albert-Ludwigs-Universität Freiburg
> >> http://www.psychologie.uni-freiburg.de/Members/singmann
> >>
> >> ______________________________________________
> >> 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.
> >
> > ______________________________________________
> > 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.
> >
> 
> -- 
> Dipl. Psych. Henrik Singmann
> PhD Student
> Albert-Ludwigs-Universität Freiburg
> http://www.psychologie.uni-freiburg.de/Members/singmann
> 
> ______________________________________________
> 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