Search code examples
pythonpython-3.xstatsmodelsforecasting

ZeroDivisionError in using statsmodels Holt Simple Forecasting with Trend


I am trying to forecast some data with Holt’s linear method.
- created some data
- dividing it into train and test
- training model
- forecasting
- plotting

Works well unless I want to run program with 7-element training set. Works if I divide data in every other way.

Using: windows10, Anaconda, Spyder, python3.7

from statsmodels.tsa.holtwinters import Holt
import matplotlib.pyplot as plt
import pandas as pd 

data= [50, 48, 47, 45, 43, 40, 38, 35, 33, 32, 30, 28, 27, 26, 25 ]
df= pd.DataFrame(data)

#          working       #      throwing error   
#    for 2<a<7 & 7<a<14  #        for a=7  ONLY
############################################################
df_train= df[:a]         #     df_train= df[:a]  
df_test=  df[a:]         #     df_test=  df[a:]   
model = Holt(df_train).fit(smoothing_level=1, smoothing_slope=1)  # this is throwing error
preted = model.forecast(steps= len(df_test))

plt.plot(df,'-o', preted, '--or')`

File "C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\tsa\holtwinters.py", line 889, in fit optimized=optimized)
File "C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\tsa\holtwinters.py", line 594, in fit use_boxcox=use_boxcox, lamda=lamda, remove_bias=remove_bias)
File "C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\tsa\holtwinters.py", line 735, in _predict aicc = aic + (2 * (k + 2) * (k + 3)) / (self.nobs - k - 3)

ZeroDivisionError: division by zero


Solution

  • This is problem with statsmodels version 0.9.0, There is no problem in newest statsmodels version 0.10.1. Additionally conda is installing version 0.9.0 by default. To solve problem open Anaconda Prompt with Admin privileges and type:

    conda remove statsmodels
    conda install statsmodels=0.10.1
    

    (it can delete some other package but you can install them later)