【发布时间】:2017-05-18 21:10:19
【问题描述】:
我有 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
编辑:
我想要的是相关矩阵的 diag() + 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(如果你关注的话)?
【问题讨论】:
标签: r correlation xts