我想为几年前的几只股票创建一个相关矩阵。
getSymbols(c("AAPL", "FB", "LNKD"))
close<-cbind(Cl(AAPL), Cl(FB), Cl(LNKD))
roc<-ROC(close)
这些公司都在不同的时间上市,所以我得到:
head(close)
AAPL.Close FB.Close LNKD.Close
2007-01-03 83.80 NA NA
2007-01-04 85.66 NA NA
2007-01-05 85.05 NA NA
2007-01-08 85.47 NA NA
2007-01-09 92.57 NA NA
2007-01-10 97.00 NA NA
和:
tail(close)
AAPL.Close FB.Close LNKD.Close
2013-11-04 526.75 48.22 223.72
2013-11-05 525.45 50.11 224.54
2013-11-06 520.92 49.12 220.78
2013-11-07 512.49 47.56 211.47
2013-11-08 520.56 47.53 215.17
2013-11-11 519.05 46.20 211.66
所以当我:
cor(roc)
我得到:
AAPL.Close FB.Close LNKD.Close
AAPL.Close 1 NA NA
FB.Close NA 1 NA
LNKD.Close NA NA 1
在这种情况下,我是否被迫在所有三家公司都有股票回报历史的日期开始矩阵?
在这种情况下,那就是:
head(na.omit(close))
AAPL.Close FB.Close LNKD.Close
2012-05-18 530.38 38.23 99.02
2012-05-21 561.28 34.03 96.84
2012-05-22 556.97 31.00 101.33
2012-05-23 570.56 32.00 103.56
2012-05-24 565.32 33.03 98.80
现在,如果我将这个想法扩展到更大的矩阵,比如 SP 500,我想摆脱历史上的 NA,而不需要取出整个列,因为这会与矩阵相混淆。有没有办法清理返回数据以便能够比较 cor 矩阵的返回?
之前有人问过这个问题的变体,但没有令人信服的答案: