首页 > 其他分享 >R语言使用ARIMAX预测失业率经济时间序列数据|附代码数据

R语言使用ARIMAX预测失业率经济时间序列数据|附代码数据

时间:2023-04-18 18:00:33浏览次数:42  
标签:预测 ARIMAX 模型 ARIMA 序列 数据 回归

全文链接:http://tecdat.cn/?p=22521

最近我们被客户要求撰写关于ARIMAX的研究报告,包括一些图形和统计输出。

在大数据的趋势下,我们经常需要做预测性分析来帮助我们做决定。其中一个重要的事情是根据我们过去和现在的数据来预测未来。这种方法我们通常被称为预测

许多情况下都需要预测:决定是否在未来五年内再建一座发电站需要对未来的需求进行预测;安排下周呼叫中心的工作人员需要对呼叫量进行预测;储备库存需要对库存需求进行预测。一个事件的可预测性取决于几个因素,包括。

  • 我们对造成这种情况的因素了解得如何。
  • 有多少数据可用。
  • 预测是否能影响我们试图预测的事物。

ARIMA

差分整合自回归移动平均模型(ARIMA)(p,d,q)是自回归(AR)、移动平均(MA)和自回归移动平均(ARMA)模型的扩展版本。ARIMA模型是应用于时间序列问题的模型。ARIMA将三种类型的建模过程结合到一个建模框架中。

  • I:差分是用d表示的。它告诉我们在连续的观察样本中,被差分的序列对于原始序列的变化数量。
  • AR:自回归用p表示,它告诉我们为适应平稳序列的AR过程所需的滞后期数。ACF和PACF帮助我们确定AR过程的最佳参数集。
  • MA:移动平均阶数用q表示。它告诉我们要回归的序列中的误差项的数量,以便将差分的AR过程残差减少为白噪声。

关于ARIMAX

ARIMAX或回归ARIMA是ARIMA模型的一个扩展。在预测中,这种方法也涉及自变量。ARIMAX模型表示输出时间序列由以下部分组成:自回归(AR)部分,移动平均(MA)部分,差分整合(I)部分,以及属于外生输入(X)的部分。外生部分(X)反映了将外生输入的现值

R语言使用ARIMAX预测失业率经济时间序列数据|附代码数据_拟合

和过去值

R语言使用ARIMAX预测失业率经济时间序列数据|附代码数据_数据_02

包括到ARIMAX模型中。

多元回归模型公式:

R语言使用ARIMAX预测失业率经济时间序列数据|附代码数据_拟合_03

其中Y是xi预测变量的因变量,ε通常被认为是一个不相关的误差项(即是白噪声)。我们考虑了诸如Durbin-Watson检验等检验方法来评估ε是否有显著的相关性。我们将在方程中用nt代替ε。误差序列

R语言使用ARIMAX预测失业率经济时间序列数据|附代码数据_时间序列_04

被假定为遵循ARIMA模型。例如,如果 nt 遵循一个 ARIMA(1,1,1)模型,我们可以写成

R语言使用ARIMAX预测失业率经济时间序列数据|附代码数据_时间序列_05

其中εt是一个白噪声序列。ARIMAX模型有两个误差项,一个是回归模型的误差,我们用jt表示,另一个是ARIMA模型的误差,我们用εt表示。只有ARIMA模型的误差被认为是白噪声。

实例探究

我们将使用经济序列数据。数据是一个五个季度的经济序列,包含以下数字变量:季度失业率、国民生产总值、消费、政府投资和私人投资。有161个观测点。

R语言使用ARIMAX预测失业率经济时间序列数据|附代码数据_时间序列_06

季节性成分已经从数据中去除。集中在失业率(Ut)、国民生产总值(Gt)和消费(Ct)上,首先对每个序列进行记录,然后去掉线性趋势,对数据拟合一个向量ARMA模型。也就是说,对xt=(x1t,x2t,x3t)t拟合一个向量ARMA模型,例如,x1t=log(Ut)-β0^-β1^t,其中β0^和β1^是log(Ut)对时间t的回归的最小二乘估计。对残差运行一套完整的诊断方法。

数据探索

grid.arrange(p1,p2,p3,ncol=2)

R语言使用ARIMAX预测失业率经济时间序列数据|附代码数据_拟合_07

从图中可以看出,国民生产总值和消费可以作为回归使用。我们可以用时间、国民生产总值和消费来预测失业率。


点击标题查阅往期内容

R语言使用ARIMAX预测失业率经济时间序列数据|附代码数据_时间序列_08

R语言ARIMA集成模型预测时间序列分析

R语言使用ARIMAX预测失业率经济时间序列数据|附代码数据_拟合_09

左右滑动查看更多

R语言使用ARIMAX预测失业率经济时间序列数据|附代码数据_数据_10

01

R语言使用ARIMAX预测失业率经济时间序列数据|附代码数据_时间序列_11

02

R语言使用ARIMAX预测失业率经济时间序列数据|附代码数据_拟合_12

03

R语言使用ARIMAX预测失业率经济时间序列数据|附代码数据_数据_13

04

R语言使用ARIMAX预测失业率经济时间序列数据|附代码数据_拟合_14

ARIMAX模型拟合

summary(varma)

R语言使用ARIMAX预测失业率经济时间序列数据|附代码数据_数据_15

plot(df,aes(t,res))+line(col=colpla[2]) 
acf_pacf(res_= acf(x, plot= F)
                        , label= "ACF")
