如何计算与滑动窗口的相关性?

时间:2011-11-02 18:08:02

标签: correlation sliding-window

我有一个名为aux的动物园对象,其中包含1961年至2009年的年度数据:

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

我想使用20年的滑动窗口来计算两列之间的相关性。我正在尝试使用rollapply,但我似乎无法使其工作。我尝试了几种不同的方法,但总是没有成功......

> 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'

有人可以告诉我如何让rollapply工作吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

试试这个。

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