Пакет прогнозов R - аддитивный и мультипликативный hw () - эквивалент в функции ETS

Итак, из документации пакета прогнозов мы знаем, что hw() в основном является функцией-оболочкой для forecast(ets(...)). Однако я хотел бы точно знать, какая формулировка ETS эквивалентна подбору + прогнозированию «аддитивного» Холта-Винтерса (как в hw(x, seasonal="additive") и «мультипликативного» Холта-Винтерса (как в hw(x, seasonal="multiplicative").

(i) Я предполагаю, что "аддитивная" формулировка Холта-Винтерса может быть достигнута с использованием функции ets с model = "AAA" (результаты примерно такие же, обычно небольшие различия в десятичных точках или первых единицах). Это верно?

(ii) А как насчет эквивалента ETS для мультипликативного Холта-Винтерса - hw(x, seasonal="multiplicative")?

Заранее спасибо!


person Mushrambo    schedule 19.06.2018    source источник


Ответы (1)


R с открытым исходным кодом. Просто посмотрите на код. Это не сложно. Вот первая часть функции hw().

> hw
function(y, h = 2 * frequency(x), seasonal = c("additive", "multiplicative"), damped = FALSE,
               level = c(80, 95), fan = FALSE, initial=c("optimal", "simple"), exponential=FALSE,
               alpha=NULL, beta=NULL, gamma=NULL, phi=NULL, lambda=NULL, biasadj=FALSE, x=y, ...) {
  initial <- match.arg(initial)
  seasonal <- match.arg(seasonal)
  m <- frequency(x)
  if (m <= 1L) {
    stop("The time series should have frequency greater than 1.")
  }
  if (length(y) < m + 3) {
    stop(paste("I need at least", m + 3, "observations to estimate seasonality."))
  }
  if (initial == "optimal" || damped) {
    if (seasonal == "additive" && exponential) {
      stop("Forbidden model combination")
    } else if (seasonal == "additive" && !exponential) {
      fcast <- forecast(ets(x, "AAA", alpha = alpha, beta = beta, gamma = gamma, phi = phi, damped = damped, opt.crit = "mse", lambda = lambda, biasadj = biasadj), h, level = level, fan = fan, ...)
    } else if (seasonal != "additive" && exponential) {
      fcast <- forecast(ets(x, "MMM", alpha = alpha, beta = beta, gamma = gamma, phi = phi, damped = damped, opt.crit = "mse", lambda = lambda, biasadj = biasadj), h, level = level, fan = fan, ...)
    } else { # if(seasonal!="additive" & !exponential)
      fcast <- forecast(ets(x, "MAM", alpha = alpha, beta = beta, gamma = gamma, phi = phi, damped = damped, opt.crit = "mse", lambda = lambda, biasadj = biasadj), h, level = level, fan = fan, ...)
    }
  }

Вам не нужно далеко читать, чтобы увидеть, что если seasonal='multiplicative' и exponential=FALSE (по умолчанию), то модель - МАМ.

person Rob Hyndman    schedule 20.06.2018
comment
Спасибо, профессор. Я понял. Чтобы воспроизвести мультипликативный hw () с ETS, параметры должны быть установлены следующим образом: forecast(ets(x, "MAM", alpha = NULL, beta = NULL, gamma = NULL, phi = NULL, damped = FALSE, opt.crit = "mse", lambda = NULL, biasadj = FALSE), h = steps)$mean. Проблема заключалась в затухающем аргументе, который по умолчанию ets() установлен на NULL, а по умолчанию hw() - на FALSE. - person Mushrambo; 20.06.2018