[R] Split plot analysis problems

Jean-Paul Maalouf jean-paul.maalouf at u-bordeaux1.fr
Tue Jul 21 16:38:30 CEST 2009


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




More information about the R-help mailing list