arma模型_Eviews经典案例 | 初学者必看!ARMA模型精讲

【本期分析师介绍希音老师,《数据分析学堂》金牌分析师,对eviews的时间序列、ARMA、VAR、VECM、ARCH、GARCH等操作有深入的研究和实战经验,累计服务客户1000+。今天邀请希音老师给大家分享eviews的详细操作步骤。长文预警!可在文末联系麻瓜学姐要PDF文档,更方便阅读,10G独家干货等你来拿!



AR-MA模型是一类常用的是随机时序模型。由Box和Jenkins创立,亦称B-J方法。它是一种精度较高的时序短期预测,其基本思想是,某些时间序列是依赖于时间t的一组随机变量。构成该时序的单个序列制虽然具有不确定性。但整个序列的变化却有一定的规律性。可以用相应的数学模型定制描述。通过对该数学模型的分析研究。能够本质地认识时间序列的结构与特征,达到最小方差意义下的最优预测。本文章主要使用EVIews对构建ARMA模型,进行简单认识,由于对于所有的平稳时间序列都可以转化成MA形式。由于MA在可逆条件可以转化成AR形式。所以我们对平稳时间序列可以使用ARMA形式构建模型,进行预测。一、 平稳性检验(单位根检验)Eviews有多重检验平稳性的单位根检验,本文采用ADF进行采用检验,采用某国1960-1993年的GNP平减指数的季度数据,共136个观测值,首先对变量进行变换,得到其通货膨胀率,在EVIEWS的命令行中输入:
genr pi=d(log(p))
其中p指的是GNP指数,pi指的是通货膨胀率,genr是generate的缩写,为生成一个新变量,也可以使用series进行生成新变量,log(p)是自然对数函数,进行d(*),是指对变量*进行一阶差分。
生成变量以后,选中变量pi,双击打开,点击右上角的View,然后点击Unit root test那一项,进入页面图如下:

312824d35ef8f0a45f7c05aeb8dd1903.png

其中test type为检验单位根的类型,我们选中ADF检验(默认状态),在include in test equation这一项中为ADF检验的三种形式,lag length为滞后阶数,一般采用系统默认,在test for unit root in是对原数据进行单位根检验(level),还是对一阶差分进行单位根检验(1st difference),还是二阶差分进行单位姑娘检验(2st difference),本文先对原数据进行差分。
关于三种形式,可以使用以下方法,分别对三种形式进行一一检验,只要有一个拒绝存在单位根的原假设,那就说明时间序列是平稳的。点击ok以后,发现三种形式下p值大于0.1,不能拒绝原假设,因此原时间序列不平稳,下图为带有截距项的示例图:

2b033b8356bfe2ee3a4fc25401d29809.png

然后再对一阶差分下。进行单位根检验,检验结果发现,三种形式下的p值为0.0000因此拒绝存在单位根的原假设,所以一阶差分以后的时间序列是平稳的,可以对其进行构建ARMA模型。下图为带有时间趋势项和截距项的结果展示图:

e91c162a258398c534f592ba5f6aa8ee.png

二、 确定ARMA中的最大滞后阶数p和q采用画样本相关系数图和偏自相关系数图来确定,在双击打开pi后,点击view,然后在点击correlogram,进行画相关图的页面:

4d8bd2f45f9ea16c8c831eb53a254537.png

由于我们已经确定原数据是不平稳的额,一阶差分以后数据时平稳的,因此在这里使用第二个选项,对其一阶差分以后的时间序列进行研究,点击ok以后,出现如下相关图:

18de9b02171e40fddd3e7110017d8803.png

左边的为AC图(自相关图),PAC为右边图(偏自相关),确定最大滞后阶数的法则为图中的AC和PAC下方的小长方形的连续多少个超过两条虚线(两虚线被称为随机区间),图中PAC下方可以明显看出连续两个超出随机区间,因此可以采用Pmax为2,而AC下方的连续一个超出随机区间,因此可以采用qma为1。三、 使用信息准则最小化原理确定最佳ARMA模型P的最大值为2,q的最大值为1,因此可以有以下4种组合ARMA(1,0),ARMA(1,1),ARMA(2,0),ARMA(2,1),通过信息准则筛选出最优模型,以下在EVIEWS命令行中输入:Ls d(pi)ar(1)Ls d(pi) ar(1) ma(1)Ls d(pi)ar(1)ar(2)Ls d(pi)ar(1)ar(2)ma(1)以上是四种模型的回归操作,这里对四种回归结果进行展示,根据信息准则(在图中为AIC,SC,HQ等),通过比较哪一个模型的这三个指标最小,就选哪一个模型,如果三个指标有大有小,采用投票原则,那个模型中三个指标最小的个数多就选那个。

00e382cf953152b17d8e326a16e8fc13.png

306eb5b30542e3c5bee7f04de192e1c4.png

0c6591661075626f732e79c50227aa0d.png

354f165a74c8a49cc529660130cf8830.png

