滚动平均成对相关 - 代码未按预期工作

Rolling average pairwise correlation - code doesn't work as expected

我有一个 xts 时间序列对象:

head(mtrx)
                    ADS.DE.Close ALV.DE.Close BAS.DE.Close BAYN.DE.Close BEI.DE.Close BMW.DE.Close CBK.DE.Close CON.DE.Close DAI.DE.Close
2007-12-28 01:00:00        51.26       147.95       101.41         62.53        53.00        42.35        21.04        86.06        66.50
2008-01-02 01:00:00        50.00       145.92       100.94         61.45        52.39        42.73        20.75        83.76        64.68
2008-01-03 01:00:00        50.09       144.93       101.60         61.71        51.18        42.09        20.48        81.74        62.91
2008-01-04 01:00:00        49.81       142.08       102.17         62.43        51.02        40.90        20.42        75.28        59.17
2008-01-07 01:00:00        49.51       140.06       104.20         63.50        51.15        41.98        20.48        73.99        58.63
2008-01-08 01:00:00        48.30       139.88       103.97         65.08        50.95        42.00        20.25        75.43        57.88
                    DB1.DE.Close DBK.DE.Close DPW.DE.Close DTE.DE.Close EOAN.DE.Close FME.DE.Close FRE.DE.Close HEI.DE.Close HEN3.DE.Close
2007-12-28 01:00:00       135.75        77.81        23.51        15.02        145.59        36.69        56.00        72.86         38.43
2008-01-02 01:00:00       128.63        76.82        23.21        14.90        143.36        36.10        55.80        71.14         37.95
2008-01-03 01:00:00       123.85        76.28        22.67        14.90        146.18        36.34        56.00        69.90         37.41
2008-01-04 01:00:00       118.48        75.91        22.87        15.00        147.85        36.50        55.63        68.60         37.17
2008-01-07 01:00:00       114.59        75.47        22.70        15.43        150.97        37.12        55.82        65.30         36.67
2008-01-08 01:00:00       123.28        74.90        24.15        15.44        149.21        37.72        57.13        64.61         36.86
                    IFX.DE.Close LHA.DE.Close LIN.DE.Close LXS.DE.Close MRK.DE.Close MUV2.DE.Close RWE.DE.Close SAP.DE.Close SDF.DE.Close
2007-12-28 01:00:00         8.07        18.22        90.45        33.60        88.30        132.94        95.68        35.53       162.75
2008-01-02 01:00:00         8.13        18.20        90.21        33.22        87.45        132.76        94.96        34.88       167.35
2008-01-03 01:00:00         7.97        17.75        90.90        32.46        86.15        131.94        97.84        34.53       170.44
2008-01-04 01:00:00         7.68        17.35        94.88        31.55        86.07        131.91        97.41        34.12       165.75
2008-01-07 01:00:00         7.36        17.46        95.64        30.45        85.99        131.22       100.31        32.90       163.99
2008-01-08 01:00:00         7.34        17.60        95.90        30.31        89.03        129.94        98.78        33.04       170.66
                    SIE.DE.Close TKA.DE.Close VOW3.DE.Close
2007-12-28 01:00:00       105.49        38.35        100.00
2008-01-02 01:00:00       103.97        38.37         99.15
2008-01-03 01:00:00       102.82        38.30         96.55
2008-01-04 01:00:00       100.10        36.58         94.10
2008-01-07 01:00:00        98.60        36.46         93.60
2008-01-08 01:00:00       100.41        37.40         94.65

我想计算滚动(30 天)平均成对相关性并尝试了以下方法:

cor.mean <- function(x) { 
  rval <- cor(x) 
  return(mean(rval[lower.tri(rval)]))
}
cor.roll <- rollapply(mtrx,width=30,FUN="cor.mean") #doesn't work

不幸的是,我没有得到包含结果的时间列,而是得到以下结果:

head(cor.roll,40)
                    ADS.DE.Close ALV.DE.Close BAS.DE.Close BAYN.DE.Close BEI.DE.Close BMW.DE.Close CBK.DE.Close CON.DE.Close DAI.DE.Close
