循环 - 通过模型重新拟合为不同的ARMA模型生成滚动预测

时间:2016-10-23 18:29:04

标签: r loops forecasting

假设我对样本值中的ARMA模型估计有以下R循环:

USDlogreturns=diff(log(prices))

for(i in 0:10){
    for(j in 0:10){
      fit <- arima(USDlogreturns, order=c(i,0,j), include.mean=TRUE, method="ML")
     }
}

现在,我需要在样本外值上重新测试我的模型。所以我的问题如下。

如何通过ARMA模型重新拟合所有121个模型,如何告诉R创建并返回滚动预测方法的向量?这些是用于获得所需预测的条件:

•USDlogreturns:涵盖2010-08-18 / 2015-12-31期间的1962年每日观察数据

•培训数据集:首先是1162 USDlogreturns观察

•测试数据集:最近800 USD记录观察结果

•未来的步骤数:1天

•滚动预测数量:800

•模型改装窗口:每100天

编辑:

我根据以下帖子尝试了以下基本代码。这应该计算800次滚动预测,而不是每100天重新计算一次。如果它适用于我需要的修复,那么我将尝试使用模型重新设置相关代码。

Obtaining results as a matrix in a self created r function

data<-USDlogreturns
window<-window(USDlogreturns, from=1, to=1162)
step<-1
SlideFunction<- function(data, window, step) {
  total<- length(data)
  spots<- seq(from=1, to=(total-window), by=step)
  fcasts<- matrix(NA, nrow=length(spots), ncol=121)
  for(i in 1:length(spots)) {
    for(j in 1:121){
      p<- result[j,1]
      q<- result[j,3]
      fit <- Arima(data[spots[i]:(spots[i]+window)], order=c(p,0,q), method="ML", include.mean=TRUE)
      fcasts[i, j] <- forecast(fit, h=step)$mean 
      }
    }
  return(fcasts)
}

SlideFunction(data,window,step)

我的代码的问题是我收到以下错误消息:

&#34;在seq.default中(从= 1,到=(总 - 窗口),by = step):&#39;到&#39;必须长度为1&#34;

我的代码出了什么问题?谢谢。

PS:我是R编码循环的新手。很抱歉可能会提出简单的问题。

0 个答案:

没有答案