[R] Measuring correlations in repeated measures data
Ben Bolker
bbolker at gmail.com
Tue Mar 1 00:23:55 CET 2011
On 11-02-28 11:59 AM, Brant Inman wrote:
> Ben,
>
> Thanks for the response. Your method generates an answer that is
> slightly different than what I was looking for. In the Orthodont
> dataset there are 4 age groups (8, 10, 12, 14). I would like to
> calculate the correlation of "distance" for all combinations of the
> categorical variable "age". The anticipated output would therefore be a
> matrix with 4 columns and 4 rows and a diagonal of ones.
>
> For example, in such a table I would be able to look at the mean within
> individual correlation coefficient for distance b/t ages 8 and 10 or,
> alternatively, ages 10 and 14. Is there a function in nlme or lme4 that
> does this?
Given the model below,
fit2$modelStruct$corStruct
produces
Correlation structure of class corSymm representing
Correlation:
1 2 3
2 -0.099
3 0.021 -0.242
4 -0.298 0.184 0.262
(this is also shown at the end of summary(fit2))
This is the lower triangle of the (symmetric) correlation matrix; the
diagonal is 1 by definition.
Isn't that what you're looking for? (Sorry if I'm misunderstanding.)
Ben
>
> Brant
>
> On Feb 28, 2011, at 02:24 AM, Ben Bolker <bbolker at gmail.com> wrote:
>
>> Brant Inman <brant.inman <at> mac.com <http://mac.com>> writes:
>>
>> >
>> > R-helpers:
>> >
>> > I would like to measure the correlation coefficient between the repeated
>> measures of a single variable
>> > that is measured over time and is unbalanced. As an example,
>> consider the
>> Orthodont dataset from package
>> > nlme, where the model is:
>> >
>> > fit <- lmer(distance ~ age + (1 | Subject), data=Orthodont)
>> >
>> > I would like to measure the correlation b/t the variable "distance" at
>> different ages such that I would have
>> > a matrix of correlation coefficients like the following:
>> >
>> > age08 age09 age10 age11 age12 age13 age14
>> > age08 1
>> > age09 1
>> > age10 1
>> > age11 1
>> > age12 1
>> > age13 1
>> > age14 1
>> >
>> > The idea would be to demonstrate that the correlations b/t
>> > repeated measures of the variable "distance"
>> > decrease as the time b/t measures increases For example,
>> > one might expect the correlation
>> > coefficient b/t age08 and age09 to be higher than that
>> > between age08 and age14.
>> >
>>
>> This stuff is not currently possible in lmer/lme4 but is
>> easy in nlme:
>>
>> library(nlme)
>> Orthodont$age0 <- Orthodont$age/2-3
>> ## later code requires a time index of consecutive integers
>> ## (which apparently must also start at 1, although not stated)
>>
>> fit <- lme(distance~age,random=~1|Subject,data=Orthodont)
>>
>> ## compute autocorrelation on the basis of lag only, plot
>> a <- ACF(fit)
>> plot(a,alpha=0.05)
>>
>>
>> fit2 <- update(fit, correlation=corSymm(form=~age0|Subject))
>> fit3 <- update(fit, correlation=corAR1(form=~age0|Subject))
>>
>> AIC(fit,fit2,fit3)
>> ## at least on the basis of AIC, this extra complexity is
>> ## not warranted
>>
>> anova(fit,fit2) ## likelihood ratio test
>>
>> ______________________________________________
>> R-help at r-project.org <mailto:R-help at r-project.org> 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.
More information about the R-help
mailing list