Dear Henrik, On Mon, 23 Jul 2012 00:56:16 +0200 Henrik Singmann <henrik.singm...@psychologie.uni-freiburg.de> wrote: > Dear John, > > indeed, you are very right. Including the covariate as is, doesn't make any > sense. The only correct way would be to center it on the mean beforehands. So > actually the examples in my first and second mail are bogus (I add a > corrected example at the end) and the reported test do not make much sense. > > Let me try to explain why I want to discard the interactions of the covariate > with the within-factors. The reason I want to exclude them is that I want to > stay within the ANCOVA framework. I looked at the three books on experimental > design I have on my desk (Winer, 1971; Kirk, 1982; Maxwell & Delaney, 2003) > and they unanimously define the ANCOVA as the ANOVA on the responses > controlled for the covariate only (i.e., not controlled for the covariate and > the interactions with the other effects). > However, as you say, adding or removing an interaction with the orthogonal > within-subject factors does indeed not alter the results (example at the > end), so one could just use the output and discard the unwanted effects, > although admittedly this seems sketchy given significant effects. > > Unfortunately, my involvement with this issue has led me to another question. > Winer and Kirk both discuss a split-plot ANCOVA in which one has measured a > covariate for each observation. That is a second matrix alike the original > data matrix, e.g. the body temperature of each person at each measurement for > the OBrienKaiser dataset: > > OBK.cov <- OBrienKaiser > OBK.cov[,-(1:2)] <- runif(16*15, 36, 41) > > Would it be possible to fit the data using this temperature matrix as a > covariate using car::Anova (I thought about this but couldn't find any idea > of how to specify the imatrix)?
I'm afraid that Anova() won't handle repeated measures on covariates. I agree that it would be desirable to do so, and this capability is on my list of features to add to Anova(), but I can't promise when, or if, I'll get to it. Sorry, John > > Thanks a lot for the helpful responses, > Henrik > > > PS: Better examples: > # compare the treatment and the phase effect across models. > require(car) > set.seed(1) > > # using scale for the covariate: > n.OBrienKaiser <- within(OBrienKaiser, age <- scale(sample(18:35, size = 16, > replace = TRUE), scale = FALSE)) > > 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) > > # Full ANCOVA model: > mod.1 <- 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.1 <- Anova(mod.1, idata=idata, idesign=~phase*hour, type = 3)) > > # Df test stat approx F num Df den Df Pr(>F) > # (Intercept) 1 0.968 269.4 1 9 0.000000052 > *** > # treatment 2 0.443 3.6 2 9 0.0719 > . > # gender 1 0.305 3.9 1 9 0.0782 > . > # age 1 0.054 0.5 1 9 0.4902 > # treatment:gender 2 0.222 1.3 2 9 0.3232 > # phase 1 0.811 17.2 2 8 0.0013 > ** > # ... > > # removing the between-subject interaction does alter the lower order effects: > mod.2 <- 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.2 <- Anova(mod.2, idata=idata, idesign=~phase*hour, type = 3)) > > # Type III Repeated Measures MANOVA Tests: Pillai test statistic > # Df test stat approx F num Df den Df Pr(>F) > # (Intercept) 1 0.959 254.5 1 11 0.0000000059 *** > # treatment 2 0.428 4.1 2 11 0.04644 * > # gender 1 0.271 4.1 1 11 0.06832 . > # age 1 0.226 3.2 1 11 0.10030 > # phase 1 0.792 19.0 2 10 0.00039 *** > # ... > > # removing the within-subject interaction does NOT alter the lower order > effects: > mod.3 <- 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.3 <- Anova(mod.3, idata=idata, idesign=~phase+hour, type = 3)) > # Type III Repeated Measures MANOVA Tests: Pillai test statistic > # Df test stat approx F num Df den Df Pr(>F) > # (Intercept) 1 0.968 269.4 1 9 0.000000052 *** > # treatment 2 0.443 3.6 2 9 0.0719 . > # gender 1 0.305 3.9 1 9 0.0782 . > # age 1 0.054 0.5 1 9 0.4902 > # treatment:gender 2 0.222 1.3 2 9 0.3232 > # phase 1 0.811 17.2 2 8 0.0013 ** > # ... > > > > Am 22.07.2012 23:25, schrieb John Fox: > > 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.singm...@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-boun...@r-project.org [mailto:r-help-bounces@r- > >>>> project.org] On Behalf Of Henrik Singmann > >>>> Sent: July-21-12 1:29 PM > >>>> To: r-h...@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@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@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@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, Germany > http://www.psychologie.uni-freiburg.de/Members/singmann ______________________________________________ R-help@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.