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
I don't think you are clear enough about the layout within each block. If the four treatments are randomized, I would choose the first model. KW On Tue, Jul 21, 2009 at 9:38 AM, Jean-Paul Maalouf < jean-paul.maalouf@u-bordeaux1.fr> 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@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. >[[alternative HTML version deleted]]
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.