plot(df, aes(x=res)) + 
  histogram(aes(y=..density..)

R语言使用ARIMAX预测失业率经济时间序列数据|附代码数据_时间序列_16

我们的残差在大多数情况下是正态分布的,ACF图中没有明显的尖峰。Ljung-Box检验在5%的水平上有0.05297的p值,所以数据是独立分布的,在任何滞后期都没有明显的自相关。这是一个理想的结果。

预测

我们随机生成log(g)和log(c)的向量,作为我们预测模型的输入值。两个向量的长度都是8,所以我们的目标是预测未来8个季度的log(u)值。请注意,对于多个回归因子,我们必须将这些向量合并成一个矩阵,以便我们进行预测工作。

forecast(m,x=logfc+logc )
plot(yfor)

R语言使用ARIMAX预测失业率经济时间序列数据|附代码数据_数据_17

ARIMA模型

通过使用ARIMA,我们只根据连续的时间数据来预测未来。它忽略了可能影响消费变化的其他因素。

ARIMAX优点缺点

要使用ARIMAX模型,有几个可能的优点和缺点。

优点

使用ARIMAX的好处是我们可以将回归和时间序列部分结合在一个模型中,命名为ARIMAX。与回归模型或ARIMA模型相比,这个模型可以优化我们的误差。

缺点

一个缺点是,协变量系数很难解释。斜率的值不是xt增加1时对Yt的影响(就像回归中那样)。方程右侧存在因变量的滞后值,这意味着斜率β只能以因变量以前的值为条件进行解释,这很不直观。


R语言使用ARIMAX预测失业率经济时间序列数据|附代码数据_时间序列_18


本文选自《R语言使用ARIMAX预测失业率经济时间序列数据》。

R语言使用ARIMAX预测失业率经济时间序列数据|附代码数据_拟合_19


标签:预测,ARIMAX,模型,ARIMA,序列,数据,回归
From: https://blog.51cto.com/u_14293657/6203882

相关文章

  • 4月22日丨【云数据库技术沙龙】技术进化,让数据更智能
    4月22日,云数据库技术沙龙“MySQLxClickHouse”专场“MySQLxClickHouse”技术沙龙,本次沙龙以“技术进化,让数据更智能”为主题,汇聚字节跳动、阿里云、玖章算术、华为云、腾讯云、百度等众多数据库厂商的技术大咖,围绕MySQLxClickHouse的实践经验,与广大技术爱好者交流分享。2......
  • 开心档之MySQL 序列使用
     MySQL序列使用MySQL序列是一组整数:1,2,3,...,由于一张数据表只能有一个字段自增主键,如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现。本章我们将介绍如何使用MySQL的序列。使用AUTO_INCREMENTMySQL中最简单使用序列的方法就是使用MySQLAUTO_......
  • ip数据报
    1、介绍ip数据报,也称为ip包,ip分组。IP协议屏蔽了下层各种物理子网的差异,能够向上层提供统一格式的IP数据报。lP数据报采用数据报分组传输的方式,提供的服务是无连接方式。tcp和udp的网络层都是基于ip数据报。2、数据报格式前面部分为固定的20字节,后面可变部分,长度可变(1)版本,占......
  • 打印pdf 前端请求数据并打印pdf文件
    1、参考vue接收后端传来的pdf文件流,前端调用预览PDF2、原理3、代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>pdf</title></head><div><inputstyle="display:none&q......
  • pandas读取Excel核心源码剖析,面向过程仿openpyxl源码实现Excel数据加载
    今天我们将研究pandas如何使用openpyxl引擎读取xlsx格式的Excel的数据,并考虑以面向过程的形式简单的自己实现一下。截止目前本人所使用的pandas和openpyxl版本为:pandas:1.5.2openpyxl:3.0.10今天所有的测试全部基于以下文件:pandas的read_excel核心代码这里我使用pycharm工具对以下代......
  • 小白用chatgpt编写python 爬虫程序代码 抓取网页数据(js动态生成网页元素)
    jS动态生成,由于呈现在网页上的内容是由JS生成而来,我们能够在浏览器上看得到,但是在HTML源码中却发现不了一、注意:代码加入了常规的防爬技术    如果不加,如果网站有防爬技术,比如频繁访问,后面你会发现什么数据都取不到1.1 模拟请求头: 这里入进入一步加强,随机,主要是User-Agen......
  • 【愚公系列】2023年04月 .NET CORE工具案例-DeveloperSharp的使用(数据库)
    (文章目录)前言DeveloperSharp是一个研发中大型项目必备的系统平台。也是一个低代码平台。它主要包括了如下一些功能:基于Sql语句、存储过程、事务、分页的数据库操作。并几乎支持市面上所有种类的数据库。图片操作。裁剪、缩放、加水印。http请求调用(Post与Get)高效分页We......
  • python如何对.csv文件里面的信息进行数据可视化
    相关步骤1、首先打开.csv文件2、然后获取任意指定列的所有数据3、绘制出折线图4、然后由于国家数量过多,就成了这副样子但是数据是没有错误的尝试更改后,其实也是没有啥效果;然后就把他放在世界地图了:......
  • NBU备份系统中oracle数据库自动恢复脚本
    #!/bin/bash#oracle数据库恢复源客户端主机名exportclient=dmzdb71cd/usr/openv/netbackup/bin/CONTROL=`./bplist-C${client}-t4-R/|awk-F:'NR==1{print$(NF)}'`;exportCONTROL;#恢复库Oracle环境变量exportORACLE_SID=moniexportORACLE_HOME=/u01/......
  • Pandas 读写sqlite数据库
    SQLite3工具实现了简单、轻量级的DBMSSQL,因此可以内置于用python语言实现的任何应用。若想使用数据库的所有功能而又不想安装真正的数据库,这个工具就是最佳选择。若想在使用真正的数据库之前练习数据库操作,或在单一程序中使用数据库存储数据而无需考虑接口,SQLite3都是不错的选择......