使用顺序收集的新数据进行提前预测

机器算法验证 r 时间序列 预测 有马
2022-04-04 12:26:00

大家好,我正在尝试提前一步进行预测。假设我有 1000 个数据并用它拟合 ARIMA 模型,然后我对未来一个时期进行预测。当我获得更多数据时,我想使用新数据预测另一个步骤,而不必重新估计所有系数等等......

这是我的代码,但由于某种原因,对于更大的数据集来说它非常慢,并且不太确定它是否在做我想要的:

set.seed(1234)
y=ts(log(35+10*rnorm(1000)))
set.seed(4567)
new.data=ts(log(35+10*rnorm(10)))

library(forecast)
model = auto.arima(y)

onestep.for=forecast(model,h=1)
for (i in 1:10) {
  data=c()
  data=c(y,new.data[1:i])
  newfit=Arima(data, model=model)
  forec=forecast(newfit,h=1)
  onestep.for=c(onestep.for,forec)
}
1个回答

你不需要这里的循环。一步预测与时间序列模型中的拟合值相同。所以以下应该做你想要的:

library(forecast)
model <- auto.arima(y)
newfit <- Arima(c(y,new.data), model=model)
onestep.for <- fitted(newfit)[1001:1010]