第100+7步 ChatGPT文献复现:ARIMA-GRNN预测出血热

基于WIN10的64位系统演示

一、写在前面

这一次,我们来解读ARIMA-GRNN组合模型文章,也是老文章了:

《PLoS One》杂志的2015年一篇题目为《Comparison of Two Hybrid Models for Forecasting the Incidence of Hemorrhagic Fever with Renal Syndrome in Jiangsu Province, China》文章的公开数据做案例。

这文章做的是用:使用两种ARIMA组合模型预测江苏省出血热发病率。

文章是用单纯的ARIMA模型作为对照,对比了两种组合模型:ARIMA-GRNN模型和ARIMA-NARNN模型。本次,我们来重现一下ARIMA-GRNN模型。

二、闲聊和复现:

1单纯ARIMA模型构建

第一段很简单地把构建最优ARIMA模型的整个流程说了下来:

还是老套路:

① 2004-2011年的数据用于建模,来个折线图看看趋势:

很明显,有季节性,所以文章做了1次季节性拆分和1次一般拆分(这个一般拆分也不是太必要,从图来看没有明显上升或者下降趋势,可能是不做通不过ADF检验吧),图1可以这么做:

② 至于ADF检验,那就得转到Eviews了:

通过ADF检验,数据平稳,文章用R做的吧,具体数值不太一样。

③ 开始找最优的ARIMA模型:

凑出了表1和表2,最终选择模型就是ARIMA (0,1,1)×(0,1,1)12。

④ 使用最优模型预测2012年的发病率:

得手动输入下要预测的月份,然后软件才能进行预测:

算一下单纯ARIMA的拟合误差分别是:MAE=0.0093,MAPE=0.4790;预测误差分别是:MAE=0.0091,MAPE=0.5636。

(2)ARIMA-GRNN组合模型

首先,得看看组合的策略,见文章描述(翻译):

GRNN模型是基于非线性回归理论的平滑函数的通用逼近器。GRNN模型由Speckt设计,有四层:输入层、模式层、求和层和输出层。GRNN的网络架构之前已经提及。在建立ARIMA模型之后,我们可以获得HFRS的估计月发病率。由于ARIMA模型已用于分析实际数据的线性部分,残差应包含非线性关系。为了在GRNN模型中包含更多有效和有用的信息,特别是当存在强烈的季节性趋势时,使用时间值作为GRNN的一个输入是必要的。在这项研究中,ARIMA的估计月发病率值和相应的时间值被用作GRNN模型的两个输入,而实际月发病率值被用作GRNN模型的输出。然后我们可以通过这种混合模型捕获非线性成分。GRNN的性能主要取决于光滑因子。选择最优光滑因子需要一定量的试验。光滑因子的选择采用了Specht提出的方法。我们在建模数据集中随机选取两个样本作为测试样本;其他样本被用来拟合GRNN模型

不知道大家看懂了没:

简单来说就是,首先使用2004-01到2011-12的数据构建并找出最优模型ARIMA (0,1,1)×(0,1,1)12,并使用模型进行拟合(2004-01至2011-12)和预测(2012-01至2012-12);然后从2004-01到2011-12这些时间点中,随机抽取2个时间点的模型拟合值,比如说是2004-05和2009-03;把2004-05和2009-03的模型拟合值作为输入,丢进GRNN,同时告诉GRNN,2004-05和2009-03的拟合值对应的真实值是什么;通过这种方式训练GRNN模型,本质上是寻找GRNN的唯一参数,叫做光滑因子;找到了这个最优的GRNN模型(或者说确定了最优的光滑因子),再把之前ARIMA拟合和预测的所有数值,放进最优GRNN模型,输出的就是ARIMA-GRNN组合模型的结果。

至于为什么是随机抽取2个数值,咱也不懂,文献说的。待会操作过程中会发现其中的弊端。

软件使用的是Matlab,这里我就用我自己DIY的小程序(传送门)

① SPSS拿到拟合值与预测值:

② 打开Matlab-GRNN小程序,输入数据(确保拟合值和真实值一一对应,长度要一致):

看结果:

