我想使用Pearson相关性来检测加密货币和欧元/美元之间的相关性。
我选择使用从2020-11-01到今天的时间跨度。问题显然是,在加密货币回报系列中,假日和周末都被包括在内,这使得我的时间序列比欧元/美元的时间序列更长。
以下是我用来下载的一些代码行(通过CryptowatchR包(:
df.ohlc.daily_pax_cor <- get_ohlc(pax, periods = 86400, after = "2020-11-01", exchange = "Bitfinex", datetime=TRUE)
index_daily_pax_cor <- df.ohlc.daily_pax_cor$CloseTime
data_daily_pax_cor <- data.frame(df.ohlc.daily_pax_cor[,2:6])
df.ohlc.daily_pax_cor_xts <- xts(data_daily_pax_cor, index_daily_pax_cor)
pax_daily_return_cor <- dailyReturn(df.ohlc.daily_pax_cor_xts, log=TRUE)
观测次数为264次。
对于欧元/美元,这就是我所做的:
getSymbols("EURUSD=X", src = "yahoo", from = "2020-11-01")
EURUSD_daily_cor = `EURUSD=X`
eurusd_daily_return_cor = dailyReturn(EURUSD_daily_cor)
这给我留下了188个观察结果。
如何操作时间序列,使它们具有相同的长度?
使用此设置:
library(quantmod)
getSymbols("EURUSD=X", from = "2020-11-01")
getSymbols("AAPL", from = "2020-11-01")
# EURUSD=X has extra times
dim(`EURUSD=X`)
## [1] 188 6
dim(AAPL)
## [1] 179 6
setdiff(time(AAPL), time(`EURUSD=X`))
## numeric(0)
1(merge使用all=FALSE合并两个序列,只保留常用时间。
both <- merge(AAPL, `EURUSD=X`, all = FALSE)
nrow(both)
## [1] 179 6
2(相交另一种可能性是:
time0 <- as.Date(intersect(time(AAPL), time(`EURUSD=X`)))
AAPL0 <- AAPL[time0]
`EURUSD=X0` <- `EURUSD=X`[time0]