Skip to content
Prev 10221 / 20628 Next

How to analyze a 2x2 crossover with baseline in R?

Emmanuel Curis <emmanuel.curis at ...> writes:
The basic recipe here is to collapse your analysis into
a one-way analysis and then (hopefully) to reconstruct the
desired the contrasts.  I started to do this (below), but didn't
have quite enough time to finish it ...

donnees <- read.table(header=TRUE,
text="X7_SRF Periode Sequence Traitement Numero
548      J0 Groupe.A   Baseline      1
351      M1 Groupe.A  Treatment      1
418      M2 Groupe.A    Placebo      1
300      J0 Groupe.A   Baseline     10
180      M1 Groupe.A  Treatment     10
153      M2 Groupe.A    Placebo     10
652      J0 Groupe.A   Baseline     11
638      M1 Groupe.A  Treatment     11
491      J0 Groupe.B   Baseline     12
488      M1 Groupe.B    Placebo     12
443      M2 Groupe.B  Treatment     12
376      J0 Groupe.B   Baseline     14
466      M1 Groupe.B    Placebo     14
447      M2 Groupe.B  Treatment     14
638      J0 Groupe.A   Baseline     15
628      M1 Groupe.A  Treatment     15
872      M2 Groupe.A    Placebo     15
459      J0 Groupe.A   Baseline     16
191      M1 Groupe.A  Treatment     16
206      M2 Groupe.A    Placebo     16
731      J0 Groupe.B   Baseline     17
536      M1 Groupe.B    Placebo     17
584      M2 Groupe.B  Treatment     17
462      J0 Groupe.B   Baseline      2
373      M1 Groupe.B    Placebo      2
400      M2 Groupe.B  Treatment      2
197      J0 Groupe.B   Baseline      3
291      M1 Groupe.B    Placebo      3
160      M2 Groupe.B  Treatment      3
768      J0 Groupe.B   Baseline      4
260      M1 Groupe.B    Placebo      4
238      M2 Groupe.B  Treatment      4
606      J0 Groupe.A   Baseline      5
629      M1 Groupe.A  Treatment      5
350      M2 Groupe.A    Placebo      5
424      J0 Groupe.A   Baseline      6
304      M1 Groupe.A  Treatment      6
439      M2 Groupe.A    Placebo      6
538      J0 Groupe.A   Baseline      7
511      M1 Groupe.A  Treatment      7
501      M2 Groupe.A    Placebo      7
524      J0 Groupe.B   Baseline      8
601      M1 Groupe.B    Placebo      8
298      M2 Groupe.B  Treatment      8
511      J0 Groupe.B   Baseline      9
513      M1 Groupe.B    Placebo      9
444      M2 Groupe.B  Treatment      9")

library("nlme")
try(m1 <- lme( X7_SRF ~ Traitement + Periode, random = ~ 1|Numero,
       data = donnees,
       control = list( msVerbose = TRUE ) ))

donnees <- transform(donnees,TP=interaction(Traitement,Periode,drop=TRUE))

m2 <- lme( X7_SRF ~ TP, random = ~ 1|Numero,
       data = donnees,
       control = list( msVerbose = TRUE ) )
summary(m2)$tTable

I didn't succeed in the rest of this, but see
http://www.math.mcmaster.ca/~bolker/classes/s4c03/hw/hw2_s4c03.pdf
OR:
http://stackoverflow.com/questions/9335708/
   contrasts-for-lm-using-contrast-package
(broken URL)

for more information ...

contr1 <- matrix(
                 c(1,0,0,0,0,             # baseline
                    -1,1/2,1/2,0,0,       # baseline vs M1
                    0,-1/2,-1/2,1/2,1/2, # M1 vs M2
                   -1,1/2,0,1/2,0,       # baseline vs placebo
                    0,-1/2,1/2,-1/2,1/2), # placebo vs treatment
                    ## 0,1/2,-1/2,-1/2,1/2), # interaction:
                                          # (T2-P2)-(T1-P1) = T2+P1-T1-P2
              byrow=TRUE,ncol=5,
      dimnames=list(c("b","b_vs_M1","M1_vs_M2","b_vs_P","P_vs_T"),
                      c("B","PM1","TM1","PM2","TM2")))
                  
solve(contr1)