【问题标题】:Fast Rolling Correlation in RR中的快速滚动相关
【发布时间】:2021-12-30 17:27:03
【问题描述】:
我正在尝试对具有第 N 行的数据执行滚动关联,其中 N 大于 600000。这是一个股票数据集,其中每一行代表该分钟股票的价值,因此每一行相差一个分钟。这个link 是关于如何实现代码的想法。
尽管如此,由于我的数据集中有这么多行,它的运行速度非常慢。我想知道是否还有其他可能的解决方案。我想:既然窗口只相差一分钟,也许我可以以某种方式动态更新均值和标准差,这样cor 函数就不需要再次占用整个窗口的代码了。我个人认为这可能不是一个好方法,因为 mean 很容易更新,但是对于 sd,需要再次考虑整个 cols。
不胜感激!谢谢!
【问题讨论】:
标签:
r
statistics
correlation
【解决方案1】:
我不知道“极慢”对您意味着什么或您需要多快,但这里有一个解决方案,它适用于一些简单的假数据,在 2012 年的笔记本电脑上大约 20 秒内有 600,000 行,运行滚动相关性60 个观察窗口。
df <- data.frame(change_a = rnorm(6E5), change_b = rnorm(6E5))
df$price_a = 100 + cumsum(df$change_a)
df$price_b = 100 + cumsum(df$change_b)
df$corr100 = slider::slide2_dbl(df$price_a, df$price_b, cor, .before = 59)
如果您希望滚动窗口由时间戳而不是固定数量的观察值定义,您还可以查看slide2_index_dbl 函数。