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