Skip to content

Repeated measures

2 messages · Tom Backer Johnsen, Chuck Cleland

#
I am having a hard time understanding how to perform a "repeated 
measures" type of ANOVA with R.  When reading the document found here:

http://cran.r-project.org/doc/contrib/Lemon-kickstart/kr_repms.html

I find that there is a reference to a function make.rm () that is 
supposed to rearrange a "one row per person" type of frame to a "one 
row per observation" type of frame.  But that function does not seem 
to be there.  Nor does the help.search suggest anything.  Is that 
function buried in some package?

Is there  some simple documentation that might be useful somewhere? 
Starting with a really simple problem (one group, two observations)?

Tom
#
Tom Backer Johnsen wrote:
I'm not able to find that function.  Perhaps that document is out of date.
Here is an example showing the use of reshape() and analysis via aov()
and lme() in the nlme package.

tolerance <-
read.table("http://www.ats.ucla.edu/stat/Splus/examples/alda/tolerance1.txt",
            sep=",", header=TRUE)

tolerance.long <- reshape(tolerance,
                          varying = list(c("tol11","tol12","tol13",
                                           "tol14", "tol15")),
                          v.names = c("tol"), timevar = "time",
                          times = 11:15, direction = "long")

tolerance.aov <- aov(tol ~ as.factor(time) * male + Error(id),
                     data = tolerance.long)

summary(tolerance.aov)

Error: id
     Df   Sum Sq  Mean Sq
male  1 0.085168 0.085168

Error: Within
                     Df  Sum Sq Mean Sq F value  Pr(>F)
as.factor(time)       4  2.8326  0.7081  3.0538 0.02236 *
male                  1  0.3024  0.3024  1.3039 0.25745
as.factor(time):male  4  0.1869  0.0467  0.2015 0.93670
Residuals            69 16.0002  0.2319
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

library(nlme)

tolerance.lme <- lme(tol ~ as.factor(time) * male, random = ~ 1 | id,
                     data = tolerance.long)

anova(tolerance.lme)
                     numDF denDF  F-value p-value
(Intercept)              1    56 353.9049  <.0001
as.factor(time)          4    56   5.1309  0.0014
male                     1    14   0.6071  0.4488
as.factor(time):male     4    56   0.3386  0.8508

  RSiteSearch("repeated measures") points to other examples, functions,
and documentation.