Прогнозирование временных рядов с помощью модели ARIMA

Привет, я новичок в области временных рядов. Я хочу делать прогнозы для определенного временного ряда

Я использую приведенный ниже код:

library(forecast)
library(TSPred)

dataSet <- 'data'
dataSetPath <- paste0("data/", dataSet, '.csv')

# load data
recDF <- read.csv(dataSetPath, skip=0)
rt = ts(recDF["s2"])

if(dataSet=="data"){
  nTrain <- 3000
  nSkip <- nTrain


nData <- length(rt)
testLength <- nData - nSkip

# testLength 

arima_output90 = vector(mode="numeric", length=testLength)
real = vector(mode="numeric", length=testLength)

pred2 <- arimapred(rt[seq(1, nTrain)], n.ahead=testLength)
forecast::auto.arima(rt[seq(1, nTrain)])


# Brute force ARIMA - recompute model every step
# while making predictions for the next N hours.

for(i in nSkip+1:testLength)
{
  # Compute ARIMA on the full dataset up to this point
  trainSet = window(rt, start=i-nTrain, end=i)
  fit_arima <- forecast::auto.arima(trainSet)

  #   fcast_arima <- predict(fit_arima, n.ahead = 5, se.fit = TRUE)
  #   mean <- fcast_arima$pred
  #   std <- fcast_arima$se

  fcast_arima <- forecast(fit_arima, h=50)
  pred <- fcast_arima$mean


  arima_output50[i] = pred[50]
  real[i] = rt[i]
  cat("step: ",i ,"true : ", rt[i], " prediction: ", pred[50], '\n')

}

Я хочу изобразить на графике предсказанные и истинные значения на одном графике, чтобы иметь визуализацию истинных значений и предсказанных значений для одного и того же временного шага. Как это сделать?

В модели, приведенной выше в временном шаге t, относится ли прогноз предсказания [50] к значению rt [i + 50] (я хочу, чтобы прогнозирование было на 50 временных шагов вперед), или ссылается ли на rt [i] (оценено на основе модели, обученной методом грубой силы, на основе предыдущего ценности)?

Где i - текущий временной шаг, как в коде, а rt - реальное значение временного шага i.


person PAPAS    schedule 17.03.2018    source источник


Ответы (1)


Вы можете использовать:

ts.plot(fit_arima$x, fit_arima$fitted, pred, type='o', col=c('blue', 'green', 'red'), lty=c(1,2,3))
legend('topleft', c('train', 'fitted', 'forecast'), col=c('blue', 'green', 'red'), lty=c(1,2,3))

ts.plot автоматически извлекает временные метки из временного ряда и отображает их на оси абсцисс. Для стандартных AirPassengers данных вы получите следующий результат. введите здесь описание изображения

person quest    schedule 19.03.2018