Почему tsCV подходит для использования с такими алгоритмами выбора модели, как ets / auto.arima?

В книге Роба Хайндмана Роб описывает использование tsCV для оценки точности прогнозов моделей, возвращаемых auto.arima и ets.

Это скорее концептуальный вопрос, но я изучил базовый код tsCV и увидел следующее:

   for (i in seq_len(n - 1)) {
        fc <- try(suppressWarnings(forecastfunction(subset(y, 
            start = ifelse(is.null(window), 1L, ifelse(i - window >= 
                0L, i - window + 1L, stop("small window"))), 
            end = i), h = h, ...)), silent = TRUE)
        if (!is.element("try-error", class(fc))) {
            e[i, ] <- y[i + (1:h)] - fc$mean
        }
    }

Таким образом, это означает, что для каждой итерации перекрестной проверки прогнозов будет оцениваться новый ets / auto.arima. На мой взгляд, я не вижу, как это оценивает точность прогноза конкретной ARIMA или модели сглаживания, поскольку модель, оцененная во время (t-1), будет отличаться от окончательной модели, выбранной во время t. Может кто-нибудь объяснить, почему это нормально?


person Kevin Lu    schedule 07.12.2018    source источник


Ответы (1)


Я столкнулся с аналогичной проблемой при попытке оценить Arima (2,1,0) с помощью tsCV. В моем случае использования у меня есть некоторые ежедневные данные, и каждый четверг я хочу прогнозировать данные на следующую неделю. Это означает, что я хочу тренировать свою модель Arima только один раз в неделю, что невозможно (черт возьми, я все еще новичок в R ...) с поведением tsCV по умолчанию.

К счастью, tsCV позволяет передавать пользовательскую функцию. В нем я тренирую новую модель, только если сегодня четверг. Если наступит другой день, я повторно использую модель, рассчитанную в прошлый четверг.

Может быть, вы могли бы сделать что-то подобное, чтобы получить "исправленную" модель?

person Sourygna    schedule 08.06.2020