python - statsmodel.SARIMAX .forecast() 方法不执行
问题描述
我正在尝试使用 SARIMAX 模型进行 TS 预测。但是,我遇到了一些我不知道如何处理的错误。我的代码很简单:
import statsmodels.api as sm
fit = sm.tsa.statespace.SARIMAX(train).fit()
sarima = fit.forecast()
火车数据看起来像
y
ds
2015-01-07 1
2015-01-14 64
2015-01-21 16
2015-01-28 50
2015-02-04 7
我得到了错误
/usr/local/lib/python3.6/dist-packages/statsmodels/tsa/base/datetools.py in
_date_from_idx(d1, idx, freq)
84 offset. For now, this needs to be taken care of before you get
here.
85 """
---> 86 return _maybe_convert_period(d1) + int(idx) *
_freq_to_pandas[freq]
87
88
TypeError: unsupported operand type(s) for *: 'int' and 'NoneType'
任何想法我做错了什么?
解决方案
SARIMA是一个相当复杂的移动平均预测模型,具有许多参数和细微差别。您将需要广泛研究此方法的细节,以确保您正确地使用它。为了简单地实现模型以获得结果,以下示例应该会有所帮助:
代码:
import matplotlib.pyplot as plt
import statsmodels.api as sm
import numpy as np
np.random.seed(100)
data = np.sort(np.random.uniform(0, 1, size=30))
steps_to_predict = 5
model = sm.tsa.statespace.SARIMAX(endog=data,order=(2,0,0),enforce_stationarity=False)
sarima = model.fit()
print(sarima.summary())
# plot
fig, ax = plt.subplots(1,1, figsize=(20,10))
ax.set_xlim(0,40)
ax.plot(train, "ro-", linewidth=2, markersize=12)
ax.plot(list(range(30,35)), sarima.forecast(steps_to_predict), "bo-", linewidth=2, markersize=12)
输出:
*** 请注意,观察到的数据是红色的,预测的步数是蓝色的。
推荐阅读
- c# - ServiceStack: Showing both auth and authenticate paths
- r - 在 Centos 中为 Amazon EC2 安排 R Cron
- git - 带有并发更改的 Git pull --mirror
- powershell - Powershell running command after script
- function - Azure Functions v2 引发异常 System.AccessViolationException
- java - Vertx - InfluxDB metrics keeping connection open
- r - Delete a text in a row of a column if it doesn't start with date in R
- windows - Python 中 Google App Engine 的 dev_appserver.py 中出现 EOFError 错误
- c# - 在文本文件中搜索一个单词,然后打印它存在的行
- python - Spyder 2 编辑器中模块的语法亮点