有图可以知道ARMA(2,1)模型中AIC,SC,HQ是最小的个数是最多的。因此采用ARMA(2,1)模型。四、 白噪声检验在构建这个模型时,我们假设模型的误差的序列无关的,因此我们有必要在构建模型以后进行误差的序列相关性检验,以此来说明模型构建的良好,如果序列之间不存在序列相关性,我们就称之为白噪声,就是认为该序列已经没有任何可以提取的信息了。对于白噪声的检验,可以采用Q统计量的方法,具体操作如下图:
在回归以后的表中,点击右上角的view,然后选中Residual diagnostics,在选第一个带有Q的,点击以后,选滞后阶数,你可以自定义也可以默认,采用默认方式以后,得到下图:

fb2e781e43d5ddfef79a7622393611b0.png

Q-star为Q统计量的值,prob为Q统计量的相伴概率,由于我们的样本数为136,最大滞后阶数m可以取[136/10]或者[],采用m为13,在表中寻找13行所对应的Q统计量和p值,分别为7.6396,0.664,。这个p值告诉我们在10%的显著性水平之下,我们不能拒绝序列不存在相关性的原假设,因此可以认为最后的检验是序列是不存在相关性的,白噪声检验通过,因此我们的模型时构建比较优良的。五、 短期预测预测分为样本内预测和样本内预测,预测的形式又可以分为静态预测和动态预测,其中样本内预测就是根据某种预测方式对其样本内的一段时间子区间进行预测,然后通过对比预测值和真实值之间的差距,这可以用一些指标(比如RMSE,MAPE)来衡量预测的好与坏,样本外需要先扩展样本区间,在进行样本外预测。静态预测每一期时需要用到上期的真实值,而动态预测用到的是其预测值或者说是拟合值,所以静态预测,一般只能预测样本为1期,而动态预测不受限制。下面对预测进行简单展示:
1.首先调整样本数,双击Range,然后对出现的页面中1993改成1994,这样我们就准备连续预测四期;

2b6c5d1b6489ed8b8b4e775846bb6410.png


2.在回归页面表中,点击forcast,然后出现以下页面;

cf743afc00782215fec0baf742bea28b.png

由于我们是通过对pi的一阶差分呢进行建立ARMA模型的,但是由于我们预测的是pi,即前面所说的通货膨胀率,因此选中pi,然后series names中forecast name为pif,这是系统默认的,如果你想预测某个序列,那么预测出来以后的序列名会在元序列多一个f,当然你也可以自定义。然后是forecast sample,预测样本区间选为1994第一季度到1994年第二季度,我们选中动态预测,dynamic forecast,之后点击ok。
3.然后点击工作区中的pif序列,打开以后,寻找最后四期,结果如下图所示:

7af982423a9299979c70659dca9090e5.png

当然你也可以尝试静态预测,样本内预测,其操作大体类似,本文就不再一一赘述。

往期推荐


SPSS经典案例 | 小白必看!方差分析、T检验、相关分析、因子分析,上财博士手把手教你套模板!

stata经典案例 | 初学者必看!面板数据、广义矩估计、var模型、logit模型回归详细操作步骤

还在为毕业论文数据处理头秃?!喏,秘籍给你,红包也给你(文末有惊喜)

9af49f3f37bdfccf3783698d87e3f1e5.png

扫码关注小数,每天一篇精选干货!


