[R] moving correlation coef ?

Sundar Dorai-Raj sundar.dorai-raj at pdf.com
Wed Jun 29 18:50:19 CEST 2005



vincent wrote:
> Thank you for your answers.
> 
> In fact, i believe my question wasn't precise enough.
> I don't want to have a moving/sliding windows over the data
> to correlate (i am already doing that).
> 
> If I have 2 vectors
> X = (x1, x2, x3, ..., xt)
> Y = (y1, y2, x3, ..., yt)
> I want the most recent elements (t) to have a heavier weight
> in the correlation calculus than the older ones (1).
> 
> I think that one simple way to do that is for example to
> compute cor() over XP, YP where
> XP = (x1, x2, x2, x3, x3, x3, ..., xt, xt, xt)
> YP = (y1, y2, y2, y3, y3, y3, ..., yt, yt, yt)
> ie where each element is repeated several times according
> to its freshness.
> It's quite naive ! so if there is a cleaver idea, many thanks.
> 
> Thanks
> Vincent
> 

Perhaps ?cov.wt will work for you? Your example would be identical to:

set.seed(1)
X <- rnorm(100); Y <- rnorm(100)
# using cov.wt
rho1 <- cov.wt(cbind(X, Y), 1:100, cor = TRUE)$cor[1, 2]
# your weighting scheme
rho2 <- cor(X[rep(1:100, 1:100)], Y[rep(1:100, 1:100)])
all.equal(rho1, rho2)
# [1] TRUE

HTH,

--sundar




More information about the R-help mailing list