【问题标题】:Cannot plot predicted time series values using matplotlib无法使用 matplotlib 绘制预测的时间序列值
【发布时间】:2018-09-10 18:04:42
【问题描述】:

我正在尝试绘制我的实际时间序列值和预测值,但它给了我这个错误:

ValueError:查看限制最小值 -36816.95989583333 小于 1 并且是无效的 Matplotlib 日期值。如果您将非日期时间值传递给具有日期时间单位的轴,这通常会发生

我正在使用 statsmodels 将 arima 模型拟合到数据中。

这是我的数据样本:

datetime             value
2017-01-01 00:00:00  10.18
2017-01-01 00:15:00  10.2
2017-01-01 00:30:00  10.32
2017-01-01 00:45:00  10.16
2017-01-01 01:00:00  9.93
2017-01-01 01:15:00  9.77
2017-01-01 01:30:00  9.47
2017-01-01 01:45:00  9.08

这是我的代码:

mod = sm.tsa.statespace.SARIMAX(
    subset,
    order=(1, 1, 1),
    seasonal_order=(1, 1, 1, 12),
    enforce_stationarity=False,
    enforce_invertibility=False
)

results = mod.fit()
pred_uc = results.get_forecast(steps=500)
pred_ci = pred_uc.conf_int(alpha = 0.05)

# Plot
fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(1, 1, 1)
ax.plot(subset,color = "blue")
ax.plot(pred_uc.predicted_mean, color="black", alpha=0.5, label='SARIMAX')
plt.show()

知道如何解决这个问题吗?

【问题讨论】:

  • 请提供MCVE
  • @VivekKalyanarangan 我删除了一些不必要的代码行......现在刚刚编辑。
  • 对不起的意思是subset = subset.set_index("datetime")@Georgy
  • @Georgy 现在错误已经消失了,我不记得是怎么回事了,但是现在我遇到了另一个问题,即 ARIMA 模型与数据的拟合效果不佳。
  • 那么我建议创建另一个帖子。而这个应该作为“无法再重现的问题”来关闭

标签: python datetime matplotlib statsmodels


【解决方案1】:

这应该是你如何提供数据的问题。

datetime 值必须是数据 subset 变量中 values 的索引,因此,以下工作。

在您提供的代码之前,我已按如下方式导入数据:

import matplotlib.pyplot as plt

import numpy as np

import pandas as pd

import statsmodels.api as sm

subset = pd.Series(

[

    10.18, 10.2 , 10.32,
    10.16, 9.93, 9.77,
    9.47, 9.08

]

, index=pd.date_range(

    start='2017-01-01T00:00:00.000',

    end='2017-01-01T01:45:00.000',

    freq='15T'

)  )

我相信,我得到了你想要的情节(它被删掉了):

.

我在 Python 3 中使用了这些版本的库:

matplotlib.版本 '3.1.2'

numpy.版本 '1.17.4'

熊猫。版本 '0.25.3'

statsmodels.版本 '0.12.0'

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多