2

我有一个名为 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工作?

感谢您的帮助!

4

1 回答 1

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()   

在此处输入图像描述

于 2012-06-07T22:48:54.720 回答