0. 缘起
一个被数学建模折磨的苦命人,在CSDN
上找不到STATA
相关的教程,没办法只有自己借了两本书,找了些相关资料进行学习。想到可能有同样苦命的人存在,将自己的理解上传,希望能提供一些帮助。
PS:其实原来会用SPSS
跑ARIMA
模型,但是这次需要对几十个国家的数据跑(也就是几十个模型),想寻找一种自动确定模型参数的方法【但是现在并没有找到】。觉得如果可能有的话,应该是通过STATA
实现,若有好心人知道且愿意告知,将会非常感谢!
1. ARIMA模型介绍
就使用而言,ARIMA(p, d, q)模型有现成的程序,需要人工做的仅仅只有:
- 通过观察结果得到确定三个待定参数的值
d
:差分阶数,通过看检验结果确定p
、q
:自回归和移动平均阶数,看AC
和PAC
图像确定
- 对模型进行检验,查看模型结果
在此以某国人口数据为例,介绍自己对刚学的ARIMA
模型的理解。
最近事情有点多,先占个坑,忙过了就更新前边的相关内容。在后边的代码中,
- 先检验稳定性,确定
d
的取值(即稳定时候的值) - 再做
AC
和PAC
的图像,确定p
和q
的值 - 相关的检验看法已经使用
【】
标出
按照此思路看代码其实应该很容易能看得懂,所以就先发了出来。若仅仅只是为了使用,只需要导入文件和变量名即可使用。
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))