如何在不重新估计参数的情况下对测试数据重新拟合 Holt-Winters 指数平滑模型
How to refit a Holt-Winters exponential smoothing model on test data without re-estimation of parameters
我尝试使用 HoltWinters 方法进行指数平滑来生成多个单步预测。因此,我将我的数据分为训练和测试,并在我的训练集上拟合了一个 HoltWinters 模型。现在我想为我的测试数据的长度生成多个单步预测,这样模型就会随着测试集的每一次新观察而“更新”,而无需重新估计参数。某种程度上可以完成滚动原点交叉验证。
我找到了 refit()
函数,但这似乎只适用于 ARIMA 模型。有人知道一些可以工作的代码吗?或者我可以在什么地方读到它?
Holt-Winters 方法是 ETS 模型的特例。所以你可以像这样使用 fable 包中的 ETS
函数:
library(fable)
library(dplyr)
fit <- as_tsibble(USAccDeaths) %>%
filter(lubridate::year(index) < 1977) %>%
model(ets = ETS(value))
fit %>%
refit(as_tsibble(USAccDeaths)) %>%
report()
#> Series: value
#> Model: ETS(A,N,A)
#> Smoothing parameters:
#> alpha = 0.6570182
#> gamma = 0.004485907
#>
#> Initial states:
#> l[0] s[0] s[-1] s[-2] s[-3] s[-4] s[-5] s[-6]
#> 9753.881 -30.20712 -286.0886 227.9668 -65.55104 977.0047 1673.521 806.8883
#> s[-7] s[-8] s[-9] s[-10] s[-11]
#> 327.0867 -529.6172 -754.7921 -1551.379 -794.833
#>
#> sigma^2: 80017.07
#>
#> AIC AICc BIC
#> 1131.232 1137.507 1160.828
由 reprex package (v2.0.1)
创建于 2022-06-02
如果您特别想要 Holt-Winters 变体,您可以使用
model(ets = ETS(value ~ trend("A") + season("M")))
对于乘法 Holt-Winters 模型或
model(ets = ETS(value ~ trend("A") + season("A")))
对于添加剂 Holt-Winters 模型
我尝试使用 HoltWinters 方法进行指数平滑来生成多个单步预测。因此,我将我的数据分为训练和测试,并在我的训练集上拟合了一个 HoltWinters 模型。现在我想为我的测试数据的长度生成多个单步预测,这样模型就会随着测试集的每一次新观察而“更新”,而无需重新估计参数。某种程度上可以完成滚动原点交叉验证。
我找到了 refit()
函数,但这似乎只适用于 ARIMA 模型。有人知道一些可以工作的代码吗?或者我可以在什么地方读到它?
Holt-Winters 方法是 ETS 模型的特例。所以你可以像这样使用 fable 包中的 ETS
函数:
library(fable)
library(dplyr)
fit <- as_tsibble(USAccDeaths) %>%
filter(lubridate::year(index) < 1977) %>%
model(ets = ETS(value))
fit %>%
refit(as_tsibble(USAccDeaths)) %>%
report()
#> Series: value
#> Model: ETS(A,N,A)
#> Smoothing parameters:
#> alpha = 0.6570182
#> gamma = 0.004485907
#>
#> Initial states:
#> l[0] s[0] s[-1] s[-2] s[-3] s[-4] s[-5] s[-6]
#> 9753.881 -30.20712 -286.0886 227.9668 -65.55104 977.0047 1673.521 806.8883
#> s[-7] s[-8] s[-9] s[-10] s[-11]
#> 327.0867 -529.6172 -754.7921 -1551.379 -794.833
#>
#> sigma^2: 80017.07
#>
#> AIC AICc BIC
#> 1131.232 1137.507 1160.828
由 reprex package (v2.0.1)
创建于 2022-06-02如果您特别想要 Holt-Winters 变体,您可以使用
model(ets = ETS(value ~ trend("A") + season("M")))
对于乘法 Holt-Winters 模型或
model(ets = ETS(value ~ trend("A") + season("A")))
对于添加剂 Holt-Winters 模型