基于ARIMA-LSTM组合模型的预测方法研究(Python代码实现)

简介: 基于ARIMA-LSTM组合模型的预测方法研究(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥


🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。


⛳️座右铭:行百里者,半于九十。


📋📋📋本文目录如下:🎁🎁🎁


目录


💥1 概述


1.1 ARIMA模型


1.2 LSTM神经网络


📚2 运行结果



🎉3 参考文献


🌈4 Python代码实现


💥1 概述

1.1 ARIMA模型

ARIMA模型,即差分整合移动平均自回归模型,又称整合滑动平均自回归模型﹐是经典的时间序列预测方法之一。20世纪70年代,由统计学家Box 和Jenkins提出。ARIMA (p,d,q)模型是ARMA(p,q)模型的扩展,是ARMA(p, q)模型的一般表达形式。但ARMA(p,q)模型对时间序列要求平稳,而在实际生活中的大多变量包含白噪声及其他随机因素,导致ARMA (p,q)模型不再适用。此时需要用到ARIMA(p,d,q)模型将非平稳的时间序列进行一次或多次差分,转化为平稳的时间序列14。

ARIMA(p, d,q)表达式为:


c113778df7974695a652c9ae2f5cf535.png


其中,d为差分阶次。如d= 1时,对原序列进行一阶差分运算,d = 2,时进行二阶差分运算,以此类推。差分次数直到序列平稳为止。

建模过程步骤如下:

(1)数据预处理:将得到时间序列中的异常值和缺失值进行处理,同时对序列进行零均值化处理以及差分平稳化处理。

(2)确定结构:对预处理过的时间序列进行自相关(ACF)15]和偏自相关(PACF)1的分析,通过判断自相关和偏白相关的图像来初步确定所选择的模型类型。依据赤池信息准则(AIC)7和贝叶斯信息准则(BIC)&来确定模型的阶次。

(3)确定模型参数:通过运用计算机软件工具(例如Matlab或 Python)来对模型进行参数估计,确定模型的变量系数。

(4)残差检验:对模型的残差进行判断﹐其是否满足白噪声检验。若不满足﹐则需要返回步骤2对其模型结构重新进行确定。

(5)利用所建立模型对时间序列进行预测。


1.2 LSTM神经网络

长短期记忆网络(LSTM)1是一种时间循环神经网络,它的提出是为了解决一般循环神经网络I网络的长期依赖问题,同时可以避免梯度消失的问题。

长短期记忆神经网络在循环网络2的隐藏层的神经单元中增加了一种用来记忆过去信息的记忆单元结构,增加了input 、 forget 和 output三种门来使用历史信息。其神经单元结构如图所示。


737922e087da40579c3325f5baaee9e2.png

275f337d799747e48cecc07c7a3750ac.png


长短期记忆神经网络解决了循环神经网络存在的梯度消失的问题,而且长短期记忆神经网络通过增加了门控制单元来控制当前信息对历史信息的影响程度,能够对长时间历史信息进行保存和传递21。所以长短期记忆神经网络对于长序列具有良好的拟合效果。


18c5aee3dfa14d61922d0a43e8cb6f83.png

a6eb0de882d94e508ac661b82ba5f07c.png

d7773d3e2c454548acaf5c4d1776fb0d.png


📚2 运行结果


# 显示原数据
plt.figure(figsize=(10, 3))
plt.title('数据AQI')
plt.xlabel('time')
plt.ylabel('AQI')
plt.plot(data_raw, 'blue', label='AQI')
plt.legend()
plt.show()


089168dfde7d45d88905ef233a3135fa.png


# 获取残差
resid = fit.resid
# 画qq图
qqplot(resid, line='q', fit=True)
plt.show()


fa67415881fd4480a177df08fabb068e.png


plt.figure(figsize=(9, 2))
plt.plot(history.history['loss'])
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.show()


d2caae2a8cd64eab8fc79aedcbc861c7.png


plt.figure(figsize=(10, 4),dpi=200)
plt.plot(test_data, label="Actual", color='red',linewidth=4)
plt.plot(range(len(x_train)+timestep+1,len(new_data)),draw_test, color='blue',label='Prediction',linewidth=2.5,linestyle="--")
plt.title('ARIMA-LSTM Prediction', size=15)
plt.ylabel('AQI',size=15)
plt.xlabel('time/day',size=15)
plt.legend()
plt.show()

bdbee3eb08a94d8abeddfd0591cb5113.png



🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。


[1]沈露露,梁嘉乐,周雯.基于ARIMA-LSTM的能量预测算法[J].无线电通信技术,2023,49(01):150-156.


[2]李孟特,于晟华,王森,曹戈,戴雨聪.一种基于ARIMA-LSTM组合模型的电压偏差预测方法[J].电力大数据,2022,25(05):28-35.DOI:10.19317/j.cnki.1008-083x.2022.05.009.


🌈4 Python代码实现


相关文章
|
5月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
262 26
|
5月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
466 1
|
4月前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
305 100
|
4月前
|
开发者 Python
Python列表推导式:一行代码的艺术与力量
Python列表推导式:一行代码的艺术与力量
478 95
|
5月前
|
Python
Python的简洁之道:5个让代码更优雅的技巧
Python的简洁之道:5个让代码更优雅的技巧
296 104
|
5月前
|
开发者 Python
Python神技:用列表推导式让你的代码更优雅
Python神技:用列表推导式让你的代码更优雅
546 99
|
4月前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
197 88
|
5月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
652 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
4月前
|
数据可视化 大数据 关系型数据库
基于python大数据技术的医疗数据分析与研究
在数字化时代,医疗数据呈爆炸式增长,涵盖患者信息、检查指标、生活方式等。大数据技术助力疾病预测、资源优化与智慧医疗发展,结合Python、MySQL与B/S架构,推动医疗系统高效实现。
|
4月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。

热门文章

最新文章

推荐镜像

更多