我有一个年度数据的xts。我试图获得每年之间的排名相关性。例如,这是我的xts的子集:如何计算xts中行之间的滚动相关性?
> yearlyRanks[16:20,45:55]
35881 35880 42261 33445 46087 31486 8981 7687 8203 8202 41383
2009-12-31 8 9 19 8 18 18 16 4 16 16 20
2010-12-31 4 3 20 6 19 2 17 17 17 17 21
2011-12-31 3 4 21 3 20 1 18 18 18 18 22
2012-12-31 6 6 22 5 21 19 19 19 19 19 4
2013-12-31 7 7 3 4 22 20 20 20 20 20 2
我想知道每年的排名与上一年的相关性。 (试图告诉今年的排名如何以及去年的预测。)
我试图用这个:
yearlyCors <- rollapplyr(coredata(yearlyRanks), width = 2, function(x) cor(x[1], x[2], use = 'n'))
但它永远,它似乎并没有工作。我认为这是因为我通过它一组2行,所以它想要返回2值,但我只期待1。(这是否有道理?)
任何想法,我将如何做到这一点?
编辑:
只要是明确的,这就是我想从子想:
> test <- yearlyRanks[16:20,45:55]
> c(cor(test[1,], test[2,]), cor(test[2,], test[3,]), cor(test[3,], test[4,]), cor(test[4,], test[5,]))
[1] 0.4679246 0.9930253 0.4854528 0.7193598
编辑:
我要的是诊断()+ 1相关矩阵。这里是转置的相关矩阵:
> cor(t(test))
2009-12-31 2010-12-31 2011-12-31 2012-12-31 2013-12-31
2009-12-31 1.00000000 *0.4679246* 0.4716995 0.3722922 0.08786426
2010-12-31 0.46792463 1.0000000 *0.9930253* 0.4654688 0.17192856
2011-12-31 0.47169948 0.9930253 1.0000000 *0.4854528* 0.20237689
2012-12-31 0.37229225 0.4654688 0.4854528 1.0000000 *0.71935975*
2013-12-31 0.08786426 0.1719286 0.2023769 0.7193598 1.00000000
你可以看到星号值是我想要的值。有没有办法访问diag + 1(如果你遵循)?
使用'rollapply' - thx进行分享 – FXQuantTrader