Python 无法使用matplotlib绘制预测的时间序列值
我试图绘制我的实际时间序列值和预测值,但它给了我以下错误: 值错误:视图限制最小值-36816.95989583333小于1,是无效的Matplotlib日期值。如果将非日期时间值传递给具有日期时间单位的轴,则通常会发生这种情况 我正在使用Python 无法使用matplotlib绘制预测的时间序列值,python,datetime,matplotlib,statsmodels,Python,Datetime,Matplotlib,Statsmodels,我试图绘制我的实际时间序列值和预测值,但它给了我以下错误: 值错误:视图限制最小值-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:
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()
知道如何解决这个问题吗?应该是关于如何提供数据的问题
datetime
值必须是数据subset
变量中值的索引,因此,以下操作有效
在您提供的代码之前,我已按如下方式导入了数据:
我相信,我得到了你想要的情节(被删掉了):
我在Python 3中使用了这些版本的库:
matplotlib.版本
“3.1.2”
numpy.版本
“1.17.4”
熊猫。版本
“0.25.3”
statsmodels.版本
“0.12.0”请提供一个@VivekKalyanarangan,我删除了一些不必要的代码行。。刚刚编辑。对不起,意思是subset=subset。设置索引(“datetime”)
@Georgy@Georgy现在错误已经消失了,我不记得是怎么回事,但现在我有另一个问题,ARIMA模型与数据拟合得不好。然后我建议再创建一个帖子。而这个问题应该以“一个无法重现的问题”来解决
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'
) )