2011-11-02 3 views
2

J'ai un objet zoo appelé aux données annuelles avec 1961-2009:comment calculer la corrélation avec une fenêtre coulissante?

 x$nao x[, 2] 
1961 -0.03 63.3 
1962 0.20 155.9 
1963 -2.98 211.0 

Je veux calculer la corrélation entre les deux colonnes en utilisant un 20 ans fenêtre coulissante. J'essaie d'utiliser rollapply, mais je ne semble pas être en mesure de le faire fonctionner. J'ai essayé plusieurs façons différentes de le faire, mais toujours sans succès ...

> rollapply(aux,20, cor(aux[,1],aux[,2],method="pearson")) 
Error in match.fun(FUN) : 'cor(aux[, 1], aux[, 2], method = "pearson")' is not a function, character or symbol 

> rollapply(aux,20, cor,method="pearson") 
Error in FUN(coredata(data)[posns], ...) : supply both 'x' and 'y' or a matrix-like 'x' 

> rollapply(aux,20, cor) 
Error in FUN(coredata(data)[posns], ...) : supply both 'x' and 'y' or a matrix-like 'x' 

Quelqu'un peut-il me dire comment faire rollapply travail?

Merci de votre aide!

Répondre

1

Essayez ceci.

library(quantmod) 
library(TTR) 

#Set the seed so results can be duplicated 
set.seed(123) 

#Build a zoo object with typical price data 
var1 <- zoo(cumprod(1+rnorm(50, 0.01, 0.05)), seq(1961, 2001, 1)) 
var2 <- zoo(cumprod(1+rnorm(50, 0.015, 0.1)), seq(1961, 2001, 1)) 
dat <- merge(var1=var1, var2=var2) 
plot(dat) 
grid() 

#Calculate the percent returns for the two prices 
del1 <- Delt(dat$var1) 
del2 <- Delt(dat$var2) 
dat <- merge(dat, del1=del1, del2=del2) 
dimnames(dat)[[2]][3] <- "del1" 
dimnames(dat)[[2]][4] <- "del2" 
head(dat) 
plot(dat) 

#Calculate the correlation between the two returns using a 5 year sliding window 
delcor <- runCor(dat$del1, dat$del2, n=5, use="all.obs", sample=TRUE, cumulative=FALSE) 
dat <- merge(dat, delcor) 
plot(dat$delcor, type="l", main="Sliding Window Correlation of Two Return Series", xlab="", col="red") 
grid() 

enter image description here

Questions connexes