【STATA】ARIMA模型(含代码)

0. 缘起

一个被数学建模折磨的苦命人,在CSDN上找不到STATA相关的教程,没办法只有自己借了两本书,找了些相关资料进行学习。想到可能有同样苦命的人存在,将自己的理解上传,希望能提供一些帮助。

PS:其实原来会用SPSSARIMA模型,但是这次需要对几十个国家的数据跑(也就是几十个模型),想寻找一种自动确定模型参数的方法【但是现在并没有找到】。觉得如果可能有的话,应该是通过STATA实现,若有好心人知道且愿意告知,将会非常感谢!

1. ARIMA模型介绍

就使用而言,ARIMA(p, d, q)模型有现成的程序,需要人工做的仅仅只有:

  1. 通过观察结果得到确定三个待定参数的值
    • d:差分阶数,通过看检验结果确定
    • pq:自回归和移动平均阶数,看ACPAC图像确定
  2. 对模型进行检验,查看模型结果

在此以某国人口数据为例,介绍自己对刚学的ARIMA模型的理解。


最近事情有点多,先占个坑,忙过了就更新前边的相关内容。在后边的代码中,

  • 先检验稳定性,确定d的取值(即稳定时候的值)
  • 再做ACPAC的图像,确定pq的值
  • 相关的检验看法已经使用【】标出

按照此思路看代码其实应该很容易能看得懂,所以就先发了出来。若仅仅只是为了使用,只需要导入文件和变量名即可使用。

2. STATA代码

/*
	Purpose			:ARIMA模型学习
	Author			:CZY - CQU
	Date Created	:2020年12月1日20:00:13
*/

/*
	AR(p):p阶自回归(针对变量)【ACF衰减趋于0,PACF在P阶后截尾】
	I(d):d阶差分
	MA(q):q阶移动平均(针对误差)【ACF在q阶截尾,PACF衰减趋于0】
*/

* 清除数据
cls
clear all

* 路径查询和切换
pwd 								//查询当前工作路径
cd "C:/Users/10400/Desktop/计量经济学/ARIMA"  	//切换工作路径【这里需要改成自己的路径(即文件所在位置)】

* Log文件
capture log close 					//关闭现有的Log文件
log using ARIMA.log, replace			//创建新的Log文件

************************数据导入**************************
* 导入文件
import excel "人口数据.xlsx", sheet("Sheet1") firstrow clear
tsset YEAR //设置时间变量

* 数据信息:计量经济基础[张晓峒(第三版)]:第十二章时间序列数据
/*
> YEAR: 年份
> PEOPLE 年份对应人口数
*/

************************平稳性检验【定d】************************
//1. 【看Test Statistic的绝对值与临界值(Critical Value)的大小,越大越好】
//2. 【看P值,越小说明越平稳】

* DF检验
dfuller PEOPLE //先检验PEOPLE是否平稳,不平稳则检验差分项
dfuller d.PEOPLE //d.PEOPLE:PEOPLE的一阶差分

* GLS扩展的DF检验【通常采用】
dfgls d.PEOPLE, notrend //notrend不含趋势项
// Ng-P、SC、MAIC三种方法投票确定查看的阶数

* PP检验
pperron d.PEOPLE

* 三种检验说明做一阶差分后平稳,故确定d = 1
************************相关性分析【定p,q】************************
corrgram d.PEOPLE //绘制人口数据的自相关相关图和偏自相相关图【Table格式】

* 图形绘制与保存
ac d.PEOPLE, lags(20) level(95) generate(New_ac) //PEOPLE滞后绘制1-8阶的自相关图【Graph格式】
graph save Graph Fig01_AC.gph, replace
graph export Fig01_AC.png, as(png) replace

pac d.PEOPLE, lags(20) level(95) generate(New_pac) //偏自相关图【Graph格式】
graph save Graph Fig01_PAC.gph, replace
graph export Fig01_PAC.png, as(png) replace

/*
lags(n):n阶滞后项
level(alpha):显著性水平alpha
generate(name):将自相关命名为name并保存
*/

graph combine ///图片并排
	Fig01_AC.gph ///导入AC图片
	Fig01_PAC.gph ///导入PAC图片
	, rows(2) altshrink ///排列成两行
	title("AC and PAC of D.PEOPLE", size(medium))
	
* 根据图像选择p = 1, q = 0	

************************ARIMA模型************************
arima PEOPLE, arima(1,1,0) //建立ARIMA(1,1,0)模型

* 模型检验和评价
predict PEOPLE_RES, resid //回归残差序列
corrgram PEOPLE_RES //残差序列的AC和PAC图
wntestq PEOPLE_RES, lag(20) //白噪声零假设-Q检验【P大于0.05即可】

*********
* 保存预测值
predict PEOPLE_HAT
label variable PEOPLE_HAT "predicted PEOPLE"

tsline D.PEOPLE PEOPLE_HAT, lcolor(blue red) lwidth(medium medithic)
	xtitle("") xlabel(, grid gmax gmin) ytitle("PEOPLE")
	ylabel(, grid gmax gmin) ylabel(0. lcolor(gs12))

  • 58
    点赞
  • 225
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值