27  Split-plot Design

27.1 Farming

27.2 CRD

(a) CRD
(b) CRBD
(c) Split-plot design
Abbildung 27.1: Beispiele für verschiedene Designs.

27.3 Example - Soccer

Das folgende hypothetische Beispiel ist adaptiert nach Kowalski et al. (2007)]

game pitch twogoals nplayer ntouches eps
G1 large yes 6p free 68.5
G1 large no 5p free 66.8
G1 large yes 5p restricted 58.5
G1 large no 6p free 70.8
G1 large yes 6p restricted 61.3
G1 large no 5p restricted 51.9

27.4 Example - Soccer

Data from full Experiment

27.5 Whole-plot analysis

Average EPS for each game.

27.6 Whole-plot analysis Analysis of variance

game eps pitch
G1 62.94 large
G2 57.81 small
G3 62.92 small
G4 64.34 large
mod_whole_plot <- aov(eps ~ pitch, df_bars)
summary(mod_whole_plot)
            Df Sum Sq Mean Sq F value Pr(>F)
pitch        1  10.69  10.685   1.521  0.343
Residuals    2  14.05   7.024               

27.7 Error components split-plot analysis

Error components in a split-plot analysis

27.8 Complete Split-plot analysis

mod_sp <- aov(eps ~ (pitch+nplayer+twogoals+ntouches)^2 + Error(game), df)
summary(mod_sp)

Error: game
          Df Sum Sq Mean Sq F value Pr(>F)
pitch      1  85.48   85.48   1.521  0.343
Residuals  2 112.39   56.20               

Error: Within
                  Df Sum Sq Mean Sq F value Pr(>F)  
nplayer            1  41.18   41.18   4.210 0.0542 .
twogoals           1  45.36   45.36   4.637 0.0443 *
ntouches           1  75.95   75.95   7.765 0.0118 *
pitch:nplayer      1  78.44   78.44   8.019 0.0107 *
pitch:twogoals     1   1.09    1.09   0.111 0.7424  
pitch:ntouches     1  62.44   62.44   6.383 0.0206 *
nplayer:twogoals   1  27.94   27.94   2.856 0.1074  
nplayer:ntouches   1  43.95   43.95   4.492 0.0474 *
twogoals:ntouches  1   2.94    2.94   0.301 0.5899  
Residuals         19 185.86    9.78                 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

27.9 Model

\[\begin{align*} Y_{hij} &= \mu + \alpha_i + \epsilon_{i(h)}^W \\ & + \beta_j + (\alpha\beta)_{ij} + \epsilon_{j(hi)}^S \end{align*}\]

\(\epsilon_{i(h)}^W \sim \mathcal{N}(0,\sigma_{W}^2)\)
\(\epsilon_{jt(hi)}^S \sim \mathcal{N}(0,\sigma_s^2)\)
\(h=1,\ldots,s\)
\(i=1,\ldots,a\)
\(j=1,\ldots,b\)

27.10 A more common example

Hypothetical two-arm RCT

27.11 Data structure

Ausschnitt der Daten
id time group CMJ
S1 Pre CON 20.5
S2 Pre CON 20.8
S11 Pre TRT 20.9
S1 Post CON 21.5
S11 Post TRT 24.6
S3 Ret CON 20.0
S14 Ret TRT 22.4

27.12 Model

\[\begin{align*} Y_{hij} &= \mu + \theta_h + \alpha_i + \epsilon_{i(h)}^W \\ & + \beta_j + (\alpha\beta)_{ij} + \epsilon_{j(hi)}^S \end{align*}\]

\(\epsilon_{i(h)}^W \sim \mathcal{N}(0,\sigma_{W}^2)\)
\(\epsilon_{jt(hi)}^S \sim \mathcal{N}(0,\sigma_s^2)\)
\(h=1,\ldots,s\)
\(i=1,\ldots,a\)
\(j=1,\ldots,b\)

27.13 Split-plot analysis

mod <- aov(CMJ ~ group*time + Error(id), df_1)
summary(mod)

Error: id
          Df Sum Sq Mean Sq F value  Pr(>F)    
group      1  70.01   70.01   94.31 1.4e-08 ***
Residuals 18  13.36    0.74                    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Error: Within
           Df Sum Sq Mean Sq F value   Pr(>F)    
time        2  98.87   49.43   44.58 1.82e-10 ***
group:time  2  42.94   21.47   19.36 1.95e-06 ***
Residuals  36  39.92    1.11                     
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

27.14 Again, standard analysis is not correct!

