R中的快速滚动相关
Fast Rolling Correlation in R
我正在尝试对第 N 行的数据执行滚动相关,其中 N 大于 600000。这是一个股票数据集,其中每一行代表当时股票的价值,因此每一行都不同一分钟。 link 是关于如何实现代码的想法。
尽管如此,由于我的数据集中有太多行,它运行起来非常慢。我想知道是否还有其他可能的解决方案。我想到:由于 window 只相差一分钟,也许我可以以某种方式动态更新均值和标准差,这样 cor
函数就不需要考虑整个 window 代码。我个人认为这可能不是一个好方法,因为 mean 很容易更新,但是对于 sd,整个 cols 将需要重新考虑。
非常感谢任何帮助!谢谢!
我不知道“极慢”对您意味着什么或您需要多快,但这里有一个解决方案,适用于一些简单的虚假数据,在 2012 年的笔记本电脑上大约 20 秒内有 600,000 行,运行 60 个观测值 windows 的滚动相关性。
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)
如果您希望滚动 window 由时间戳而不是固定数量的观察来定义,您还可以查看 slide2_index_dbl
函数。
我正在尝试对第 N 行的数据执行滚动相关,其中 N 大于 600000。这是一个股票数据集,其中每一行代表当时股票的价值,因此每一行都不同一分钟。 link 是关于如何实现代码的想法。
尽管如此,由于我的数据集中有太多行,它运行起来非常慢。我想知道是否还有其他可能的解决方案。我想到:由于 window 只相差一分钟,也许我可以以某种方式动态更新均值和标准差,这样 cor
函数就不需要考虑整个 window 代码。我个人认为这可能不是一个好方法,因为 mean 很容易更新,但是对于 sd,整个 cols 将需要重新考虑。
非常感谢任何帮助!谢谢!
我不知道“极慢”对您意味着什么或您需要多快,但这里有一个解决方案,适用于一些简单的虚假数据,在 2012 年的笔记本电脑上大约 20 秒内有 600,000 行,运行 60 个观测值 windows 的滚动相关性。
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)
如果您希望滚动 window 由时间戳而不是固定数量的观察来定义,您还可以查看 slide2_index_dbl
函数。