我有一个数据集,其截止日期为权益比率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)] )
答案 0 :(得分:0)
您的部分问题是您尝试使用ts
个对象来表示日期。通常,ts
用于在等间隔时间点(例如每日,每周或每月)采样的数据。您的时间序列缺少周末和可能某些假期的数据,因此ts
不合适,预测功能不需要。auto.arima
。 forecast
可以使用包含数据的向量。您唯一的问题似乎是在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
更新
代码已更新为在绘图的时间序列开头省略数据,并绘制预测间隔的数据点。情节如下所示。
对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