mod_falsch <- aov(CMJ ~ id + group*time, df_1)
summary(mod_falsch)
            Df Sum Sq Mean Sq F value   Pr(>F)    
id          19  83.38    4.39   3.957 0.000189 ***
time         2  98.87   49.43  44.579 1.82e-10 ***
group:time   2  42.94   21.47  19.363 1.95e-06 ***
Residuals   36  39.92    1.11                     
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

27.15 Alternative analysis using mixed models

mod_lmer <- lmer(CMJ ~ time*group + (1|id), df_1)
anova(mod_lmer)
Analysis of Variance Table
           npar Sum Sq Mean Sq F value
time          2 98.866  49.433  50.099
group         1 70.013  70.013  70.957
time:group    2 42.944  21.472  21.761

27.16 Effect size

\[\begin{align*} \hat{\omega}^2_{\text{between}} &= \frac{SS_A -(a-1)MS_{S/A}}{SS_A + SS_{S/A}+MS_{S/A}} \\ \hat{\omega}^2_{\text{within}} &= \frac{(b-1)(MS_b - MS_{B\times S/A})}{SS_B + SS_{B\times S/A}+SS_{S/A}+MS_{S/A}} \\ \hat{\omega}^2_{AB} &= \frac{(a-1)(b-1)(MS_{AB}-MS_{B\times S/A})}{SS_{AB}+SS_{B\times S/A}+MS_{S/A}} \end{align*}\]

\(A=\)group, \(B=\)time, \(AB=\)group:time, \(S/B=\)Error: id, \(B\times S/A=\)Error: within im Beispiel

27.17 Effect size in R

effectsize::omega_squared(mod)
# Effect Size for ANOVA (Type I)

Group  |  Parameter | Omega2 (partial) |       95% CI
-----------------------------------------------------
id     |      group |             0.82 | [0.67, 1.00]
Within |       time |             0.63 | [0.46, 1.00]
Within | group:time |             0.42 | [0.20, 1.00]

- One-sided CIs: upper bound fixed at [1.00].

27.18 Multiple comparisons

mod_em <- emmeans(mod, ~time*group)
pairs(mod_em)
 contrast            estimate    SE   df t.ratio p.value
 Pre CON - Post CON    -1.271 0.471 36.0  -2.699  0.1002
 Pre CON - Ret CON      0.340 0.471 36.0   0.722  0.9780
 Pre CON - Pre TRT      0.226 0.444 52.4   0.509  0.9956
 Pre CON - Post TRT    -4.775 0.444 52.4 -10.750  <.0001
 Pre CON - Ret TRT     -2.863 0.444 52.4  -6.445  <.0001
 Post CON - Ret CON     1.611 0.471 36.0   3.421  0.0181
 Post CON - Pre TRT     1.497 0.444 52.4   3.370  0.0168
 Post CON - Post TRT   -3.504 0.444 52.4  -7.888  <.0001
 Post CON - Ret TRT    -1.592 0.444 52.4  -3.584  0.0092
 Ret CON - Pre TRT     -0.114 0.444 52.4  -0.256  0.9998
 Ret CON - Post TRT    -5.115 0.444 52.4 -11.515  <.0001
 Ret CON - Ret TRT     -3.203 0.444 52.4  -7.211  <.0001
 Pre TRT - Post TRT    -5.002 0.471 36.0 -10.621  <.0001
 Pre TRT - Ret TRT     -3.089 0.471 36.0  -6.560  <.0001
 Post TRT - Ret TRT     1.912 0.471 36.0   4.060  0.0032

P value adjustment: tukey method for comparing a family of 6 estimates 

27.19 Which comparisons are meaninful?!

mod_em2 <- emmeans(mod, ~time|group)
pairs(mod_em2)
group = CON:
 contrast   estimate    SE df t.ratio p.value
 Pre - Post    -1.27 0.471 36  -2.699  0.0277
 Pre - Ret      0.34 0.471 36   0.722  0.7523
 Post - Ret     1.61 0.471 36   3.421  0.0044

group = TRT:
 contrast   estimate    SE df t.ratio p.value
 Pre - Post    -5.00 0.471 36 -10.621  <.0001
 Pre - Ret     -3.09 0.471 36  -6.560  <.0001
 Post - Ret     1.91 0.471 36   4.060  0.0007

P value adjustment: tukey method for comparing a family of 3 estimates 

27.20 Further reading

27.20.1 Allgemein

Kutner u. a. (2005, p.1172), Kowalski, Parker, und Geoffrey Vining (2007), Altman und Krzywinski (2015)