[R] Input file format to Anova from car package
Peter Ehlers
ehlers at ucalgary.ca
Sun Nov 22 05:15:43 CET 2009
Sorry, minor fix at end.
Peter Ehlers wrote:
>
>
> Marcelo Laia wrote:
>> Dear list member,
>>
>> My question is related to input file format to an Anova from car package.
>>
>> Here is an example of what I did:
>>
>> My file format is like this (and I dislike the idea that I will need
>> to recode it):
>>
>> Hormone day Block Treatment Plant Diameter High N.Leaves
>> SH 23 1 1 1 3.19 25.3 2
>> SH 23 1 1 2 3.42 5.5 1
>> SH 23 1 2 1 2.19 5.2 2
>> SH 23 1 2 2 2.17 7.6 2
>> CH 23 1 1 1 3.64 6.5 2
>> CH 23 1 1 2 2.8 3.7 2
>> CH 23 1 2 1 3.28 4 2
>> CH 23 1 2 2 2.82 5.2 2
>> SH 23 2 1 1 2.87 6.4 2
>> SH 23 2 1 2 2.8 6 2
>> SH 23 2 2 1 2.02 4.5 2
>> SH 23 2 2 2 3.15 5.5 2
>> CH 23 2 1 1 3.22 2.3 2
>> CH 23 2 1 2 2.45 3.8 2
>> CH 23 2 2 1 1.85 3.5 2
>> CH 23 2 2 2 3.13 4.4 2
>> CH 39 1 1 1 2.64 6 2
>> CH 39 1 1 2 4.33 10 2
>> CH 39 1 2 1 3.74 9 2
>> CH 39 1 2 2 3.23 8 2
>> SH 39 1 1 1 3.8 8 2
>> SH 39 1 1 2 2.35 9 2
>> SH 39 1 2 1 3.66 6 2
>> SH 39 1 2 2 3.92 7 2
>> CH 39 2 1 1 3.28 7 2
>> CH 39 2 1 2 4.99 7 2
>> CH 39 2 2 1 2.49 6 2
>> CH 39 2 2 2 4.75 7 2
>> SH 39 2 1 1 3.35 5 2
>> SH 39 2 1 2 4.38 7 2
>> SH 39 2 2 1 5.11 9 2
>> SH 39 2 2 2 2.71 5 2
>>
>> idata <- data.frame(Idade=factor(c(23,39)))
>> a = read.table("clipboard", sep=" ", head=T)
>> mod.ok <- lm(Diameter ~ Treatment*Hormone, data=a)
>> av.ok <- Anova(mod.ok, idata=idata, idesign=~as.factor(day))
>> summary(av.ok)
>> Sum Sq Df F value Pr(>F)
>> Min. : 0.02153 Min. : 1.00 Min. :0.02828 Min. :0.5105
>> 1st Qu.: 0.06169 1st Qu.: 1.00 1st Qu.:0.06346 1st Qu.:0.6331
>> Median : 0.20667 Median : 1.00 Median :0.09863 Median :0.7558
>> Mean : 5.43711 Mean : 7.75 Mean :0.19043 Mean :0.7113
>> 3rd Qu.: 5.58208 3rd Qu.: 7.75 3rd Qu.:0.27150 3rd Qu.:0.8117
>> Max. :21.31356 Max. :28.00 Max. :0.44437 Max. :0.8677
>> NA's :1.00000 NA's :1.0000
>>
>> This result is wrong, I believe.
>>
> It's wrong because your use of Anova is inappropriate here.
> mod.ok should be an object of class "mlm" for this use of Anova.
>
> class(mod.ok)
>
> or
>
> str(mod.ok)
>
> would be useful.
> See below for further comments.
>
>> Here, is a file format with repeated measures side-by-side:
>>
>> Hormone Block Treatment Plant Diameter.23 Diameter.39 High.23 High.39
>> N.Leaves.23 N.Leaves.39
>> SH 1 1 1 3.19 2.64 25.3 6 2 2
>> SH 1 1 2 3.42 4.33 5.5 10 1 2
>> SH 1 2 1 2.19 3.74 5.2 9 2 2
>> SH 1 2 2 2.17 3.23 7.6 8 2 2
>> CH 1 1 1 3.64 3.8 6.5 8 2 2
>> CH 1 1 2 2.8 2.35 3.7 9 2 2
>> CH 1 2 1 3.28 3.66 4 6 2 2
>> CH 1 2 2 2.82 3.92 5.2 7 2 2
>> SH 2 1 1 2.87 3.28 6.4 7 2 2
>> SH 2 1 2 2.8 4.99 6 7 2 2
>> SH 2 2 1 2.02 2.49 4.5 6 2 2
>> SH 2 2 2 3.15 4.75 5.5 7 2 2
>> CH 2 1 1 3.22 3.35 2.3 5 2 2
>> CH 2 1 2 2.45 4.38 3.8 7 2 2
>> CH 2 2 1 1.85 5.11 3.5 9 2 2
>> CH 2 2 2 3.13 2.71 4.4 5 2 2
>>
>> idata <- data.frame(day=factor(c(23,39)))
>> a = read.table("clipboard", sep=" ", head=T)
>> mod.ok <- lm(cbind(Diameter.23,Diameter.39) ~ Treatment*Hormone,
>> data=a)
>> av.ok <- Anova(mod.ok, idata=idata, idesign= ~ as.factor(day))
>> summary(av.ok)
>>
>> Type II Repeated Measures MANOVA Tests:
>>
>> ------------------------------------------
>>
>> Term: Treatment
>>
>> Response transformation matrix:
>> (Intercept)
>> Diameter.23 1
>> Diameter.39 1
>>
>> Sum of squares and products for the hypothesis:
>> (Intercept)
>> (Intercept) 0.6765062
>>
>> Sum of squares and products for error:
>> (Intercept)
>> (Intercept) 13.05917
>>
>> Multivariate Tests: Treatment
>> Df test stat approx F num Df den Df Pr(>F)
>> Pillai 1 0.0492517 0.6216377 1 12 0.44574
>> Wilks 1 0.9507483 0.6216377 1 12 0.44574
>> Hotelling-Lawley 1 0.0518031 0.6216377 1 12 0.44574
>> Roy 1 0.0518031 0.6216377 1 12 0.44574
>>
>> ------------------------------------------
>>
>> Term: Hormone
>>
>> Response transformation matrix:
>> (Intercept)
>> Diameter.23 1
>> Diameter.39 1
>>
>> Sum of squares and products for the hypothesis:
>> (Intercept)
>> (Intercept) 0.09150625
>>
>> Sum of squares and products for error:
>> (Intercept)
>> (Intercept) 13.05917
>>
>> Multivariate Tests: Hormone
>> Df test stat approx F num Df den Df Pr(>F)
>> Pillai 1 0.0069583 0.08408456 1 12 0.77679
>> Wilks 1 0.9930417 0.08408456 1 12 0.77679
>> Hotelling-Lawley 1 0.0070070 0.08408456 1 12 0.77679
>> Roy 1 0.0070070 0.08408456 1 12 0.77679
>>
>> ------------------------------------------
>>
>> Term: Treatment:Hormone
>>
>> Response transformation matrix:
>> (Intercept)
>> Diameter.23 1
>> Diameter.39 1
>>
>> Sum of squares and products for the hypothesis:
>> (Intercept)
>> (Intercept) 1.139556
>>
>> Sum of squares and products for error:
>> (Intercept)
>> (Intercept) 13.05917
>>
>> Multivariate Tests: Treatment:Hormone
>> Df test stat approx F num Df den Df Pr(>F)
>> Pillai 1 0.0802576 1.047132 1 12 0.32636
>> Wilks 1 0.9197424 1.047132 1 12 0.32636
>> Hotelling-Lawley 1 0.0872610 1.047132 1 12 0.32636
>> Roy 1 0.0872610 1.047132 1 12 0.32636
>>
>> ------------------------------------------
>>
>> Term: as.factor(day)
>>
>> Response transformation matrix:
>> as.factor(day)1
>> Diameter.23 1
>> Diameter.39 -1
>>
>> Sum of squares and products for the hypothesis:
>> as.factor(day)1
>> as.factor(day)1 11.78206
>>
>> Sum of squares and products for error:
>> as.factor(day)1
>> as.factor(day)1 15.41527
>>
>> Multivariate Tests: as.factor(day)
>> Df test stat approx F num Df den Df Pr(>F)
>> Pillai 1 0.4332063 9.171726 1 12 0.010496 *
>> Wilks 1 0.5667937 9.171726 1 12 0.010496 *
>> Hotelling-Lawley 1 0.7643105 9.171726 1 12 0.010496 *
>> Roy 1 0.7643105 9.171726 1 12 0.010496 *
>> ---
>> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
>>
>> ------------------------------------------
>>
>> Term: Treatment:as.factor(day)
>>
>> Response transformation matrix:
>> as.factor(day)1
>> Diameter.23 1
>> Diameter.39 -1
>>
>> Sum of squares and products for the hypothesis:
>> as.factor(day)1
>> as.factor(day)1 1.139556
>>
>> Sum of squares and products for error:
>> as.factor(day)1
>> as.factor(day)1 15.41527
>>
>> Multivariate Tests: Treatment:as.factor(day)
>> Df test stat approx F num Df den Df Pr(>F)
>> Pillai 1 0.0688353 0.887086 1 12 0.36484
>> Wilks 1 0.9311647 0.887086 1 12 0.36484
>> Hotelling-Lawley 1 0.0739238 0.887086 1 12 0.36484
>> Roy 1 0.0739238 0.887086 1 12 0.36484
>>
>> ------------------------------------------
>>
>> Term: Hormone:as.factor(day)
>>
>> Response transformation matrix:
>> as.factor(day)1
>> Diameter.23 1
>> Diameter.39 -1
>>
>> Sum of squares and products for the hypothesis:
>> as.factor(day)1
>> as.factor(day)1 0.1501563
>>
>> Sum of squares and products for error:
>> as.factor(day)1
>> as.factor(day)1 15.41527
>>
>> Multivariate Tests: Hormone:as.factor(day)
>> Df test stat approx F num Df den Df Pr(>F)
>> Pillai 1 0.0096468 0.1168889 1 12 0.73835
>> Wilks 1 0.9903532 0.1168889 1 12 0.73835
>> Hotelling-Lawley 1 0.0097407 0.1168889 1 12 0.73835
>> Roy 1 0.0097407 0.1168889 1 12 0.73835
>>
>> ------------------------------------------
>>
>> Term: Treatment:Hormone:as.factor(day)
>>
>> Response transformation matrix:
>> as.factor(day)1
>> Diameter.23 1
>> Diameter.39 -1
>>
>> Sum of squares and products for the hypothesis:
>> as.factor(day)1
>> as.factor(day)1 0.04305625
>>
>> Sum of squares and products for error:
>> as.factor(day)1
>> as.factor(day)1 15.41527
>>
>> Multivariate Tests: Treatment:Hormone:as.factor(day)
>> Df test stat approx F num Df den Df Pr(>F)
>> Pillai 1 0.0027853 0.03351708 1 12 0.8578
>> Wilks 1 0.9972147 0.03351708 1 12 0.8578
>> Hotelling-Lawley 1 0.0027931 0.03351708 1 12 0.8578
>> Roy 1 0.0027931 0.03351708 1 12 0.8578
>>
>> Univariate Type II Repeated-Measures ANOVA Assuming Sphericity
>>
>> SS num Df Error SS den Df F
>> Pr(>F)
>> Treatment 0.3383 1 6.5296 12 0.6216
>> 0.44574
>> Hormone 0.0458 1 6.5296 12 0.0841
>> 0.77679
>> Treatment:Hormone 0.5698 1 6.5296 12 1.0471
>> 0.32636
>> as.factor(day) 5.8910 1 7.7076 12 9.1717
>> 0.01050 *
>> Treatment:as.factor(day) 0.5698 1 7.7076 12 0.8871
>> 0.36484
>> Hormone:as.factor(day) 0.0751 1 7.7076 12 0.1169
>> 0.73835
>> Treatment:Hormone:as.factor(day) 0.0215 1 7.7076 12 0.0335
>> 0.85779
>> ---
>> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
>>
>>
> This works because you now have mod.ok as an "mlm" object.
>
>>
>>
>> How I could use Anova from the first file format? If not, could you
>> suggest me a way to recode my data file in R?
>>
>> I ask because I don't know how I can recode my data file on R. Is ti
>> possible?
>
> Let's call your first data.frame dat.long. Then you can use:
>
Replace the next line
> dat.wide <- reshape(dat, timevar="day",
with
dat.wide <- reshape(dat.long, timevar="day",
^^^^^
> idvar = c("Hormone", "Block", "Treatment", "Plant"),
> direction = "wide")
>
> Note that the two data frames you give are not consistent.
>
> You could also investigate the reshape package which makes a
> lot of reshaping easier.
>
> -Peter Ehlers
>
>>
>> Thank you very much!
>>
>
> ______________________________________________
> 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