Search code examples
pythonstatsmodelssmoothing

Exponential Smoothing with alpha and beta greater than one


I have the following time series

year        value
2001-01-01  433.0
2002-01-01  445.0
2003-01-01  406.0
2004-01-01  416.0
2005-01-01  432.0
2006-01-01  458.0
2007-01-01  418.0
2008-01-01  392.0
2009-01-01  464.0
2010-01-01  434.0
2012-01-01  435.0
2013-01-01  437.0
2014-01-01  465.0
2015-01-01  442.0
2016-01-01  456.0
2017-01-01  448.0
2018-01-01  433.0
2019-01-01  399.0

that I want to fit with an Exponential Smoothing model. I define my model the following way:

model = ExponentialSmoothing(dataframe, missing='drop', trend='mul', seasonal_periods=5,
                              seasonal='add',initialization_method="heuristic")
model = model.fit(optimized=True, method="basinhopping")

where I let the algorithm to optimize the values of smoothing_level=$\alpha$, smoothing_trending=$\beta$, smoothing_seasonal=$\gamma$ and damping_trend=$\phi$.

However, when I print the results for this specific case, i get: $\alpha=1.49$, $\beta=1.41$, $\gamma=0.0$ and $\phi=0.0$.

Could someone explain me what's happening here? Are these values of $\alpha$ and $\beta$ greater than 1 acceptable?


Solution

  • I think you're misinterpreting the results. We can run your model as follows:

    data = [
        433.0, 445.0, 406.0, 416.0, 432.0, 458.0,
        418.0, 392.0, 464.0, 434.0, 435.0, 437.0,
        465.0, 442.0, 456.0, 448.0, 433.0, 399.0]
    
    model = sm.tsa.ExponentialSmoothing(data, missing='drop', trend='mul', seasonal_periods=5,
                                  seasonal='add',initialization_method="heuristic")
    res = model.fit(optimized=True, method="basinhopping")
    
    print(res.params['smoothing_level'])
    print(res.params['smoothing_trend'])
    

    which gives me:

    1.4901161193847656e-08
    1.4873988732462211e-08
    

    Notice the e-08 part - the first parameter isn't equal to 1.49, it's equal to 0.0000000149.