3

好的,所以我们从预测包文档中知道,hw()它基本上是forecast(ets(...)). 但是,我想确切地知道哪个 ETS 公式相当于拟合 + 预测“加法”Holt-Winters(如hw(x, seasonal="additive")和“乘法”Holt-Winters(如hw(x, seasonal="multiplicative").

(i) 我猜想使用带有 model="AAA" 的 ets 函数可以实现“加法”Holt-Winters 公式(结果大致相同,通常小数点或第一个单位的差异很小)。那是对的吗?

(ii) 乘法 Holt-Winters - 的 ETS 等效项hw(x, seasonal="multiplicative")如何?

提前致谢!

4

1 回答 1

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(默认),您不必阅读很远,那么模型就是 MAM。

于 2018-06-20T03:53:20.727 回答