R 预测包 - 加法和乘法 hw() - 在 ETS 函数中等效
R forecast package - additive and multiplicative hw() - equivalent in ETS function
好的,所以我们从 forecast 包文档中知道 hw()
基本上是 forecast(ets(...))
的包装函数。但是,我想确切地知道哪种 ETS 公式相当于拟合 + 预测 "additive" Holt-Winters(如 hw(x, seasonal="additive")
和 "multiplicative" Holt-Winters(如 hw(x, seasonal="multiplicative")
.
(i) 我想 "additive" Holt-Winters 公式可以使用 ets 函数和 model="AAA" 来实现(结果大致相同,通常在小数点或第一单位)。对吗?
(ii) 乘法 Holt-Winters 的 ETS 等价物如何 - hw(x, seasonal="multiplicative")
?
提前致谢!
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。
好的,所以我们从 forecast 包文档中知道 hw()
基本上是 forecast(ets(...))
的包装函数。但是,我想确切地知道哪种 ETS 公式相当于拟合 + 预测 "additive" Holt-Winters(如 hw(x, seasonal="additive")
和 "multiplicative" Holt-Winters(如 hw(x, seasonal="multiplicative")
.
(i) 我想 "additive" Holt-Winters 公式可以使用 ets 函数和 model="AAA" 来实现(结果大致相同,通常在小数点或第一单位)。对吗?
(ii) 乘法 Holt-Winters 的 ETS 等价物如何 - hw(x, seasonal="multiplicative")
?
提前致谢!
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。