Я пытаюсь построить график с нижним и верхним пределами. Поскольку я комбинирую две модели прогноза, я не уверен, как получить значения нижнего и верхнего пределов в матрице.
По сути, я хочу получить тот же график, который мы получаем при использовании обычной функции графика, т. Е. Прогнозные значения с верхним и нижним диапазонами.
Это код, который я пытаюсь:
df <- Base_df[1:39, ]
Test_df <- Base_df[40:45,]
fcast <- matrix(NA,nrow=6,ncol=ncol(df))
upper <- matrix(NA,nrow=6,ncol=ncol(df))
lower <- matrix(NA,nrow=6,ncol=ncol(df))
for(i in 1:ncol(df)){
fcets <- forecast(ets(df[,i],ic='aicc', seasonal.periods=6, level =95))
fcar <- forecast(arima(df[,i]),h=12/2, level =95)
#combining the values from both the forecasts
fcast[,i] <- (0.5*fcets$mean + 0.5*fcar$mean)
#To get the values of upper limit
upper[,i] <- 0.5*fcets$upper+0.5*fcar$upper
#To get the values of lower limit
lower[,i]<- 0.5*fcets$lower+0.5*fcar$lower
}
for(i in 1:10){
plot(df[,i], type="l", col ="blue", main = colnames(Test_df)[i])
lines(fcast[,i], col='red')
lines(upper[,i])
lines(lower[,i])
}
Ошибка:
Error in upper[, i] <- 0.5 * fc1$upper[, 1] + 0.5 * fc2$upper[, 1] :
number of items to replace is not a multiple of replacement length
Обратите внимание, что df - это матрица с 10 кулонами и 39 строками, и все эти столбцы обозначают данные об отдельном продукте.
Я понимаю, что верхняя и нижняя матрицы должны быть определены по-разному. Может кто-нибудь помочь мне с тем, как это можно правильно закодировать?