提问人:Nina 提问时间:7/21/2021 更新时间:7/22/2021 访问量:64
R 中时间序列中的远程假日和周末
Remote holidays and Weekends from timeseries in R
问:
我想使用 Pearson 相关性来检测加密货币和欧元/美元之间的相关性。
我选择使用从 2020 年 11 月 1 日到今天的时间跨度。 问题显然在于,在加密货币回报系列中,假期和周末包括在内,使我的时间序列比欧元/美元的时间序列更长。
以下是我用来下载它的一些代码行(通过 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 个观察结果。
如何操作时间序列以使其具有相同的长度?
答:
0赞
G. Grothendieck
7/22/2021
#1
使用此设置:
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)合并:使用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]
上一个:在 R 中准备时序数据
评论