ZeroDivisionError 在使用 statsmodels Holt 简单预测与趋势

ZeroDivisionError in using statsmodels Holt Simple Forecasting with Trend

我正在尝试用 Holt 的线性方法预测一些数据。
- 创建了一些数据
- 将其分为训练和测试
- 训练模型
- 预测
- 密谋

效果很好,除非我想 运行 使用 7 元素训练集进行编程。如果我以其他方式划分数据,则可以工作。

使用: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

这是statsmodels 0.9.0版本的问题,最新的statsmodels 0.10.1版本没有问题。此外,conda 默认安装 0.9.0 版。要解决问题,请使用管理员权限打开 Anaconda Prompt 并键入:

conda remove statsmodels
conda install statsmodels=0.10.1

(它可以删除一些其他包,但您可以稍后安装它们)