如何预测未来?Python中的时间序列分析模型ARIMA

时间序列分析:Python中的ARIMA模型,ARIMA模型是一种常用的时间序列预测工具,可以使用statsmodels库在Python中实现。

时间序列分析广泛用于预测和预报时间序列中的未来数据点。ARIMA模型被广泛用于时间序列预测,并被认为是最流行的方法之一。在本教程中,我们将学习如何在Python中搭建和评估用于时间序列预测的ARIMA模型。

什么是ARIMA模型?

ARIMA模型是一种用于分析和预测时间序列数据的统计模型。ARIMA方法明确适用于时间序列中的常见结构,为进行精确的时间序列预测提供了简单而强大的方法。

ARIMA是AutoRegressive Integrated Moving Average的缩写。它结合了三个关键方面:

  • **自回归(AR):**使用当前观测值与滞后观测值之间的相关性建立的模型。滞后观测值的数量称为滞后阶数或p。

  • **积分(I):**通过对原始观测值进行差分来使时间序列平稳。差分操作的次数称为d。

  • **移动平均(MA):**模型考虑了当前观测值与应用于过去观测值的移动平均模型的残差错误之间的关系。移动平均窗口的大小为阶数或q。

ARIMA模型的表示为ARIMA(p,d,q),其中p、d和q用整数值替代以指定所使用的确切模型。

采用ARIMA模型时的关键假设:
  • 时间序列是由基础的ARIMA过程生成的。

  • 参数p、d和q必须根据原始观测值进行适当的指定。

  • 在拟合ARIMA模型之前,时间序列数据必须通过差分使其平稳。

  • 如果模型拟合良好,残差应该是不相关且服从正态分布的。

总而言之,ARIMA模型为建模时间序列数据提供了结构化和可配置的方法,用于预测等目的。接下来,本文将介绍如何在Python中拟合ARIMA模型。

Python代码示例

在本教程中,我们将使用Kaggle上提供的Netflix股票数据来使用ARIMA模型预测Netflix股票价格。

**【Netflix股票数据】:**https://www.kaggle.com/datasets/kalilurrahman/netflix-stock-data-live-and-latest

数据加载

本示例将加载带有“日期”列作为索引的股票价格数据集。

import pandas as pd         net_df = pd.read_csv("Netflix_stock_history.csv", index_col="Date", parse_dates=True)   net_df.head(3)   

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-66udRjHj-1692328748777)(https://mmbiz.qpic.cn/mmbiz_png/LyCRpnJK7eo2BUw75IQLOgiayricqh3iaZibJRPCa2ZQBoXHVUzfB2r7iaFibLRbTTw9GSb2rH0zWicV4XNGawNq37kZA/640?wx_fmt=png)]

数据可视化

可以使用pandas的plot函数来可视化股票价格和成交量随时间的变化。很明显,股票价格呈指数增长。

net_df[["Close","Volume"]].plot(subplots=True, layout=(2,1));   

滚动预测ARIMA模型

本示例的数据集已经被分成训练集和测试集,并且开始训练ARIMA模型。然后进行了第一次预测。

使用通用的ARIMA模型得到了一个糟糕的结果,生成了一条平直的线。因此,本示例决定尝试滚动预测方法。

注意:代码示例是BOGDAN IVANYUK的notebook的修改版本。

**【notebook】:**https://www.kaggle.com/code/bogdanbaraban/ar-arima-lstm#ARIMA-model

from statsmodels.tsa.arima.model import ARIMA   from sklearn.metrics import mean_squared_error, mean_absolute_error   import math         train_data, test_data = net_df[0:int(len(net_df)*0.9)], net_df[int(len(net_df)*0.9):]         train_arima = train_data['Open']   test_arima = test_data['Open']         history = [x for x in train_arima]   y = test_arima   # 进行第一次预测   predictions = list()   model = ARIMA(history, order=(1,1,0))   model_fit = model.fit()   yhat = model_fit.forecast()[0]   predictions.append(yhat)   history.append(y[0])   

在处理时间序列数据时,由于依赖于先前的观察结果,通常需要进行滚动预测。一种方法是在收到每个新观察结果后重新创建模型。

为了跟踪所有观察结果,可以手动维护一个名为history的列表,该列表最初包含训练数据,并在每次迭代时将新的观察结果追加到其中。这种方法可以帮助我们获得准确的预测模型。

# 滚动预测   for i in range(1, len(y)):       # 预测       model = ARIMA(history, order=(1,1,0))       model_fit = model.fit()       yhat = model_fit.forecast()[0]       # 反转转换预测值       predictions.append(yhat)       # 观察结果       obs = y[i]       history.append(obs)   

模型评估

本示例的滚动预测ARIMA模型在简单实现的基础上显示出了100%的改进,产生了令人印象深刻的结果。

# 报告性能   mse = mean_squared_error(y, predictions)   print('MSE: '+str(mse))   mae = mean_absolute_error(y, predictions)   print('MAE: '+str(mae))   rmse = math.sqrt(mean_squared_error(y, predictions))   print('RMSE: '+str(rmse))   

MSE: 116.89611817706545   MAE: 7.690948135967959   RMSE: 10.811850821069696   

接下来将实际结果与预测结果进行可视化和比较。很明显,本示例的模型进行了高度准确的预测。

import matplotlib.pyplot as plt   plt.figure(figsize=(16,8))   plt.plot(net_df.index[-600:], net_df['Open'].tail(600), color='green', label = 'Train Stock Price')   plt.plot(test_data.index, y, color = 'red', label = 'Real Stock Price')   plt.plot(test_data.index, predictions, color = 'blue', label = 'Predicted Stock Price')   plt.title('Netflix Stock Price Prediction')   plt.xlabel('Time')   plt.ylabel('Netflix Stock Price')   plt.legend()   plt.grid(True)   plt.savefig('arima_model.pdf')   plt.show()   

结论

在这个简短的教程中,我们提供了ARIMA模型的概述以及如何在Python中实现时间序列预测。ARIMA方法提供了一种灵活而结构化的方式进行时间序列数据建模,它依赖于先前的观察结果和过去的预测误差。

---------------------------END---------------------------

题外话

“不是只有程序员才要学编程?!”

认真查了一下招聘网站,发现它其实早已变成一项全民的基本技能了。

连国企都纷纷要求大家学Python!
在这里插入图片描述

世界飞速发展,互联网、大数据冲击着一切,各行各业对数据分析能力的要求越来越高,这便是工资差距的原因,学习编程顺应了时代的潮流。

在这个大数据时代,从来没有哪一种语言可以像Python一样,在自动化办公、爬虫、数据分析等领域都有众多应用。

更没有哪一种语言,语法如此简洁易读,消除了普通人对于“编程”这一行为的恐惧,从小学生到老奶奶都可以学会。

《2020年职场学习趋势报告》显示,在2020年最受欢迎的技能排行榜,Python排在第一。
在这里插入图片描述

它的角色类似于现在Office,成了进入职场的第一项必备技能。

如果你也想增强自己的竞争力,分一笔时代的红利,我的建议是,少加点班,把时间腾出来,去学一学Python。

因为,被誉为“未来十年的职场红利”的Python,赚钱、省钱、找工作、升职加薪简直无所不能!

目前,Python人才需求增速高达**174%,人才缺口高达50万,**部分领域如人工智能、大数据开发, 年薪30万都招不到人!在这里插入图片描述

如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

Python兼职渠道推荐

学的同时助你创收,每天花1-2小时兼职,轻松搞定生活费.
在这里插入图片描述

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓

  • 27
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值