python – 使用statsmodels进行预测
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 使用statsmodels进行预测,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2450字,纯文字阅读大概需要4分钟。
内容图文
![python – 使用statsmodels进行预测](/upload/InfoBanner/zyjiaocheng/827/9771a22a6a054e9583529b35436ebdd1.jpg)
我有一个包含5年时间序列的.csv文件,每小时分辨率(商品价格).根据历史数据,我想创建第六年的价格预测.
我在www上阅读了几篇关于这些类型的程序的文章,我基本上将我的代码基于那里发布的代码,因为我对Python(尤其是statsmodels)和统计数据的了解最多.
对于那些感兴趣的人来说,这些是链接:
http://www.seanabu.com/2016/03/22/time-series-seasonal-ARIMA-model-in-python/
http://www.johnwittenauer.net/a-simple-time-series-analysis-of-the-sp-500-index/
首先,这是.csv文件的示例.在这种情况下,数据以月分辨率显示,它不是真实数据,只是随机选择数字来举例说明(在这种情况下,我希望一年足以开发第二年的预测;如果没有,完整的csv文件可用):
Price
2011-01-31 32.21
2011-02-28 28.32
2011-03-31 27.12
2011-04-30 29.56
2011-05-31 31.98
2011-06-30 26.25
2011-07-31 24.75
2011-08-31 25.56
2011-09-30 26.68
2011-10-31 29.12
2011-11-30 33.87
2011-12-31 35.45
我目前的进展如下:
读取输入文件并将日期列设置为日期时间索引后,使用以下脚本开发可用数据的预测
model = sm.tsa.ARIMA(df['Price'].iloc[1:], order=(1, 0, 0))
results = model.fit(disp=-1)
df['Forecast'] = results.fittedvalues
df[['Price', 'Forecast']].plot(figsize=(16, 12))
,它给出以下输出:
现在,正如我所说,我没有统计技能,我几乎不知道如何得到这个输出(基本上,改变第一行内的order属性会改变输出),但’实际’预测看起来非常好,我想再延长一年(2016年).
为此,在数据框中创建了其他行,如下所示:
start = datetime.datetime.strptime("2016-01-01", "%Y-%m-%d")
date_list = pd.date_range('2016-01-01', freq='1D', periods=366)
future = pd.DataFrame(index=date_list, columns= df.columns)
data = pd.concat([df, future])
最后,当我使用statsmodels的.predict函数时:
data['Forecast'] = results.predict(start = 1825, end = 2192, dynamic= True)
data[['Price', 'Forecast']].plot(figsize=(12, 8))
我得到的预测是一条直线(见下文),它看起来并不像预测.此外,如果我将范围(现在是从第1825天到第2192天(2016年))扩展到整个6年的时间跨度,则预测线是整个期间(2011-2016)的直线.
我也尝试使用’statsmodels.tsa.statespace.sarimax.SARIMAX.predict’方法,该方法考虑了季节性变化(在这种情况下有意义),但我得到一些关于’module’没有属性的错误’ SARIMAX”.但这是次要问题,如果需要,将会详细介绍.
某处我失去了控制力,我不知道在哪里.谢谢阅读.干杯!
最佳答案:
听起来你使用的是不支持SARIMAX的旧版statsmodels.您需要安装最新发布的0.8.0版本,请参阅http://statsmodels.sourceforge.net/devel/install.html.
我正在使用Anaconda并通过pip安装.
pip install -U statsmodels
SARIMAX模型的结果类有许多有用的方法,包括预测.
data['Forecast'] = results.forecast(100)
将使用您的模型预测未来的100个步骤.
内容总结
以上是互联网集市为您收集整理的python – 使用statsmodels进行预测全部内容,希望文章能够帮你解决python – 使用statsmodels进行预测所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。