【问题标题】: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 函数。

    【讨论】:

      猜你喜欢
      • 2015-04-21
      • 2011-02-23
      • 2020-12-17
      • 2017-05-30
      • 1970-01-01
      • 2014-12-14
      • 1970-01-01
      • 2018-09-22
      • 1970-01-01
      相关资源
      最近更新 更多