[你长那么好看,文末点个在看再走呗】

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

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

相关文章

oracle活跃用户,监控数据库中的活跃用户及其运行

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼[sql] view plain copy print?set linesize 120 pagesize 66col c1 for a9col c1 heading "OS User"col c2 for a9col c2 heading "Oracle User"col b1 for a9col b1 heading "Unix PID"col b2 for…

c# 路径下的最近文件夹_C#8.0的两个有趣的新特性以及gRPC

最近每天忙着跑很多地方,回家就不想动了,没什么心情写东西。今天有空,稍微写一点。下文中:关于C#语法特性的部分需要Visual Studio 2019支持。关于.NET Core的部分需要安装.NET 3.0 Preview4,低版本或许也可以但我没实…

alter table add column多个字段_ElementUI表格el-table表头固定自适应高度解决方案

一、前言ElementUI、iView都以相同的方式提供了表格组件表头固定的方法,即设置组件的height属性。表头固定很重要,就在于当表格数据项很多时,滚动条出现在表格组件内,而不是出现在表格组件外——这样的优点在于,滚动浏…

oracle ora 12011,执行oracle中的job报错:ORA-12011:无法执行作业1

LZ在做一个job执行每天新增一个表的操作时,存储过程运行没问题,job也创建成功,但运行job时,却报错: ,后又用sys用户登陆创建了同样的存储过程和job,结果可以执行成功。当时就猜测是权限问题。后…

e盘是否具有读写权限_轻松搭建MySQL主从复制、读写分离(双机热备)

主从复制: 当mysql数据库的数据量太大的时候,查询数据就很吃力了,无论怎么优化都会产生瓶颈,这时我们需要增加服务器设备来实现分布式数据库,实现多机热备份,要想实现多机的热备,首先要了解主从…

linux运维之道基础命令,Linux运维之道(7)——Linux管理类命令

(Linux)[系统管理]1. 目录管理类命令1.1 cd命令格式:cd [-L|[-P [-e]] [-]] [dir]被你忽略的小知识:在这里科普一个小小的知识点,就是关于cd -为什么可以自由的在当前目录和之前目录相互切换?其实,在我们的 Shell 的环…

html画图代码_python之matplotlib画图教程(2)

各位小表贝,你们的画图小老弟又来咯~上一次我们聊到了如何画离散图,这一次我们来点复杂的,准备好了么,系好安全带,准备发车咯~滴滴~我们先来点比较简单,那种易于上手的。如果现在我知道了两个点的坐标&…

在linux上面找一个脚本,30个Linux Shell脚本经典案例

在学习Linux运维时,普遍反馈是:Linux Shell是一个很难的知识板块。虽然大家都认真学,基本的语法也都掌握了,但有需求时,很难直接上手编程,要么写了很久,要么写不好!也有很多做运维很…

python图像识别代码_用Python进行简单图像识别(验证码)

这是一个最简单的图像识别,将图片加载后直接利用Python的一个识别引擎进行识别 将图片中的数字通过 pytesseract.image_to_string(image)识别后将结果存入到本地的txt文件中 #-*-encoding:utf-8-*- import pytesseract from PIL import Image class GetImageDate(ob…

linux 端口添加地址,linux – 绑定,网络(接口)和多播地址有什么区别?

实际上你在这里混淆了三种方法.第一个是bind,用于将套接字绑定到指定的地址和端口.使用此方法基本上您打开一个udp-port并等待该地址上的此端口的数据.第二个是join-method,用于让套接字加入指定的多播组.组播组的示例是224.0.0.1 – “所有主机”组播组 – 其针对同一网段上的…

c++ map初始化_Go学习每日一问(18)-map元素查找

每次学习并整理一个Golang的知识点,每天进步一点点。今天学习下go中的一个知识点:map元素查找日省吾身1.下面代码中 A B 两处应该怎么修改才能顺利编译?func main() { var m map[string]int //A m["a"] 1 if v : m["b&q…

linux运维需要哪些网络知识,Linux运维学习笔记-网络技术知识体系总结

jTemplates部分语法介绍1.{#if} {#if |COND|}..{#elseif |COND|}..{#else}..{#/if} Examples: {#if 2*816} good {#else} fail {# ...解密jQuery内核 DOM操作方法(二)html,text,val回顾下几组DOM插入有关的方法 innerHTML 设置或获取位于对象起始和结束标签…

-bash: wget: 未找到命令_18个堪称神器的命令行工具,高效运维必备

上期入口:24个 CSS 高级技巧合集提示:因公众号不支持超链接,上图所有项目地址,可在公众号后台回复关键字 “命令行工具” 获取。thefuck命令行打错了以后,打一个fuck就会自动纠正。GitHub:https://github.c…

linux编辑java文本,linux下的文本编辑器VI的使用命令

1、 移动光标H        #移到屏幕的左上角M         #移到屏幕的中间行开头L          #移到屏幕的最后一行[         #移到文件开始位置 (双击)]         #移到文件结束位置(双击):n         #移到文件的第n行Ctrl b     …

python3.8.0安装_Python3.8.0

Python3.8.0是一款广受程序员欢迎的编程语言,也是面向对象的一款设计语言,Python以其语言的灵活和简易性,具有非常简捷而清晰的语法特点,在脚本工具、数据分析、web后端等等领域都有着优良的表现,收到了大家的广泛应用…

linux系统proc目录,快速了解Linux系统下的proc目录

/proc/devices文件这个文件列出字符和块设备的主设备号,以及分配到这些设备号的设备名称。常用的命令为#cat /proc/devices(在调试驱动的时候这个还是有用的,可以通过lsmod查看驱动模块是否加载)/proc/interrupts这个文件的每一行都有一个保留的中断。每…

cv2.error: opencv(4.4.0)_【从零学习OpenCV 4】轮廓面积与长度

本文首发于“小白学视觉”微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《OpenCV 4开发详解…

linux 脚本批量删除,Linux Shell使用Bash脚本批量删除文件

PHP每天生成一个存有系统要删除的临时文件的.out文件列表,由bash脚本逐行通过读取.out文件(每一行代表一个待删除的文件)挨个删除,代码如下(dl.sh): #!/bin/bash # Shell script utility to delete file. # You can call script as follows, …

python自定义安装哪些不需要_【1】python模块:自定义模块的3种导入方式

一、定义 模块就是用一堆的代码实现了一些功能的代码的集合,通常一个或者多个函数写在一个.py文件里,而如果有些功能实现起来很复杂,那么就需要创建n个.py文件,这n个.py文件的集合就是模块。如果不懂可以先看下面这篇博文&#xf…

linux mysql数据库日志关闭,linux 怎样恢復mysql数据库日志

1、用dump命令备份数据库。# mysqldump -u root -p dbfile > dbfile.sql2、用rsync从新服务器获得备份的文件(SCP或WGET也可以)。# rsync -avr rootmyolddbserver:/home/mydumpfolder/dbfile.sql3、登陆新服务器的mysql客户端。# mysql -u root -p4. 建立数据库。mysql> …