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

news2024/11/27 10:45:08

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

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

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

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

目录

💥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)表达式为:

其中,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三种门来使用历史信息。其神经单元结构如图所示。

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

📚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()

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

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

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()

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/538103.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vector - CAPL - CANoe DBC消息相关自动化_02

目录 GetMessageID -- 获取报文ID​编辑 代码示例 GetMessageName -- 获取报文名称 代码示例 getNextCANdbFilename -- 获取指定位置数据库文件命名 代码示例 getNextCANdbName -- 获取指定数据库的名称 代码示例 setSignalStartValues -- 设置目标信号初始值 代码示例…

计算机网络知识点大全

文章目录 1 计算机网络概述1.1.1 概念、组成、功能和分类1.1.2 标准化工作及相关组织1.1.3 速率相关的性能指标1.1.4 时延、时延带宽积、往返时间RTT、利用率1.2.1 分层结构、接口、协议、服务1.2.2 OSI参考模型1.2.4 TCP/IP与五层参考模型 第一章知识大纲2.物理层2.1 物理层基…

Docker实用篇

文章目录 Docker实用篇0.学习目标1.初识Docker1.1.什么是Docker1.1.1.应用部署的环境问题1.1.2.Docker解决依赖兼容问题1.1.3.Docker解决操作系统环境差异1.1.4.小结 1.2.Docker和虚拟机的区别1.3.Docker架构1.3.1.镜像和容器1.3.2.DockerHub1.3.3.Docker架构1.3.4.小结 1.4.安…

vue3的push问题

今天在处理动态数据时,使用push方法像数组中添加数据,会导致数组中所有参数都发生变化,解决方法可以搜到很多,这里使用的是如下的方法: 需要注意的是, 在push的时候需要newVal_value才能获取到深拷贝的值

常见的两种通信方式

引言 随着后端服务的发展,业务难度增加;单体的后端服务逐渐满足不了快速迭代,敏捷开发的节奏,在这样的背景下,分布式系统架构思想逐渐发展,并流行起来;在微服务思想下,将原有复杂的…

【c语言】文件的基本操作

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c语言系列专栏&#xff1a;c语言之路重点知识整合 &#x…

说说谷歌Chrome浏览器无痕浏览器窗口

当您启用无痕浏览后&#xff0c;设备的其他用户将不会看到您的历史记录。 Chrome 不会保存您的浏览记录或您在表单中填写的信息。当您浏览时&#xff0c;Chrome 会记住相应的 Cookie 和网站数据&#xff0c;但当您退出无痕模式时&#xff0c;Chrome 会删除这些数据。您可在打开…

qkeras量化模型-直接搭建模型的量化感知训练

量化框架qkeras: qkeras是谷歌的感知训练量化框架&#xff0c;具有一些功能&#xff1a; 1、支持导入keras模型到qkeras模型&#xff1b; 2、支持剪枝和量化&#xff0c;使用tensorflow lite一起配合&#xff0c;简直不要太好用&#xff1b; 3、支持指定量化函数&#xff0…

如何将百度等其他网页设置为谷歌浏览器的首页

原因&#xff1a; 谷歌浏览器默认是https://chrome.google.com/以该网址访问的 如果您想将百度网页设置为谷歌浏览器的首页&#xff0c;可以按照以下步骤进行操作&#xff1a; [ 1 ] 打开您的谷歌浏览器&#xff0c;点击右上角的“三个点”按钮&#xff0c;选择“设置”选项。[…

基于SpringBoot的财务管理系统的设计与实现

背景 财务管理系统能够通过互联网得到广泛的、全面的宣传&#xff0c;让尽可能多的员工了解和熟知财务管理系统的便捷高效&#xff0c;为管理者和员工提供了服务&#xff0c;节省人力、物力和时间&#xff0c;提高工作效率。 系统设计 为了更好的去理清本系统整体思路&#…

深度学习用于医学预后-第二课第四周1-4节-使用线性和基于树的模型构建风险评估模型

今天起进入到第四周课程的学习&#xff0c;使用线性和基于树的模型构建风险评估模型 风险分数 本周&#xff0c;你将学习建立和评估生存预测模型的策略&#xff0c;这些模型将使你能够比较个体患者的风险。您将学习两个这样的模型:Cox比例风险和生存树。最后&#xff0c;您将…

【学习心得】VMware的下载安装与创建Ubuntu虚拟机

Python在Linux系统中的开发环境搭建① 1、VMware的下载安装 1.1 去官方网站下载软件&#xff1a;https://www.vmware.com/ 1.2 在工具中找到workstation pro 1.3 点击试用版本 1.4 点击下载 1.5 双击安装 1.6 下一步 1.7 接受许可 1.8 选择足够空间的磁盘进行安装、勾选增强…

chatgpt赋能Python-pycharm中如何设置滚动条

PyCharm中如何设置滚动条 介绍 PyCharm是一款由JetBrains开发的Python集成开发环境&#xff0c;提供了丰富的功能和工具&#xff0c;让Python开发更加高效和方便。其中一个重要的功能就是滚动条&#xff0c;它可以帮助我们在长篇代码中快速找到需要的部分&#xff0c;并浏览整…

Chrome浏览器更新失败的问题(chrome无法更新至最新版本怎么办)

报错1 如果在计算机上更新 Chrome 时遇到问题&#xff0c;您可能会看到以下错误消息&#xff1a; 更新失败&#xff1a;管理员已停用更新更新失败&#xff08;错误&#xff1a;3 或 11&#xff09;&#xff1a;检查更新时出错&#xff0c;无法访问更新服务器更新失败&#xf…

网络安全学习路线

01 什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面…

chatgpt赋能Python-pycharm关联py文件

PyCharm关联Python文件的使用指南 PyCharm作为一款强大的Python开发工具&#xff0c;其集成的许多功能可以大大提高开发效率。其中之一就是PyCharm可以自动关联Python文件&#xff0c;让用户更加方便的进行Python程序的编写。本文将详细介绍PyCharm关联Python文件的使用方法及…

chatgpt赋能Python-pycharm快捷键

PyCharm快捷键大全&#xff1a;提高Python编程效率的秘密武器 在Python开发的过程中&#xff0c;PyCharm是被广泛使用的IDE之一。它可以帮助我们提高效率&#xff0c;省去不少重复性的工作&#xff0c;同时还具有强大的代码自动完成和调试功能。而在PyCharm中&#xff0c;有许…

软考-软件设计师

目录 一、计算机系统 1.1 CPU的功能有&#xff1a; 1.2 运算器的组成 1.3 控制器——不仅要保证程序的正确执行、还要能够处理异常事件 1.3.1 指令控制逻辑 1.4 计算机基本单位 1.5 进制的变换 1.5.1 进制加减法 1.6 原码、反码、补码、移码 1.7 浮点数 1.8 寻址 1…

chatgpt赋能Python-pycharm同一个程序开两个

PyCharm同一个程序开两个&#xff1a;提升编程效率的好帮手 作为一名有10年Python编程经验的工程师&#xff0c;我经常会使用PyCharm作为我的主要编程工具。而在日常的编程工作中&#xff0c;有时会遇到这样一个情况&#xff1a;需要在同一个程序中同时进行两个不同的操作。这…