我有以下数据框:
read.csv(file="CNY % returns.csv",head=TRUE,sep=",")
DATE LOG...RETURNS
1 03/09/13 -6.9106715
2 04/09/13 -6.9106715
3 05/09/13 -4.5839582
4 06/09/13 1.7554592
5 07/09/13 -0.8808549
6 08/09/13 4.1842420
DATE: obviosuly date; format dd/mm/yyyy.
LOG RETURNS: compounded returns from a bitcoin CNY exchange.
我希望使用auto.arima
函数作为选择合适模型的起点。
我已经尝试过了:
cnyX <- read.zoo(text=" DATE LOG...RETURNS
1 03/09/13 -6.9106715
2 04/09/13 -6.9106715
3 05/09/13 -4.5839582
4 06/09/13 1.7554592
5 07/09/13 -0.8808549
6 08/09/13 4.1842420")
index(cnyX) <- as.Date(as.character(index(cnyX)),format="%D%m%y")
这会产生:
<NA> <NA> <NA> <NA> <NA> <NA>
0.2144527 -9.2553228 -0.8519708 -4.2074340 14.0817672 1.2212485 ....
我意识到as.character
分隔符不正确但不确定应该如何修复或纠正它。我已经阅读了有关创建XTS和TS对象的内容,但也无法使这些工作成功。我还提到:Convert data frame with date column to timeseries但发现这不合适。
如何将数据框转换为适合auto.arima
的格式?我可能有重复的值。
答案 0 :(得分:1)
问题源于您传递给format
的{{1}}参数不正确。事实上,如果您尝试将某些内容从as.Date
转换为character
并获得所有Date
的向量,那么您几乎肯定没有正确指定NA
。
这是一个可比较的数据集:
format
使用正确的Df <- data.frame(
Date = format(Sys.Date() - (729:0), "%d/%m/%y"),
LogReturns = log(rgamma(730, .25)),
stringsAsFactors = FALSE
)
,
format
这适用于ln_ret <- zoo::zoo(Df[,2], as.Date(Df[,1], format = "%d/%m/%y"))
ln_ret[1:4]
#2014-01-05 2014-01-06 2014-01-07 2014-01-08
# -2.268443 -3.562711 -4.546391 -0.707788
:
auto.arima
答案 1 :(得分:0)
如果您只想将ARIMA模型与日志返回数据相匹配,则无需担心正确的日期格式。也就是说,您知道ts何时开始和结束,并且如果最终需要这些预测,那么跟踪任何预测的日期是微不足道的。
这也可行。
tt <- read.csv(file="CNY % returns.csv",head=TRUE,sep=",")
# assuming default options for orders p, d, q, etc
forecast::auto.arima(x=tt[,2])