2007-12-28 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-01-02 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-01-03 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-01-04 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-01-07 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-01-08 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-01-09 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-01-10 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-01-11 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-01-14 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-01-15 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-01-16 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-01-17 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-01-18 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-01-21 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-01-22 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-01-23 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-01-24 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-01-25 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-01-28 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-01-29 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-01-30 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-01-31 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-02-01 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-02-04 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-02-05 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-02-06 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-02-07 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-02-08 01:00:00           NA           NA           NA            NA           NA           NA           NA           NA           NA
2008-02-11 01:00:00          NaN          NaN          NaN           NaN          NaN          NaN          NaN          NaN          NaN
2008-02-12 01:00:00          NaN          NaN          NaN           NaN          NaN          NaN          NaN          NaN          NaN
2008-02-13 01:00:00          NaN          NaN          NaN           NaN          NaN          NaN          NaN          NaN          NaN
2008-02-14 01:00:00          NaN          NaN          NaN           NaN          NaN          NaN          NaN          NaN          NaN
2008-02-15 01:00:00          NaN          NaN          NaN           NaN          NaN          NaN          NaN          NaN          NaN
2008-02-18 01:00:00          NaN          NaN          NaN           NaN          NaN          NaN          NaN          NaN          NaN
2008-02-19 01:00:00          NaN          NaN          NaN           NaN          NaN          NaN          NaN          NaN          NaN
2008-02-20 01:00:00          NaN          NaN          NaN           NaN          NaN          NaN          NaN          NaN          NaN
2008-02-21 01:00:00          NaN          NaN          NaN           NaN          NaN          NaN          NaN          NaN          NaN
2008-02-22 01:00:00          NaN          NaN          NaN           NaN          NaN          NaN          NaN          NaN          NaN
2008-02-25 01:00:00          NaN          NaN          NaN           NaN          NaN          NaN          NaN          NaN          NaN
                    DB1.DE.Close DBK.DE.Close DPW.DE.Close DTE.DE.Close EOAN.DE.Close FME.DE.Close FRE.DE.Close HEI.DE.Close HEN3.DE.Close
2007-12-28 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-01-02 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-01-03 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-01-04 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-01-07 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-01-08 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-01-09 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-01-10 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-01-11 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-01-14 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-01-15 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-01-16 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-01-17 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-01-18 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-01-21 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-01-22 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-01-23 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-01-24 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-01-25 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-01-28 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-01-29 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-01-30 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-01-31 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-02-01 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-02-04 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-02-05 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-02-06 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-02-07 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-02-08 01:00:00           NA           NA           NA           NA            NA           NA           NA           NA            NA
2008-02-11 01:00:00          NaN          NaN          NaN          NaN           NaN          NaN          NaN          NaN           NaN
2008-02-12 01:00:00          NaN          NaN          NaN          NaN           NaN          NaN          NaN          NaN           NaN
2008-02-13 01:00:00          NaN          NaN          NaN          NaN           NaN          NaN          NaN          NaN           NaN
2008-02-14 01:00:00          NaN          NaN          NaN          NaN           NaN          NaN          NaN          NaN           NaN
2008-02-15 01:00:00          NaN          NaN          NaN          NaN           NaN          NaN          NaN          NaN           NaN
2008-02-18 01:00:00          NaN          NaN          NaN          NaN           NaN          NaN          NaN          NaN           NaN
2008-02-19 01:00:00          NaN          NaN          NaN          NaN           NaN          NaN          NaN          NaN           NaN
2008-02-20 01:00:00          NaN          NaN          NaN          NaN           NaN          NaN          NaN          NaN           NaN
2008-02-21 01:00:00          NaN          NaN          NaN          NaN           NaN          NaN          NaN          NaN           NaN
2008-02-22 01:00:00          NaN          NaN          NaN          NaN           NaN          NaN          NaN          NaN           NaN
2008-02-25 01:00:00          NaN          NaN          NaN          NaN           NaN          NaN          NaN          NaN           NaN
                    IFX.DE.Close LHA.DE.Close LIN.DE.Close LXS.DE.Close MRK.DE.Close MUV2.DE.Close RWE.DE.Close SAP.DE.Close SDF.DE.Close
