[R] Split plot analysis problems
Mark Difford
mark_difford at yahoo.co.uk
Wed Jul 22 16:47:37 CEST 2009
Hi Jean-Paul,
>> ... since R is not able to extract residuals?
R can extract the residuals, but they are a "hidden" in models with an error
structure
##
str(aov(PH~Community*Mowing*Water + Error(Block)))
residuals(aov(PH~Community*Mowing*Water + Error(Block))$Block)
residuals(aov(PH~Community*Mowing*Water + Error(Block))$Within)
Regards, Mark.
Jean-Paul Maalouf wrote:
>
> Hello,
>
> I would be very grateful if someone could give me a hand with my split
> plot design problems.
>
> So here is my design :
> I am studying the crossed-effects of water (wet/dry) and mowing
> (mowed/not-mowed = nm) on plant height (PH) within 2 types of plant
> communities (Xerobromion and Mesobromion) :
> - Within each type of communities, I have localised 4 blocks
> - In each block, I have defined 4 plots in order to have the 4
> possible treatments of both the water and mowing factors : nm/dry ;
> mowed/dry ; mowed/wet ; nm/wet.
>
> Here is my data table :
>
> Community Block Mowing Water PH
> 1 Meso b1 Mowed Wet 7.40
> 2 Meso b1 nm Wet 13.10
> 3 Meso b1 Mowed Dry 5.55
> 4 Meso b1 nm Dry 10.35
> 5 Meso b2 nm Dry 10.70
> 6 Meso b2 Mowed Dry 6.38
> 7 Meso b2 nm Wet 9.75
> 8 Meso b2 Mowed Wet 6.35
> 9 Meso b3 nm Wet 9.60
> 10 Meso b3 Mowed Dry 5.10
> 11 Meso b3 nm Dry 10.05
> 12 Meso b3 Mowed Wet 6.25
> 13 Meso b4 nm Wet 9.00
> 14 Meso b4 Mowed Wet 6.50
> 15 Meso b4 nm Dry 7.75
> 16 Meso b4 Mowed Dry 5.90
> 17 Xero b5 nm Wet 7.69
> 18 Xero b5 Mowed Wet 8.11
> 19 Xero b5 nm Dry 3.98
> 20 Xero b5 Mowed Dry 3.69
> 21 Xero b6 nm Wet 5.24
> 22 Xero b6 Mowed Wet 4.22
> 23 Xero b6 nm Dry 6.55
> 24 Xero b6 Mowed Dry 4.40
> 25 Xero b7 Mowed Dry 3.79
> 26 Xero b7 nm Dry 3.91
> 27 Xero b7 nm Wet 9.00
> 28 Xero b7 Mowed Wet 8.50
> 29 Xero b8 Mowed Dry 3.33
> 30 Xero b8 nm Wet 6.25
> 31 Xero b8 Mowed Wet 8.00
> 32 Xero b8 nm Dry 6.33
>
> I actually have 2 questions :
> I wrote my model in two different ways, and there were differences in
> P-Values according to the model written :
>
> First model : summary(aov(PH~Community*Mowing*Water + Error(Block)))
> Error: Block
> Df Sum Sq Mean Sq F value Pr(>F)
> Community 1 42.182 42.182 24.407 0.002603 **
> Residuals 6 10.370 1.728
> ---
> Signif. codes: 0 ?***? 0.001 ?**? 0.01 ?*? 0.05 ?.? 0.1 ? ? 1
>
> Error: Within
> Df Sum Sq Mean Sq F value Pr(>F)
> Mowing 1 40.007 40.007 21.1747 0.0002215 ***
> Water 1 23.120 23.120 12.2370 0.0025673 **
> Community:Mowing 1 21.060 21.060 11.1467 0.0036554 **
> Community:Water 1 6.901 6.901 3.6524 0.0720478 .
> Mowing:Water 1 1.611 1.611 0.8527 0.3680090
> Community:Mowing:Water 1 0.858 0.858 0.4542 0.5089331
> Residuals 18 34.008 1.889
> ---
>
> - Second model (assuming that Mowing*Water are nested inside the Block
> factor) :
> summary(aov(PH~Community*Mowing*Water + Error(Block/(Mowing*Water))))
>
> Error: Block
> Df Sum Sq Mean Sq F value Pr(>F)
> Community 1 42.182 42.182 24.407 0.002603 **
> Residuals 6 10.370 1.728
> ---
> Signif. codes: 0 ?***? 0.001 ?**? 0.01 ?*? 0.05 ?.? 0.1 ? ? 1
>
> Error: Block:Mowing
> Df Sum Sq Mean Sq F value Pr(>F)
> Mowing 1 40.007 40.007 37.791 0.0008489 ***
> Community:Mowing 1 21.060 21.060 19.893 0.0042820 **
> Residuals 6 6.352 1.059
> ---
> Signif. codes: 0 ?***? 0.001 ?**? 0.01 ?*? 0.05 ?.? 0.1 ? ? 1
>
> Error: Block:Water
> Df Sum Sq Mean Sq F value Pr(>F)
> Water 1 23.1200 23.1200 6.0725 0.04884 *
> Community:Water 1 6.9006 6.9006 1.8125 0.22685
> Residuals 6 22.8439 3.8073
> ---
> Signif. codes: 0 ?***? 0.001 ?**? 0.01 ?*? 0.05 ?.? 0.1 ? ? 1
>
> Error: Block:Mowing:Water
> Df Sum Sq Mean Sq F value Pr(>F)
> Mowing:Water 1 1.6110 1.6110 2.0085 0.2062
> Community:Mowing:Water 1 0.8581 0.8581 1.0697 0.3409
> Residuals 6 4.8126 0.8021
>
> Both models give me interesting (but different!) results. Which one
> would be the most appropriate?
>
> Second question : How can I verify preliminary assumptions (normality
> of residuals and variance homogeneity) in this kind of models?
> When I ask R to extract residuals, the answer is "NULL":
>
>> residuals(aov(PH~Community*Mowing*Water + Error(Block/(Mowing*Water))))
> NULL
>> residuals(aov(PH~Community*Mowing*Water + Error(Block)))
> NULL
>
> A huge thanks to the one who will rescue (or at least try to rescue) my
> PhD!
>
> Sincerely,
>
>
> --
> Jean-Paul Maalouf
> UMR 1202 BIOGECO
> Inra - Université Bordeaux 1
> Bâtiment B8, Avenue des Facultés
> 33405 Talence, France
> Tel : 05 40008772
>
> ______________________________________________
> 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.
>
>
--
View this message in context: http://www.nabble.com/Split-plot-analysis-problems-tp24589402p24607912.html
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help
mailing list