基于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代码实现


相关文章
|
8月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
401 26
|
7月前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
368 100
|
7月前
|
开发者 Python
Python列表推导式:一行代码的艺术与力量
Python列表推导式:一行代码的艺术与力量
550 95
|
8月前
|
Python
Python的简洁之道:5个让代码更优雅的技巧
Python的简洁之道:5个让代码更优雅的技巧
368 104
|
8月前
|
开发者 Python
Python神技:用列表推导式让你的代码更优雅
Python神技:用列表推导式让你的代码更优雅
654 99
|
7月前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
431 88
|
7月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
1320 68
|
8月前
|
设计模式 人工智能 API
AI智能体开发实战:17种核心架构模式详解与Python代码实现
本文系统解析17种智能体架构设计模式,涵盖多智能体协作、思维树、反思优化与工具调用等核心范式,结合LangChain与LangGraph实现代码工作流,并通过真实案例验证效果,助力构建高效AI系统。
930 7
|
8月前
|
存储 大数据 Unix
Python生成器 vs 迭代器:从内存到代码的深度解析
在Python中,处理大数据或无限序列时,迭代器与生成器可避免内存溢出。迭代器通过`__iter__`和`__next__`手动实现,控制灵活;生成器用`yield`自动实现,代码简洁、内存高效。生成器适合大文件读取、惰性计算等场景,是性能优化的关键工具。
413 2
|
7月前
|
机器学习/深度学习 自然语言处理 PyTorch
21_RNN与LSTM:序列建模的经典方法
在自然语言处理领域,处理序列数据是一个核心挑战。传统的机器学习方法难以捕捉序列中的时序依赖关系,而循环神经网络(Recurrent Neural Network,RNN)及其变种长短期记忆网络(Long Short-Term Memory,LSTM)通过其独特的循环结构,为序列建模提供了强大的解决方案。本教程将深入探讨RNN和LSTM的原理、实现方法和最新应用,帮助读者全面掌握这一NLP核心技术。
641 0

推荐镜像

更多