我可以将这些单独的 forcecasts 转换为一个 for 循环吗?

Can I transform those seperate forcecasts into one for loop?

数据以季度为单位,从 1955 年开始到 2019 年,我想做的是通过将样本周期逐渐增加一个点来获得固定范围的预测,并重复这个新的估计和预测过程样本期,并提取未来一年 (h=4) 的预测。我想从2017年第二季度开始预测。

但是我试过使用 for 循环,但它不起作用,是否可以将这段代码压缩成一个 for 循环函数

a <- ts(data$UK.GDP.UA.MP, start = c(1955,1), end = c(2016,4), frequency = 4)
aa <- auto.arima(a)
aa
forecast(aa,h = 4)


b <- ts(data$UK.GDP.UA.MP, start = c(1955,1), end = c(2017,1), frequency = 4)
bb <- auto.arima(a)
bb
forecast(bb,h = 4)


c <- ts(data$UK.GDP.UA.MP, start = c(1955,1), end = c(2017,2), frequency = 4)
cc <- auto.arima(a)
cc
forecast(cc,h = 4)


d<- ts(data$UK.GDP.UA.MP, start = c(1955,1), end = c(2017,3), frequency = 4)
dd <- auto.arima(d)
dd
forecast(dd,h = 4)

e <- ts(data$UK.GDP.UA.MP, start = c(1955,1), end = c(2017,4), frequency = 4)
ee <- auto.arima(e)
ee
forecast(ee,h = 4)

f <- ts(data$UK.GDP.UA.MP, start = c(1955,1), end = c(2018,1), frequency = 4)
ff <- auto.arima(f)
ff
forecast(ff,h = 4)

g <- ts(data$UK.GDP.UA.MP, start = c(1955,1), end = c(2018,2), frequency = 4)
gg <- auto.arima(g)
gg
forecast(gg,h = 4)

h <- ts(data$UK.GDP.UA.MP, start = c(1955,1), end = c(2018,3), frequency = 4)
hh <- auto.arima(h)
hh
forecast(hh,h = 4)
library(forecast)
ukgdp <- ts(data$UK.GDP.UA.MP, start=1955, frequency=4)

fc <- matrix(NA, ncol=4, nrow=8) %>% ts(start=c(2016,4), frequency=4)
colnames(fc) <- paste("h =",1:4)

for(i in seq(8)) {
  ukgdp_train <- window(ukgdp, end = c(2016, 3+i))
  fit <- auto.arima(ukgdp_train)
  fc[i,] <- forecast(fit, h=4)$mean
}

reprex package (v0.3.0)

于 2019-12-06 创建