# Re: [R] Measuring correlations in repeated measures data

From: Ben Bolker <bbolker_at_gmail.com>
Date: Mon, 28 Feb 2011 16:23:55 -0700

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