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


相关文章
|
3天前
|
Python
探索Python中的装饰器:简化代码,增强功能
【9月更文挑战第3天】在Python的世界里,装饰器是那些静悄悄站在角落、却能大大改变游戏规则的神奇工具。它们就像是给你的函数穿上一件隐形的超级英雄斗篷,让函数拥有了超乎寻常的能力。本文将带领你一探究竟,看看如何通过几行简单的代码,就能让你的函数变得更加智能和强大。
|
3天前
|
Python
Python中的装饰器:简化你的代码
【9月更文挑战第3天】装饰器,这个听起来有些神秘的名词,实际上在Python中扮演着重要的角色。它们就像是你的代码的小助手,帮你自动完成一些重复性的工作,让你的代码更加简洁、易读。本文将通过一个简单的例子,带你走进装饰器的世界,看看它们是如何工作的。
|
3天前
|
测试技术 数据安全/隐私保护 Python
Python中的装饰器:简化你的代码
【9月更文挑战第3天】装饰器在Python中是一个非常强大的工具,它可以让我们在不改变原有函数定义的情况下,对函数进行扩展,增加额外的功能。本文将通过一个简单的例子,介绍如何在Python中使用装饰器,以及如何使用装饰器来简化我们的代码。
11 6
|
2天前
|
缓存 数据挖掘 Python
探索Python中的装饰器:简化代码,提高效率
【9月更文挑战第4天】在Python的世界里,装饰器是那些隐藏在幕后、默默发挥作用的英雄。它们以优雅的姿态简化我们的代码,提升程序的可读性和效率。本文将带你揭开装饰器的神秘面纱,通过实际案例展示其魅力所在,让你的编程之旅更加顺畅。
|
2天前
|
存储 Python
Python编程入门:从零开始的代码之旅
【9月更文挑战第4天】本文将带领初学者步入Python的世界,通过简明的语言和直观的例子,逐步揭示编程的乐趣。我们将一起构建基础的数据结构,探索控制语句的奥秘,并实现简单的函数。无论你是编程新手还是希望巩固基础,这篇文章都是你理想的起点。让我们开始吧,一步步将代码块搭建成思维的宫殿!
14 2
|
3天前
|
存储 设计模式 缓存
Python中的装饰器:简化代码,提高可读性
【9月更文挑战第3天】在Python编程中,装饰器是一种强大的工具,它允许我们修改或增强函数的行为,而无需更改其源代码。通过本文,您将了解装饰器的基本概念、如何创建和使用它们,以及它们如何帮助我们编写更简洁、更可读的代码。我们将以一个简单的示例开始,逐步深入到更复杂的应用场景,展示装饰器的灵活性和强大功能。无论您是初学者还是有经验的开发者,本文都将为您提供新的视角和技巧,让您的Python代码更加优雅和高效。
|
4天前
|
测试技术 Python
探索Python中的装饰器:简化代码,增强功能
【9月更文挑战第2天】本文将带你深入理解Python中强大的工具——装饰器。我们将一步步从基础定义到实际应用,展示如何利用装饰器简化代码结构,增加函数功能,而无需修改原有代码。通过具体例子,你将学会创建自定义装饰器,以及如何在实际项目中有效使用它们。让我们一起开启这段简化与增强的旅程吧!
|
2天前
|
数据采集 机器学习/深度学习 数据挖掘
探索Python编程之美:从基础到进阶
【9月更文挑战第4天】在数字时代的浪潮中,编程已成为一种新兴的“超能力”。Python,作为一门易于上手且功能强大的编程语言,正吸引着越来越多的学习者。本文将带领读者走进Python的世界,从零基础出发,逐步深入,探索这门语言的独特魅力和广泛应用。通过具体代码示例,我们将一起解锁编程的乐趣,并理解如何利用Python解决实际问题。无论你是编程新手还是希望提升技能的开发者,这篇文章都将为你打开一扇通往高效编程的大门。
|
3天前
|
数据采集 机器学习/深度学习 数据挖掘
探索Python编程之美:从基础到实战
【9月更文挑战第3天】本文旨在通过深入浅出的方式,带领读者领略Python编程语言的魅力。我们将从基本语法入手,逐步深入至高级特性,最终通过实战案例将理论知识与实践操作相结合。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的见解和技巧。
|
1天前
|
存储 开发者 Python
探索Python编程之美
【9月更文挑战第5天】在这篇文章中,我们将一起踏上一场Python编程的奇妙之旅。从基础语法到高级特性,我们将一步步揭开Python语言的神秘面纱。你将学习如何编写清晰、高效的代码,掌握函数、类和模块的使用,以及理解面向对象编程的核心概念。此外,我们还将探讨异常处理、文件操作等实用技能。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识和技巧,让你在编程的道路上更加从容自信。
下一篇
DDNS