0
$\begingroup$

I am confused with the Winter Holt's Time series model usage. I use 2 years of data to train and want to predict 3rd-year data.

Note1: I have partial 3rd year's data, but I want to use it to check my forecasting.

If I use:

model = ExponentialSmoothing(data,
                             trend=None,
                             seasonal='mul',
                             seasonal_periods=seasonal_periods,
                             use_boxcox=False)                                                   

model_fit = model.fit(smoothing_level=alpha,
                      smoothing_trend=beta,
                      smoothing_seasonal=gamma)

forecast = model_fit.predict(365)

I get enter image description here where the blue was my 2 years training data and orange was my forecasted data.

Note2: The blue data below the orange is the data that I didn't use for training. It's just overlaid to compare the predictions.

However, when I use

model = ExponentialSmoothing(data[var],
                             trend=None,
                             seasonal='mul',
                             seasonal_periods=seasonal_periods,
                             use_boxcox=False)
    
model_fit = model.fit(smoothing_level=alpha,
                      smoothing_trend=beta,
                      smoothing_seasonal=gamma)

forecast = model_fit.forecast(365)

I get: enter image description here. If I understood correctly, it forecasts one periodic cycle and then, using that cycle predicts the next one and vice versa. Since it did not fit any trend, it just repeats the seasonal cycle.

  • What is the difference between predict() and forecast() methods?

  • Also, can you suggest how I tackle this problem better using Holt Winter's model?

I feel the trend first decreases and then increases, which I don't see the model understanding if I use a 'multiplicative' or 'additive' trend in the model's fit configuration.

  • Should I subtract the data of 1st year from the second year and then use only 2nd year's modified data (due to subtraction) to predict the third year using model.forecast()? (Of course, I will have to add the data of 2nd year to the 3rd year forecasted data).

  • Is my understanding correct?

  • Do you have any other suggestions to introduce such a trend in the model parameters?

$\endgroup$
3
  • $\begingroup$ May I know which API/package you have used for ExponentialSmoothing()? sktime or statsmodels, Darts? $\endgroup$
    – Mario
    Nov 10, 2023 at 2:20
  • $\begingroup$ Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. $\endgroup$
    – Community Bot
    Nov 10, 2023 at 4:36
  • 1
    $\begingroup$ @Mario Thanks for the comment. I was using statsmodels. $\endgroup$
    – kg__
    Nov 10, 2023 at 7:17

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.