[R] Repeated measures
Chuck Cleland
ccleland at optonline.net
Tue Jan 23 12:52:45 CET 2007
Richard Plant wrote:
> In the two solutions for the repeated measures problem given in the
> original reply below, the F and p values given by aov() with the error
> strata defined by Error() are different from those given by lme().
> However, when one does the problem "by hand" using the standard split
> plot model, the results agree with those of nlme(). The difference
> between the two aov() solutions is in the partitioning of sums of
> squares. Is there a ready explanation for this discrepancy?
The discrepancy in this case is due to a mistake on my part. The id
variable should be a factor.
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 ~ factor(time) * male + Error(factor(id)),
data = tolerance.long)
summary(tolerance.aov)
Error: factor(id)
Df Sum Sq Mean Sq F value Pr(>F)
male 1 0.3599 0.3599 0.6071 0.4488
Residuals 14 8.2990 0.5928
Error: Within
Df Sum Sq Mean Sq F value Pr(>F)
factor(time) 4 2.8326 0.7081 5.1309 0.001358 **
factor(time):male 4 0.1869 0.0467 0.3386 0.850786
Residuals 56 7.7289 0.1380
---
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
Could anyone point me to an example where the variable specified
inside of Error() is not a factor?
> Thanks,
> Richard Plant
>
>> tolerance <- 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.aov2 <- aov(tol ~ factor(male) + factor(male):factor(id) +
> factor(time) + factor(time):male, data = tolerance.long)
>> tolerance.sum <- summary(tolerance.aov2)
>> tolerance.sum
> Df Sum Sq Mean Sq F value Pr(>F)
> factor(male) 1 0.3599 0.3599 2.6077 0.111967
> factor(time) 4 2.8326 0.7081 5.1309 0.001358 **
> factor(male):factor(id) 14 8.2990 0.5928 4.2951 4.295e-05 ***
> factor(time):male 4 0.1869 0.0467 0.3386 0.850786
> Residuals 56 7.7289 0.1380
> ---
> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
>> tolerance.list <- tolerance.sum[[1]]
>> tolerance.mat <- as.matrix(tolerance.list[3])
>> tolerance.F.male <- tolerance.mat[1,1]/tolerance.mat[3,1]
>> tolerance.F.male
> [1] 0.607137
>> tolerance.df <- as.matrix(tolerance.list[1])
>> tolerance.p.male <- 1 -
> pf(tolerance.F.male,tolerance.df[1,1],tolerance.df[3,1])
>> tolerance.p.male
> [1] 0.4488394
>> Message: 68
>> Date: Wed, 17 Jan 2007 05:45:01 -0500
>> From: Chuck Cleland <ccleland at optonline.net>
>> Subject: Re: [R] Repeated measures
>> To: Tom Backer Johnsen <backer at psych.uib.no>
>> Cc: r-help at stat.math.ethz.ch
>> Message-ID: <45ADFE2D.2060208 at optonline.net>
>> Content-Type: text/plain; charset=ISO-8859-1
>>
>> Tom Backer Johnsen wrote:
>>> 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?
>> I'm not able to find that function. Perhaps that document is out of
>> date.
>>
>>> Is there some simple documentation that might be useful somewhere?
>>> Starting with a really simple problem (one group, two observations)?
>> 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.
> tx
>> t",
>> 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.
>>
>>> Tom
>>>
>>> ______________________________________________
>>> R-help at stat.math.ethz.ch 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.
>> --
>> Chuck Cleland, Ph.D.
>> NDRI, Inc.
>> 71 West 23rd Street, 8th floor
>> New York, NY 10010
>> tel: (212) 845-4495 (Tu, Th)
>> tel: (732) 512-0171 (M, W, F)
>> fax: (917) 438-0894
>>
>>
>>
>> ------------------------------
>>
>> _______________________________________________
>> R-help at stat.math.ethz.ch 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.
>>
>
> ______________________________________________
> R-help at stat.math.ethz.ch 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.
--
Chuck Cleland, Ph.D.
NDRI, Inc.
71 West 23rd Street, 8th floor
New York, NY 10010
tel: (212) 845-4495 (Tu, Th)
tel: (732) 512-0171 (M, W, F)
fax: (917) 438-0894
More information about the R-help
mailing list