2007-12-28 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-01-02 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-01-03 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-01-04 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-01-07 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-01-08 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-01-09 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-01-10 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-01-11 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-01-14 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-01-15 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-01-16 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-01-17 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-01-18 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-01-21 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-01-22 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-01-23 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-01-24 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-01-25 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-01-28 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-01-29 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-01-30 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-01-31 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-02-01 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-02-04 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-02-05 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-02-06 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-02-07 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-02-08 01:00:00           NA           NA           NA           NA           NA            NA           NA           NA           NA
2008-02-11 01:00:00          NaN          NaN          NaN          NaN          NaN           NaN          NaN          NaN          NaN
2008-02-12 01:00:00          NaN          NaN          NaN          NaN          NaN           NaN          NaN          NaN          NaN
2008-02-13 01:00:00          NaN          NaN          NaN          NaN          NaN           NaN          NaN          NaN          NaN
2008-02-14 01:00:00          NaN          NaN          NaN          NaN          NaN           NaN          NaN          NaN          NaN
2008-02-15 01:00:00          NaN          NaN          NaN          NaN          NaN           NaN          NaN          NaN          NaN
2008-02-18 01:00:00          NaN          NaN          NaN          NaN          NaN           NaN          NaN          NaN          NaN
2008-02-19 01:00:00          NaN          NaN          NaN          NaN          NaN           NaN          NaN          NaN          NaN
2008-02-20 01:00:00          NaN          NaN          NaN          NaN          NaN           NaN          NaN          NaN          NaN
2008-02-21 01:00:00          NaN          NaN          NaN          NaN          NaN           NaN          NaN          NaN          NaN
2008-02-22 01:00:00          NaN          NaN          NaN          NaN          NaN           NaN          NaN          NaN          NaN
2008-02-25 01:00:00          NaN          NaN          NaN          NaN          NaN           NaN          NaN          NaN          NaN
                    SIE.DE.Close TKA.DE.Close VOW3.DE.Close
2007-12-28 01:00:00           NA           NA            NA
2008-01-02 01:00:00           NA           NA            NA
2008-01-03 01:00:00           NA           NA            NA
2008-01-04 01:00:00           NA           NA            NA
2008-01-07 01:00:00           NA           NA            NA
2008-01-08 01:00:00           NA           NA            NA
2008-01-09 01:00:00           NA           NA            NA
2008-01-10 01:00:00           NA           NA            NA
2008-01-11 01:00:00           NA           NA            NA
2008-01-14 01:00:00           NA           NA            NA
2008-01-15 01:00:00           NA           NA            NA
2008-01-16 01:00:00           NA           NA            NA
2008-01-17 01:00:00           NA           NA            NA
2008-01-18 01:00:00           NA           NA            NA
2008-01-21 01:00:00           NA           NA            NA
2008-01-22 01:00:00           NA           NA            NA
2008-01-23 01:00:00           NA           NA            NA
2008-01-24 01:00:00           NA           NA            NA
2008-01-25 01:00:00           NA           NA            NA
2008-01-28 01:00:00           NA           NA            NA
2008-01-29 01:00:00           NA           NA            NA
2008-01-30 01:00:00           NA           NA            NA
2008-01-31 01:00:00           NA           NA            NA
2008-02-01 01:00:00           NA           NA            NA
2008-02-04 01:00:00           NA           NA            NA
2008-02-05 01:00:00           NA           NA            NA
2008-02-06 01:00:00           NA           NA            NA
2008-02-07 01:00:00           NA           NA            NA
2008-02-08 01:00:00           NA           NA            NA
2008-02-11 01:00:00          NaN          NaN           NaN
2008-02-12 01:00:00          NaN          NaN           NaN
2008-02-13 01:00:00          NaN          NaN           NaN
2008-02-14 01:00:00          NaN          NaN           NaN
2008-02-15 01:00:00          NaN          NaN           NaN
2008-02-18 01:00:00          NaN          NaN           NaN
2008-02-19 01:00:00          NaN          NaN           NaN
2008-02-20 01:00:00          NaN          NaN           NaN
2008-02-21 01:00:00          NaN          NaN           NaN
2008-02-22 01:00:00          NaN          NaN           NaN
2008-02-25 01:00:00          NaN          NaN           NaN

计算平均成对相关性的函数似乎在整个时间序列上都能正常工作:

cor.mean(mtrx)
[1] 0.34918

所以问题似乎出在 rollapply

我的问题
我做错了什么以及如何补救?谢谢

如何以不同的方式使用 rollapply?由于您没有提供完整的数据集,这里演示一下我的意思:

set.seed(123)
m <- matrix(rnorm(100), ncol = 10)
rollapply(1:nrow(m), 5, function(x) cor.mean(m[x,]))
[1] -0.080029692 -0.038168840 -0.058443824  0.005699772 -0.014459878 -0.021569173

正如我刚刚发现的那样,您也可以像最初尝试的那样使用该功能,但设置 by.column = FALSE

rollapply(m,width=5,FUN="cor.mean", by.column = FALSE)
[1] -0.080029692 -0.038168840 -0.058443824  0.005699772 -0.014459878 -0.021569173

检查结果是否符合您的预期