___ ____ ____ ____ ____ (R)
/__ / ____/ / ____/
___/ / /___/ / /___/ 13.1
Statistics/Data Analysis
此次系列文章的主题是通过Stata软件来分析时间序列的平稳和非平稳关系,以及如何通过Stata软件来进行不同时间序列模型的预测性分析。
Stata软件介绍:(https://www.stata.com/)
Stata is the solution for your data science needs. Obtain and manipulate data. Explore. Visualize. Model. Make inferences. Collect your results into reproducible reports.
一、背景介绍
时间序列模型是将一个或一组变量按照时间次序排列,用于解释变量和相互关系的数学表达式,所得到的离散数字组成的序列集合。时间序列模型,可分为平稳时间序列和非平稳时间序列。平稳时间序列可以用来拟合回归方程进行未来的预测,而非平稳的时间序列不能直接做回归,会产生没有实际意义的伪回归。(不平稳的时间序列数据可能会带来t检验失败、自回归系数估计值有偏向的等问题)
首先,判断一个时间序列是不是平稳,主要有三个评价指标:
1. 均值是与t无关的函数
2. 方差是与t无关的函数 (即方差齐性)
3. 协方差是与t无关的函数。(协方差用于衡量两个变量的总体误差。当两个变量是相同的情况时,协方差体现为方差。)
(图片来源:https://blog.csdn.net/qq_40006058/article/details/80191168)
对于单独的非平稳时间序列,需要通过分来将非平稳时间序列变为平稳时间序列。如果对于两个非平稳时间序列,它们的某些线性组合是平稳的,那么这两个非平稳时间序列则存在协整关系,我们便可以基于协整关系去探索序列之间的长期均衡关系了。
二、统计学模型
验证时间序列的模型有:
AR - Auto Regression, 自回归模型。自回归模型AR(p),p-自回归阶数;AR可以解决当前数据与后期数据之间的关系;
MA - Moving Average,移动平均模型。移动平均模型MA(q),q-移动平均阶数;MA则可以解决随机变动也就是噪声的问题;
ARMA - Auto Regression and Moving Average,自回归移动平均模型。自回归移动平均模型是与自回归和移动平均模型两部分组成;(以上三类模型可以直接应用于平稳时间序列模型)
ARIMA - Auto Regression Integreate Moving Average,差分自回归移动平均模型。同前面的三种模型,ARIMA模型也是基于平稳的时间序列的或者差分化后是稳定的,另外前面的几种模型都可以看作ARIMA的某种特殊形式。表示为ARIMA(p, d, q)。p为自回归阶数,q为移动平均阶数,d为时间成为平稳时所做的差分次数。(前面三种模型,d=0,即平稳时间序列模型不需要做差分)
ARCH - Auto Regressive Conditional Heteroskedasticity, 自回归条件异方差模型,用来解决传统计量经济学对时间序列变量的第二个假设(变异数恒定)所引起的问题;
GARCH - Generalized Auto Regressive Conditional Heteroskedasticity, 广义自回归条件异方差模型,GARCH模型是一个专门针对金融数据所量体定做的回归模型。和普通回归模型相比,GARCH对误差的方差进行了进一步的建模,特别适用于波动性的分析和预测,这样的分析对投资者的决策能起到非常重要的指导作用;
VAR - Vector Auto Regression, 向量自回归模型, 描述在同一个样本期间内的n个变量(内生变量)可以作为他们过去值的线性函数;VAR模型的方法是通过将变量作为一个系统来预测,被称为“多变量时间序列”,即向量自回归;
受限因变量模型:通俗的讲,是由于某种原因无法观察到被解释变量的全部值。在实际中,还会经常遇到因变量受到某种限制的情况,这种情况下,取得样本数据来自总体的一个子集,可能不能完全反映总体。例如,小时工资、住房价格和名义利率都必须大于零。这时需要建立的经济计量模型称为受限因变量模型(limited dependent variable model )。
断尾回归模型
截取回归模型
样本选择模型
三、Stata实证分析
ARIMA模型实践
ARIMA模型分析时间序列的基本步骤为:将原始数据的时间序列可视化,观察平稳与非平稳分布 - 通过单位根检验,判断时间序列是否为平稳 - 通过ADF找到最优参数,建立ARIMA模型 - 进行预测
打开Stata/MP 13.1软件,初始界面如下:
打开实例数据wp1,stata默认的数据文件后缀为.dta
打开data-editor,查看导入的数据。wpi - wholesales price index - 批发价格指数,Lnwpi - wpi的对数。
要检测时间数据,需要首先定义数据为时间序列,在command中输入命令:tsset t
将原始数据的时间序列进行可视化处理,作图观察时间序列的趋势:
line wpi t
直观看此时间序列为非平稳时间序列分布;但是需要通过验证才可以得出相应结论。
通过观察自相关图与偏相关图,最主要的目的还是确定序列的ARMA(p,q)模型的具体形式。
一般拿到数据后,先看你数据是否存在协整关系,存在就用平稳数据,不存在只能尝试差分后处理。差分的目的是消除序列的不平稳性,使其波动曲线更平稳。通过一阶插分和二阶插分的时序,来进行ADF单位根检验,进而判断后面的序列是否平稳。
对原始数据进行单位根检验:dfuller ln_wpi
Z test都大于检验各检验临界值,且p-value>0.05
所以原序列是非平稳时间序列;
对一阶差分后的数据进行单位根检验:dfuller d.ln_wpi
Z-test都小于各检验临界值,且p-value<0.05
所以一阶差分后,序列变为平稳时间序列;
对时序进行二阶差分的单位根检验:dfuller d2.ln_wpi
结果显示,二阶差分的时序为平稳时间序列。
(* 滞后几阶与几阶差分的含义不同:滞后二阶是指取前两期的值;二阶差分就是,后一期一阶差分减去前一期一阶差分。)
一阶差分就是离散函数中连续相邻两项之差。绘制一阶差分图:
line d.wpi t,yline(0)
(yline(0)表示在y=0处做一条直线)
绘制二阶插分图:line d2.wpi t,yline(0)
可以看出二阶差分的时序图,直观上已经接近于一个平稳时间序列了。
AC图确定的是p,PAC图确定的是q。判断ARIMA模型的传统方法是通过ACF(自相关图)和PACF(偏自相关图), 看ACF和PACF快速衰减的位置,看不同阶数对应快速衰减到标准差之内的位置。观察ACF和PACF的模式,主要看图形分布上是否有如下两个特征:
截尾:到了某个位置,系数突然变化,像被“截断”了一样;
拖尾:就是系数整体是一个单调渐变的趋势,但都不为0;
若ACF拖尾,PACF截尾,用AR算法;
若ACF截尾,PACF拖尾,用MA算法;
若ACF,PACF都是拖尾,用ARMA算法;不平稳用ARIMA算法;
如果,ACF和PACF的模式不明显,则需要尝试不同的参数值,然后通过赤池信息准则来判断。
绘制一阶差分的自相关图:ac d.wpi
(AC - Autocorrelation)
绘制一阶差分的偏自相关:pac d.wpi
(PAC - Partial Autocorrelation)
根据图示,ACF的特征类似于拖尾,PACF则没有明显的特征模式。当ACF,PACF没有明显特征时,需要通过赤池信息来判断。
赤池信息准则:通过AIC作为衡量统计模型拟合优良性的一种标准。它建立在熵的概念基础上,可以权衡所估计模型的复杂度和此模型拟合数据的优良性。根据不同参数组合的AIC值来判断模型的好坏,AIC越小越好。
(AIC实际上是对样本内误差(in sample error)的估计量,即在训练样本的基础上,保持自变量不变,观察到一组新的y', 然后计算模型在这个新样本中得到误差的期望值。)
通过单位根检验判断此时间序列是否为平稳时间序列:dfuller ln_wpi,lag(3) trend regress (此处假设滞后3期,lag(3)。正常做法是要进行多次滞后项的验证,然后去评判拟合回归的显著性效果。)
ADF(Augmented Dickey-Fuller) 单位根检验 (unit root test) 的原假设为:H0:p=1, 备择假设为:H1:p<1. (p=1表明存在单位根,原时间序列为非平稳时间序列)
ADF检验的逻辑:如果序列平稳,则不会存在单位根;如果序列不平稳,则可以通过差分变换,检验差分后的序列是否平稳。
ADF原假设H0为存在单位根(非平稳),对于一个平稳的时间序列数据,就要在给定的置信水平上显著,拒绝原假设。
拒绝原假设的判别条件:1>统计量显著小于3个置信度(1%,5%,10%)的临界统计值时;2>Z统计量的P-value接近0。
\]
通过单位根检验结果可以看到在1%,5%,10%显著性水平下的临界值分别为1%-critical value=-4.033, 5%-critical value=-3.447, 10%-critical value=-3.147,Z检验统计量值为-2.25。而ADF是左侧单边检验,只要Z检验统计量值大于各临界值,则不能拒绝原假设H0(即p=1),原序列为非平稳时间序列。且p-value=0.4617,不能显著拒绝原假设。
回归系数的解读:
L1 - 表示回归系数;
LD,L2D和L3D - 分别代表了滞后1-3阶滞后项对应的系数;LD滞后项p值为0,L2D滞后项p值为0.036,两项在5%显著性水平上都非常显著;L3D滞后项的p值为0.145,在5%显著性水平上显著性一般;
_trend - 时间趋势项;p值为0.024,时间趋势在5%水平上很显著;
_cons - 常数项;
在Stata中,ARIMA模型被看做带有ARIMA扰动项的结构模型,ARIMA模型公式中本质上使用的是MLE(最大似然估计),对于序列ln_wpi,通过判断为非平稳时间序列,所以ARIMA(p,d,q)模型中,d=1。ARIMA(p,1,q)中的 自回归阶数p 和 移动平均阶数q 通过信息准则来确定,假定模型为ARIMA(1,1,1),在Stata中输入如下命令:
arima ln_wpi,airma(1,1,1)
estat ic
再分别求出ARIMA(2,1,1),ARIMA(1,1,2),ARIMA(2,1,2)的结果:
ARIMA(2,1,1)
ARIMA(1,1,2)
ARIMA(2,1,2)
可以看出ARIMA(1,1,1)中的AIC和BIC最小,p=1,q=1,d=1为ARIMA模型最优参数。拟合模型后,需要对残差序列检验是否为白噪声,输入:
predict r,residual
数据集中生成了新的残差序列r:
一个标准的检验流程中,需要比较不同预测方法得到的预测结果的残差。正常情况下,残差应该为平稳序列。
我们对得到的残差列进行单位根检验:
dfuller r
根据z-test和p-value,残差为平稳时间序列;
绘制残差图如下,也可以直观的看出是一个平稳的时间序列。
line r t,yline(0)
系数显著性检验通过后,要进行模型的有效性检验,也就是检验残差性是否为白噪声:
用Q统计量进行白噪声(white noise)检验:
wntestq r
wntestb r
通过白噪声检验的结果,可知模型的有效性拟合效果较好。
下面开始模型的预测:
生成未差分的wpi时间序列y:preidct y,y
生成差分后的wpi序列xb:predict xb,xb
比对ARIMA模型生成的预测值和原始值的拟合线对比:
line ln_wpi y t, yline(0)
(红色为预测值拟合线,黑色为原始值拟合线)
样本外预测,首先添加预测值的空白填充位置:
tsappend,add(4)
对差分后序列的预测:predict y_hat
对原序列wpi的预测:predict yy_hat,y
(在STATA中,ARIMA模型只能预测未来1期的数值。)
将预测值与原始值的拟合曲线进行比较:line ln_wpi yy_hat t, yline(0)
可以看出红色拟合线对应的多出一期的预测值已经体现。
下一篇将总结时间序列模型之ARCH和GARCH模型,在STATA中的使用方法和规范。
“笔人自认才疏学浅,仅略知皮毛,更兼时间和精力所限,文中错谬之处在所难免,若蒙读者诸君不吝告知,将不胜感激。”