Я написал цикл for в R
и попытаюсь сохранить мои вычисленные значения в матрице. К сожалению, он сохраняет только мое последнее значение. Я уже просматривал интернет, и я узнал, что эту проблему можно решить путем индексирования. Тем не менее, я уже делаю это, и он все еще не работает. Вы видите мою ошибку?для цикла только сохраняет последнее значение
Набор данных:
require(stats)
data <- ts.union(a=arima.sim(model=list(ar=c(.9,-.2)), n=144),
b=arima.sim(model=list(ar=c(.6, -.3)), n=144),
c=arima.sim(model=list(ar=c(-.2,-.6)), n=144),
d=arima.sim(model=list(ar=c(-.1,-.6)), n=144),
e=arima.sim(model=list(ar=c(.2,-.6)), n=144),
f=arima.sim(model=list(ar=c(.2,.7)), n=144),
g=arima.sim(model=list(ar=c(.3,.2)), n=144),
h=arima.sim(model=list(ar=c(-.4,.3)), n=144),
i=arima.sim(model=list(ar=c(.1,-.7)), n=144),
j=arima.sim(model=list(ar=c(.8,.1)), n=144))
data <- ts(data, start=c(2007, 2), frequency=12)
петля:
require(vars)
for(i in 1:12){
# compute factors, window is 5.5 years wide
factors <- ts(prcomp(window(data, start=c(2007, (i+1)), end=c(2012, i+6)), center=T, scale=T)$x[,1:5],
start=c(2007,(i+1)), frequency=12)
# estimate VAR model
model <- VAR(window(data, start=c(2007, (i+1)), end=c(2012, i+6)),
exogen=factors, type="const")
# forecast factors
factor.fcst <- sapply(factors, function(x) predict(auto.arima(x, stationary=T, seasonal=F), n.ahead=12))[1,]
factor.fcst <- cbind(factor.fcst$PC1, factor.fcst$PC2, factor.fcst$PC3, factor.fcst$PC4, factor.fcst$PC5)
colnames(factor.fcst) <- colnames(factors)
# forecast model
a_fcst <- ts(predict(model, dumvar=factor.fcst, n.ahead=12, ci=0.95)$fcst$a[,1],
start=c(2012, (i+7)), frequency=12)
# compute RMSE
RMSE <- matrix(ncol=1, nrow=12)
RMSE[i,] <- sqrt(mean((window(data[,1], start=c(2012, (i+7)),
end=c(2012, (i+18))) - a_fcst)^2))
print(RMSE)
}
Спасибо за вашу помощь!
Вы возвращаете RMSE каждую итерацию с помощью 'RMSE <- matrix (ncol = 1, nrow = 12)', вынимаете это из цикла. В общем, вы должны попытаться избежать циклов - посмотрите на функцию «rollapply» в пакете 'zoo' для способов анализа временных рядов. – jeremycg