[R] new to repeated measures anova in R
John Fox
jfox at mcmaster.ca
Mon Mar 5 14:45:48 CET 2012
Dear Tamre,
You didn't include your data, nor show the error produced with Anova() in
car by idesign = ~Shoe*Region. Your data appear to have the same structure
as the O'Brien-Kaiser example in ?Anova, but without the between-subject
design. I have no trouble producing a two-way within-subject ANOVA for the
O'Brien-Kaiser data, including the interaction:
---------- snip ----------
> 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)
> idata
phase hour
1 pretest 1
2 pretest 2
3 pretest 3
4 pretest 4
5 pretest 5
6 posttest 1
7 posttest 2
8 posttest 3
9 posttest 4
10 posttest 5
11 followup 1
12 followup 2
13 followup 3
14 followup 4
15 followup 5
>
> 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) ~ 1,
+ data=OBrienKaiser)
> summary(Anova(mod.ok, idata=idata, idesign=~phase*hour, type="III"),
multivariate=FALSE)
Univariate Type III Repeated-Measures ANOVA Assuming Sphericity
SS num Df Error SS den Df F Pr(>F)
(Intercept) 7260.0 1 603.33 15 180.4972 9.100e-10 ***
phase 167.5 2 169.17 30 14.8522 3.286e-05 ***
hour 106.3 4 73.71 60 21.6309 4.360e-11 ***
phase:hour 11.1 8 122.92 120 1.3525 0.2245
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
. . .
---------- snip ----------
So what's the problem?
Best,
John
> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Tamre Cardoso
> Sent: March-04-12 9:15 PM
> To: r-help at r-project.org
> Subject: [R] new to repeated measures anova in R
>
> Data set up as one observation/subject looks like (with a total of 10
> subjects) Two treatments: shoe type with 3 categories and region with 8
> categories ==> 24 "treatment" columns
>
> Subject PHallux PMidToes PLatToe PMTH1 PMidMTH PLatMTH PMidfoot
> PRearfoot LHallux LMidToes LLatToe LMTH1 LMidMTH LLatMTH LMidfoot
> LRearfoot DHallux DMidToes DLatToe DMTH1 DMidMTH DLatMTH DMidfoot
> DRearfoot
> 1 203.230 169.970 75.090 208.420 168.860 129.150
> 104.840 209.960 200.005 88.880 30.820 315.535 105.445
> 72.265 88.195 211.280 198.970 113.525 65.640
> 237.175 148.790 86.105 69.830 222.230
>
> R Code:
>
> library(car)
> pressure=read.csv("Shoe_data.csv",header=TRUE,sep=",")
> datin.model=cbind(pressure[,2],pressure[,3],pressure[,4],pressure[,5],p
> ressure[,6],pressure[,7],pressure[,8],pressure[,9],pressure[,10],pressu
> re[,11],pressure[,12],pressure[,13],
>
> pressure[,14],pressure[,15],pressure[,16],pressure[,17],pressure[,
> 18],pressure[,19],pressure[,20],pressure[,21],pressure[,22],pressure[,2
> 3],pressure[,24],pressure[,25])
> multmodel=lm(datin.model ~ 1)
> Shoe <- factor(c(rep("P",8),rep("L",8),rep("D",8)))
> Region <-
> factor(rep(c("Hallux","MidToes","LatToe","MTH1","MidMTH","LatMTH","MidF
> oot","Rearfoot"),3))
> fact.idata <- data.frame(Shoe,Region)
> pressure.aov = Anova(multmodel, idata=fact.idata, idesign = ~Shoe +
> Region, type="III")
>
> > summary(pressure.aov,multivariate=F)
> Univariate Type III Repeated-Measures ANOVA Assuming Sphericity
>
> SS num Df Error SS den Df F Pr(>F)
> (Intercept) 6275173 1 192361 9 293.5961 3.535e-08 ***
> Shoe 2340 2 11839 18 1.7786 0.1973
> Region 748644 7 299408 63 22.5037 6.181e-15 ***
> ---
> Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
>
>
> Mauchly Tests for Sphericity
>
> Test statistic p-value
> Shoe 0.72437 0.275329
> Region 0.00032 0.006714
>
>
> Greenhouse-Geisser and Huynh-Feldt Corrections for Departure from
> Sphericity
>
> GG eps Pr(>F[GG])
> Shoe 0.78393 0.2065
> Region 0.37482 8.391e-07 ***
> ---
> Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
>
> HF eps Pr(>F[HF])
> Shoe 0.92023 0.2008
> Region 0.54302 5.227e-09 ***
> ---
> Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
>
> Everything runs fine, except that Anova will not allow idesign =
> ~Shoe*Region
>
> So to look for interaction I set up a long format data set with columns
> Subject, Pressure, Shoe, Region--df now has 240 rows
>
> Then I ran:
>
> pressure.alt.df=read.csv("ShoeDataAltFormat.csv",header=TRUE,sep=",")
>
> pressure.aovalt=aov(Pressure~(Shoe*Region)+Error(Subject/(Shoe*Region))
> ,data=pressure.alt.df)
>
> > summary(pressure.aovalt)
>
> Error: Subject
> Df Sum Sq Mean Sq F value Pr(>F)
> Residuals 1 2346.6 2346.6
>
> Error: Subject:Shoe
> Df Sum Sq Mean Sq
> Shoe 2 3248 1624.0
>
> Error: Subject:Region
> Df Sum Sq Mean Sq
> Region 7 606772 86682
>
> Error: Subject:Shoe:Region
> Df Sum Sq Mean Sq
> Shoe:Region 14 34345 2453.2
>
> Error: Within
> Df Sum Sq Mean Sq F value Pr(>F)
> Shoe 2 35 17.5 0.0063 0.9937
> Region 7 152734 21819.2 7.8272 2.469e-08 ***
> Shoe:Region 14 15479 1105.6 0.3966 0.9747
> Residuals 192 535219 2787.6
> ---
> Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
>
> QUESTIONS:
>
> 1) Why does the Anova function not allow Shoe*Region?
> 2) Does the use of aov provide a correct test for Shoe:Region
> Interaction?
> 3) The main effect for Shoe from Anova has a denominator df=18;
> shouldn't that correspond to one of the error terms from aov?
> 4) Is the Anova p-value of 0.1973 for the main effect of Shoe the
> correct test
>
> Any help trying to understand exactly what is happening in Anova versus
> aov is greatly appreciated. Looking at interaction plots, there does
> not appear to be a lot going on except for two regions with relatively
> (compared to other regions) different means for at least one Shoe type
> within the Region.
>
> Thank you,
> Tamre
> [[alternative HTML version deleted]]
More information about the R-help
mailing list