预测时间系列数据

时间:2015-07-27 20:26:13

标签: r date

我有一个数据集,其截止日期为权益比率VIX。我的练习是预测自上次日期以来的300分,并将其与实际历史数据进行比较。 1826年我的数据观察的片段看起来像

Date    Open    High    Low Close
02/01/2004  17.96   18.68   17.54   18.22
05/01/2004  18.45   18.49   17.44   17.49
06/01/2004  17.66   17.67   16.19   16.73
07/01/2004  16.72   16.75   15.5    15.5
08/01/2004  15.42   15.68   15.32   15.61
09/01/2004  16.15   16.88   15.57   16.75
12/01/2004  17.32   17.46   16.79   16.82
13/01/2004  16.6    18.33   16.53   18.04
14/01/2004  17.29   17.3    16.4    16.75
15/01/2004  17.07   17.31   15.49   15.56
16/01/2004  15.4    15.44   14.9    15
20/01/2004  15.77   16.13   15.09   15.21
21/01/2004  15.63   15.63   14.24   14.34
22/01/2004  14.2    14.87   14.01   14.71
23/01/2004  14.73   15.05   14.56   14.84
26/01/2004  15.78   15.78   14.52   14.55
27/01/2004  15.28   15.44   14.74   15.35
28/01/2004  15.37   17.06   15.29   16.78

代码生成一个平坦的预测,我想在同一个图中绘制历史数据。我怎么能这样做?

r_vix=diff(log(VIX[,"Close"]))
fit_1step <- auto.arima(r_vix[1:15])
h=300
forecast_1step = forecast(fit_1step, h=h)
plot(forecast_1step, xaxt="n",type="b")
plot_labels = 5
axis(1, at=seq(0,length(r_vix)+h-1,plot_labels), labels=VIX$Date[seq(2, length(r_vix)+h,plot_labels)] )

1 个答案:

答案 0 :(得分:0)

您的部分问题是您尝试使用ts个对象来表示日期。通常,ts用于在等间隔时间点(例如每日,每周或每月)采样的数据。您的时间序列缺少周末和可能某些假期的数据,因此ts不合适,预测功能不需要。auto.arimaforecast可以使用包含数据的向量。您唯一的问题似乎是在library(forecast) r_vix <- diff(log(VIX[,"Close"]))[-1] num_train <- 1826 # number of points used to calculate ARIMA model fit_1step <- auto.arima(r_vix[1:num_train]) h <- 300 # number of forecast points forecast_1step = forecast(fit_1step, h=h) plot_start <- 1000 # number of points at start of data series omitted from plot plot(forecast_1step, xaxt="n", xlim=c(plot_start, num_train+300), ylim=range(r_vix)) data_fcst_pts <- num_train:(num_train+h) # range of data points in forecast interval points(data_fcst_pts, r_vix[data_fcst_pts],col="blue", type="p", pch=16) plot_labels <- 126 # interval between x-axis major tick marks axis(1, at=seq(0,length(r_vix)+h-1,plot_labels), labels=VIX$Date[seq(2, length(r_vix)+h,plot_labels)] ) 对象的绘图函数创建的图表上显示日期。如何做到这一点的一个例子如下所示。

forecast

更新

代码已更新为在绘图的时间序列开头省略数据,并绘制预测间隔的数据点。情节如下所示。 enter image description here

对ARIMA模型的结果和预测的一个很好的解释是Rod Hyndman撰写的OText书,尤其是ARIMA modelling in R部分。 Hyndman教授是re.sub('"http://.*?"','"http://some other url"' ,data) 包的作者。更具体地说,如果您尝试使用ARIMA模型预测VIX作为S&amp; P 500波动率的度量,您可能需要考虑使用ARCH或GARCH方法的许多研究中的一些。开始的地方可能是Volatility Forecasting I: GARCH Models