最优光滑因子是0.001,给出了一个图(就是文章的图三),似乎形状不一样呢,文章中是U型,那我们继续随机(随机放几个图得了):

我随机了几次,然后最优光滑因子嘛,有这几个:0.126、0.061、0.088等。进行最后的输出,看看组合模型的效果:

我先把ARIMA的指标列出来,方便对比:

拟合误差:MAE=0.0093,MAPE=0.4790;

ARIMA-GRNN不同光滑因子:

0.126:拟合误差:MAE=0.0084,MAPE=0.4674

0.061:拟合误差:MAE=0.0077,MAPE=0.4167

0.088:拟合误差:MAE=0.0079,MAPE=0.4334

0.049:拟合误差:MAE=0.0077,MAPE=0.4089

总体来看,性能是都是下降的。但是是在随机不出文章中的那两个数值,就不强求了,它的最优光滑因子是0.0265。然后MAE和MAPE能刷到0.0063和0.2815,优秀。

所以我这个软件有个BUG,就是不能自定义输入光滑因子,得到Matlab中操作才行,先埋个坑吧(早已把Matlab卸载了)

三、个人感悟

可以看到,ARIMA-GRNN组合模型的构建策略由于存在随机性,因此得到的结果不尽相同,但是总体来看性能是有所改善的,在文中清清楚就行了。

其实有些数据吧,用了组合模型,性能反而变差了,它并不是万能的。

四、数据

链接:https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0135492

有童鞋问咋下载数据:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用HAL库改写江科大的stm32入门例子8-1 DMA数据转运

实验1-实验目的:通过DMA把buffer的数据搬运到buffer2当中。 //declare a buffer to store the data uint32_t buffer[3] {1,2,3};//declare a buffer to store the data uint32_t buffer2[3] {0,0,0}; DMA:是个搬运数据的小助手。 相关设置&#xff1…

DHCP原理

什么是DHCP DHCP (Dynamic Host Configuration Protocol,动态主机配置协议)是由Internet工作任务小组设计开发的,专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议,是一个应用层协议,使用UDP的67和68端口。 DHCP的前身是B…

导航软件iApp源码V3+配置教程

一款支持侧边导航栏的网页导航APP源码,风格简约为主,可以通过远程文档进行远程控制列表,浏览器拥有检测下载的功能。,配置较为简单,适合入门小白学习参考。 导航软件iApp源码V3配置教程 配置教程在mian.iyu的载入事件…

BGP基础

1.BGP概述 (1)AS IANA(Internet Assigned Numbers Authority,因特网地址分配组织):IAB(Internet Architecture Board,因特网体系委员会)的下设组织。IANA授权NIC&#x…

【hana】hana1.0多容器常用命令

基础命令 数据库 连接数据库 hdbsql -u system -p {passwd} -i 02 -d {dbname}查询所有数据库 SELECT DATABASE_NAME, ACTIVE_STATUS FROM M_DATABASES;停止数据库,会修改数据库状态为No ALTER SYSTEM STOP DATABASE testdb; 启动数据库,会修改数据…

基于阿里云向量检索 Milvus 版与 PAI 搭建高效的检索增强生成(RAG)系统

阿里云向量检索 Milvus 版现已无缝集成于阿里云 PAI 平台,一站式赋能用户构建高性能的检索增强生成(RAG)系统。您可以利用 Milvus 作为向量数据的实时存储与检索核心,高效结合 PAI 和 LangChain 技术栈,实现从理论到实…

Gitlab:从其它项目组里导入一个项目

1.首先获取原项目的http地址 http://ip/projectGroup/ProjectX.git其中,ip 为公司gitlab内网地址。 2.进入目的项目组进行创建 首先,需要拥有一个该组拥有者权限的账号,才能进行后续的操作。 2.1.点击创建项目按钮 2.2.选择导入项目 其中…

C语言基础——循环语句

🌺​🙏🙏🙏欢迎大家观看,写的好的话希望三连感谢🙏🙏🙏🌺 文章目录 一、循环语句的介绍 二、不同循环语句的使用 1.while循环 1.1 while循环的使用方式 1.2 while循环的执…

