假设我对样本值中的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编码循环的新手 . 很抱歉可能会提出简单的问题 .