Message-ID: <CABghstTD2TfWQ9Mc=tdyNVkemyvjz1Z+KBLgTj95Vw52iSfuKw@mail.gmail.com>
Date: 2011-11-18T23:06:50Z
From: Ben Bolker
Subject: account for temporal correlation
In-Reply-To: <99817B07-3AD6-429A-90FB-1E5464ABA9C1@gmail.com>
[cc'ing back to r-help]
On Fri, Nov 18, 2011 at 4:39 PM, matteo dossena
<matteo.dossena at gmail.com> wrote:
> Thanks a lot,
>
> just to make sure i got it right,
>
> if (using the real dataset) from the LogLikelihood ratio test model1 isn't "better" than model,
> means that temporal auto correlation isn't seriously affecting the model?
yes. (or use AIC etc.)
> and, I shouldn't be nesting time within subject because is implicit
> that observation from the same subject are the repeated measures?
yes.
>
> The need of nesting would for example be:
> an experiment ?also having spatial correlation, to say, if subjects are are also grouped by their geographical position,
> should i in this case be nesting location within subject?
>
If subjects were in spatial blocks then you would nest subject
within location (~1|location/subject).
Note (from ?corAR1) that you can also use an explicit time covariate,
(~time|location/subject) -- otherwise
the assumption is that observations within subject are ordered by time.
> cheers
> m.
>
> Il giorno 18 Nov 2011, alle ore 18:26, Ben Bolker ha scritto:
>
>> matteo dossena <matteo.dossena at ...> writes:
>>
>>>
>>> Dear list,
>>>
>>> I have a data frame like this:
>>>
>> set.seed(5)
>> mydata <- data.frame(var = rnorm(100,20,1),
>> ? ? ? ? ? ? ? ? ? ? ?temp = sin(sort(rep(c(1:10),10))),
>> ? ? ? ? ? ? ? ? ? ? ?subj = as.factor(rep(c(1:10),5)),
>> ? ? ? ? ? ? ? ? ? ? ?time = sort(rep(c(1:10),10)),
>> ? ? ? ? ? ? ? ? ? ? ?trt = rep(c("A","B"), 50))
>>>
>>> I need to model the response of var as a function of temp*trt
>>> and to do so I'm using the following model:
>>>
>> library(nlme)
>> model <- lme(var~temp*trt,random=~1|subj,mydata)
>>>
>>> however, since i have repeated measurement of the same subject,
>>> i.e. I measured var in subj1 at time1,2,3..
>>> I must consider the non independence of the residuals.
>>> moreover, temp is also a function of time, but i'm not sure how
>>> to include this in my model.
>>>
>>> I'm following the approach in Zuur et al 2009, so I checked for
>>> temporal auto-correlation using the
>>> function afc()
>>> In fact the residuals follow the temporal patter of temperature with time.
>>> However, here I'm not interested in the temporal dependence of temperature
>>> and consequently the effect of
>>> this on var.
>>> Instead what i need to do is to account for the
>>> correlation between consecutive measures (made on the same
>>> subject) in the error term of the model.
>>>
>>> here is my attempt to do so:
>>>
>>
>> model1 <- lme(var~temp*trt,random=~1|subj,
>> ? ? ? ? ? ? ? ?correlation=corAR1(form=~1|subj),mydata)
>>
>> model1$modelStruct$corStruct
>>
>> Correlation structure of class corAR1 representing
>> ? ? ? ?Phi
>> -0.05565362
>>
>> ?You shouldn't be nesting time within subject. ?'subject' is all the grouping
>> you need here.
>>
>> intervals(model1)
>>
>> gives (approximate!!) CI for the correlation structure parameter
>> (-0.27,0.77) in this case
>>
>> ?Of course, in this case we don't expect to find anything interesting
>> because these are simulated data without any correlation built in.
>>
>> ?These plots are useful.
>>
>> plot(ACF(model),alpha=0.05)
>> plot(ACF(model1),alpha=0.05) ?## should be ALMOST identical to the one above
>> ## taking correlation into account:
>> plot(ACF(model1,resType="normalized"),alpha=0.05)
>>
>> _______________________________________________
>> R-sig-mixed-models at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
>
>