【问题标题】:Rolling correlation two data frames [duplicate]滚动相关两个数据帧[重复]
【发布时间】:2020-07-27 19:35:13
【问题描述】:

我有 2 个数据框,独立,其中我有一些股票的日志每日回报。例如:

Index   Date    Close    Volume  Open    High    Low    Return
1259    27/07/2015  627.26  2673801 621 634.3   620.5   NA
1258    28/07/2015  628 1713684 632.83  632.83  623.31  1.18E-03
1257    29/07/2015  631.93  1573146 628.8   633.36  622.65  6.24E-03
1256    30/07/2015  632.59  1472286 630 635.22  622.05  1.04E-03
1255    31/07/2015  625.61  1705286 631.38  632.91  625.5   -1.11E-02

假设这是 df1 并且第二个 df2 是相似的。返回的变量同名(df1$Return, df2$Return)

我正在尝试创建滚动关联,例如 5 天窗口。我有一些问题,因为我对此很陌生:

  1. 使用单独的数据框最简单的方法是什么?我搜索了一下,试图了解如何应用 rollapply 但没有成功。有人可以解释我如何创建函数然后应用它吗?

类似:

corx <- function(x) cor(df1$return, df2$return)
mycors <- rollapply(c(df1$return, df2$return),5, corx)
  1. 我还有一个一般性问题,对时间序列日期进行排序的最佳做法是升序还是降序?我想这可能会对应用 rollapply 产生影响,所以我有兴趣了解。

提前谢谢你

【问题讨论】:

    标签: r time-series correlation


    【解决方案1】:

    在索引上调用rollapplyr,如下所示:

    library(zoo)
    
    set.seed(123)
    
    ret1 <- rnorm(10)
    ret2 <- rnorm(10)
    
    rollapplyr(seq_along(ret1), 5, function(ix) cor(ret1[ix], ret2[ix]), fill = NA)
    ##  [1]         NA         NA         NA         NA -0.2440453  0.6974227
    ##  [7]  0.7729576  0.9777006  0.8008661  0.8428961
    

    或将返回向量 cbind 并使用 by.column = FALSE

    ret <- cbind(ret1, ret2)
    rollapplyr(ret, 5, function(x) cor(x[, 1], x[, 2]), by.column = FALSE, fill = NA)
    ##  [1]         NA         NA         NA         NA -0.2440453  0.6974227
    ##  [7]  0.7729576  0.9777006  0.8008661  0.8428961
    

    通常时间是递增的。如果您创建一个 ts、zoo 或 xts 时间序列对象,则使用约定。

    【讨论】:

    • 如何从两个不同的数据帧中调用我的函数变量?例如,我这样使用它:rollapplyr(seq_along(df1[,1]), 5, function(x,y) cor(x,y), df1$returns, df2$returns, fill = NA) 但我收到了一个错误。当然这适用于第一个解决方案,没有绑定变量(如果我无法找到具有单独数据框的解决方案,我将使用它)谢谢您的帮助!
    • ret1 &lt;- df1$returns; ret2 &lt;- df2$returns
    猜你喜欢
    • 1970-01-01
    • 2017-09-03
    • 2015-07-26
    • 2019-10-08
    • 1970-01-01
    • 2013-10-07
    • 2013-02-17
    相关资源
    最近更新 更多