假设我对样本值中的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")
     }
}

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

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

•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)

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

“在seq.default中(从= 1,到=(总 - 窗口),by = step):'to'的长度必须为1”

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

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