ICode国际青少年编程竞赛- Python-4级训练场-综合训练4

ICode国际青少年编程竞赛- Python-4级训练场-综合训练4 1、 Dev.turnLeft() Dev.step(3) Dev.turnRight() Dev.step(3) Dev.turnLeft() Dev.step(4)2、 for i in range(3):Dev.step(2)Dev.turnRight()while Flyer[i].disappear():wait()Dev.step(2 i)Dev.turnLeft()3、 …

【机器学习】逻辑回归:智能垃圾邮件分类实例

逻辑回归:智能垃圾邮件分类的利器 一、引言二、逻辑回归概述三、垃圾邮件分类实例数据准备特征选择与建模 四、总结与展望 一、引言 随着互联网的迅猛发展,电子邮件已成为人们日常生活和工作中不可或缺的一部分。然而,与此同时,垃…

docker+nginx+Jenkins自动构建

文章目录 前言一、实操记录问下AI:jenkins 配置新增一个mobilegit配置Build TriggersBuild EnvironmentBuild StepsPost-build Actions 上面一顿配置下来,构建 -- FAILURE 总结 前言 在已有docker-Jenkins-nginx 部署方案上,在另外一台测试…

【定制化】在Android平台实现自定义的程序启动页

特别说明:以下仅适用于Android平台。 实现原理 创建安卓端自定义的Activity禁用UnityPlayerActivity的启动Logo改用自定义Activity 示例效果 参考简单步骤或详细步骤都可实现。 自定义的启动动画,效果如下: 简单步骤 三步操作实现启动动画…

亚信安全发布《2024年第一季度网络安全威胁报告》

亚信安全2024年第一季度网络安全威胁报告 一季度威胁概览 《亚信安全2024年第一季度网络安全威胁报告》的发布旨在从一个全面的视角解析当前的网络安全威胁环境。此报告通过详尽梳理和总结2024年第一季度的网络攻击威胁,目的是提供一个准确和直观的终端威胁感知。…

Excel 分组汇总后删除明细

有 Excel 数据如下所示: IDCriteria1Criteria2Criteria3Criteria4101210271239312381236123171826182918239182120182147 需要按 ID 分组汇总其余列,结果如下: IDCriteria1Criteria2Criteria3Criteria410121027123932561826939267 解法及简…

yo!这里是socket网络编程相关介绍

目录 前言 基本概念 源ip&&目的ip 源端口号&&目的端口号 udp&&tcp初识 socket编程 网络字节序 socket常见接口 socket bind listen accept connect 地址转换函数 字符串转in_addr in_addr转字符串 套接字读写函数 recvfrom&&a…

线性集合:ArrayList,LinkedList,Vector/Stack

共同点:都是线性集合 ArrayList ArrayList 底层是基于数组实现的,并且实现了动态扩容(当需要添加新元素时,如果 elementData 数组已满,则会自动扩容,新的容量将是原来的 1.5 倍),来…

STK与matlab交互 Astrogator模块(14)

一、背景介绍 高轨卫星的轨道保持。与任何其它轨道状态一样,地球同步轨道也会受到各种扰动力的影响,这些摄动力会影响GEO卫星在位置方面的稳定性。摄动的主要来源是地球的非地球位势、太阳辐射压力和第三体效应(主要是月球和太阳&#xff09…

特产销售|基于Springboot+vue的藏区特产销售平台(源码+数据库+文档)​

目录 基于Springbootvue的藏区特产销售平台 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道…

JavaScript 防抖与节流——以游戏智慧解锁实战奥秘

🔥 个人主页:空白诗 文章目录 🎮 引言❓ 什么是防抖和节流🏹 防抖(Debounce) - 锁定追击,精确无误📌 基础概念📌 适用场景📌 实战代码:防抖 应用于输入框的实时搜索 &…

【Python-爬虫】

Python-爬虫 ■ 爬虫分类■ 1. 通用网络爬虫:(搜索引擎使用,遵守robots协议)■ robots协议(君子协议) ■ 2. 聚集网络爬虫:自己写的爬虫程序 ■ urllib.request(要导入的模块&#x…