Stata中的单位根检验
今天帮连玉君老师的stata连享会翻译了一篇文章,原文链接。第一次尝试用markdown编辑,发现CSDN竟然支持markdown,所以顺手po上来试试效果。以下为正文:
检验序列的平稳性是时间序列分析的关键步骤。时间序列中很多估计量的统计特性都依赖于数据是否平稳。一般意义上,一个(弱)平稳过程的期望、方差和自相关系数应不随时间变化。
然而在大多可观测的时间序列中,趋势项的存在总会使得序列不具有平稳性。趋势项包括确定趋势项和随机趋势项,趋势项的类型决定了我们需要使用什么方法将时间序列转换成平稳序列。比如,含有随机趋势项的单位根过程可以通过差分变得平稳。然而,对实际上含有确定趋势项的序列进行差分则会得到含单位根的移动平均过程。因此,在做转换之前,识别出序列的非平稳性到底是源于确定趋势项还是随机趋势项是非常重要的。
在这篇文章中,我会介绍检验单位根的三个命令。
随机趋势
随机趋势的一个简单例子是随机游走过程。
随机游走
考虑以下AR(1)过程:
(1)yt=yt−1+εty_t=y_{t-1}+\varepsilon_t \tag{1}yt=yt−1+εt(1)
其中yty_tyt是被解释变量。误差项εt\varepsilon_tεt期望为0,方差为σ2\sigma^2σ2且独立同分布。如果这个过程的初值为y0=0y_0=0y0=0,则yty_tyt可以写成:
yt=∑i=1tεty_t=\sum_{i=1}^{t} \varepsilon_tyt=i=1∑tεt
其中等式右端为随机趋势项∑i=1tεt\sum_{i=1}^{t} \varepsilon_t∑i=1tεt, yty_tyt的期望为0,方差为σ2\sigma^2σ2。显然期望是常数,而方差随时间变化。
带漂移项的随机游走
向随机游走过程加入一个常数项即可得到带漂移项的随机游走:
(2)yt=α+yt−1+εty_t=\alpha+y_{t-1}+\varepsilon_t \tag{2}yt=α+yt−1+εt(2)
其中α\alphaα是常数项。如果这个过程的初值为0,则yty_tyt可以写成:
yt=αt+∑i=1tεty_t=\alpha t+\sum_{i=1}^{t} \varepsilon_t yt=αt+i=1∑tεt
现在等式右端是一个确定性趋势项αt\alpha tαt和一个随机趋势项∑i=1tεt\sum_{i=1}^{t} \varepsilon_t∑i=1tεt的和。yty_tyt的期望为αt\alpha tαt,方差为σ2\sigma^2σ2。期望和方差都随着时间ttt的增加而增加。注意如果漂移项α\alphaα的值接近于0,则带漂移项的随机游走将非常接近普通的随机游走。
确定趋势
考虑如下带有线性确定趋势的随机过程:
yt=α+δt+ϕyt−1+εty_t=\alpha+\delta t+\phi y_{t-1}+\varepsilon_t yt=α+δt+ϕyt−1+εt
其中δ\deltaδ是时间ttt的系数,ϕ\phiϕ是AR过程的参数且∣ϕ∣<1\left| \phi\right|<1∣ϕ∣<1。注意到带漂移项的随机游走过程也与有线性确定趋势的过程相似,只是前者在确定趋势之外还包含一个随机趋势。
非平稳过程绘图
首先,我分别根据随机游走模型和漂移项为0.1的随机游走模型模拟生成数据并画图,代码在附录中提供。
从上图来看,两个时间序列都没有明显的趋势,并且红线相当于蓝线总是有正向的调整。如果将这两个序列分别画到两张图上,几乎不可能区分出哪个才是带漂移项的随机游走过程。然而,由于两个序列都包含随机趋势,我们仍然可以通过将两个序列差分来获得平稳的时间序列。
类似地,我分别根据漂移项为1的随机游走模型和带有确定性趋势的模型分别模拟数据并画图。
如上图所示,两个序列看起来非常相像。蓝线在一个确定的趋势线上下浮动。红线的随机趋势则在样本开始时缓慢增长,而在样本后期迅速增长。在这种情况下想要转换为平稳的时间序列,就像前面提到的,应用正确的转换方式是非常重要的。
单位根检验
单位根检验的原假设是真正的随机过程为随机游走过程(1)(1)(1)或者是一个带漂移项的随机游走过程(2)(2)(2)。考虑如下的AR(1)模型:
yt=ϕyt−1+εty_t=\phi y_{t-1}+\varepsilon_t yt=ϕyt−1+εt
其中εt\varepsilon_tεt服从独立同分布的N(0,σ2)N(0,\sigma^2)N(0,σ2)分布。原假设意味着ϕ=1\phi=1ϕ=1,而备择假设意味着∣ϕ∣<1\left| \phi\right|<1∣ϕ∣<1。
如果ϕ\phiϕ确实是1,则随着样本量的扩大,OLS估计值ϕ^\hat{\phi}ϕ^相对于平稳序列以一个更快的速度收敛于其真实值1。然而,由于ϕ^\hat{\phi}ϕ^的渐近分布不是标准分布,因此ttt检验在这里并不适用。
此外,在回归中是否包含常数或时间趋势项会导致检验统计量有不同的渐近分布,这也意味着在做这类检验时清楚设定原假设和备择假设是非常重要的。
ADF检验
在单位根检验的原假设下,真实的过程要么是随机游走,要么是带漂移项的随机游走。对于模型(3)(3)(3),原假设成立意味着ϕ=1\phi=1ϕ=1。使用OLS估计模型(3)(3)(3)将忽略残差的序列相关性。
(3)yt=α+δt+ϕyt−1+εty_t=\alpha+\delta t+\phi y_{t-1}+\varepsilon_t \tag{3} yt=α+δt+ϕyt−1+εt(3)
为了解决这个问题,ADF检验通过将模型(3)(3)(3)变形为模型(4)(4)(4)的差分形式并检验是否β=0\beta=0β=0。
(4)Δyt=α+δt+βϕyt−1+∑I=1kγiΔyt−i+εt\Delta y_t=\alpha+\delta t+\beta \phi y_{t-1}+\sum_{I=1}^{k}\gamma_i \Delta y_{t-i}+\varepsilon_t \tag{4} Δyt=α+δt+βϕyt−1+I=1∑kγiΔyt−i+εt(4)
注意(4)(4)(4)可以约束α\alphaα和δ\deltaδ其中一个等于0或同时为0,但是不同的约束会对应不同的检验统计量。Hamilton(1994)1给出了四种可能情况下检验统计量的分布。
我分别模拟了两列时间序列,其中yrwd2是漂移项为1的随机游走过程,yt是有线性趋势的模型。我用dfuller命令来做ADF检验。我感兴趣的原假设I是yrwd2为有漂移项的随机游走过程,其备择假设为yrwd2是一个有线性趋势的平稳过程。因此为了检验(4)(4)(4),我会加入dfuller命令的选项trend。
. dfuller yrwd2, trendDickey-Fuller test for unit root Number of obs = 149---------- Interpolated Dickey-Fuller ---------Test 1% CV 5% CV 10%CVStatistic
-------------------------------------------------------------------Z(t) -2.664 -4.024 -3.443 -3.143
-------------------------------------------------------------------
MacKinnon approximate p-value for Z(t) = 0.2511
和预期一样,yrwd2的检验结果显示不能拒绝该过程为带漂移的随机游走过程的原假设。接下来,我们对yt序列也做类似的检验。
. dfuller yt, trendDickey-Fuller test for unit root Number of obs = 149------- Interpolated Dickey-Fuller ------Test 1% CV 5% CV 10% CVStatistic
----------------------------------------------------------------Z(t) -5.328 -4.024 -3.443 -3.143
----------------------------------------------------------------
MacKinnon approximate p-value for Z(t) = 0.0000
和预期一样,yt序列的检验结果拒绝了原假设。
Phillips–Perron检验
Phillips(1987)2和Phillips and Perron(1988)3开发出这个检验主要是为了解决残差项中潜在的序列相关和异方差问题,其检验统计量的渐进分布和临界值与ADF检验相同。
在stata
中,PP检验的命令pperron与dfuller的用法类似。使用pperron对yrwd2和yt可以得到与ADF检验类似的结果。
GLS去势的ADF检验
Elliott et al. (1996)4提出的GLS-ADF检验与ADF检验类似,只是在对模型(4)(4)(4)进行估计之前,需要先对时间序列进行GLS回归。Elliott et al. (1996)4证明了这个检验比ADF检验表现更好。
为了检验yrwd2是否是一个带漂移项的随机游走过程,我使用设定最大4阶滞后的dfgls命令对模型(4)(4)(4)进行估计:
. dfgls yrwd2, maxlag(4)DF-GLS for yrwd2 Number of obs = 145DF-GLS tau 1% Critical 5% Critical 10% Critical[lags] Test Statistic Value Value Value
---------------------------------------------------------------------------4 -1.404 -3.520 -2.930 -2.6433 -1.420 -3.520 -2.942 -2.6542 -1.638 -3.520 -2.953 -2.6641 -1.644 -3.520 -2.963 -2.673Opt Lag (Ng-Perron seq t) = 0 [use maxlag(0)]
Min SC = 3.31175 at lag 1 with RMSE 5.060941
Min MAIC = 3.295598 at lag 1 with RMSE 5.060941
注意,与dfuller和pperon命令不同的是,dfgls默认控制了线性时间趋势项。结果仍然显示不能拒绝yrwd2是带漂移项的随机游走过程的原假设。
最后,我对yt序列做了同样的检验:
. dfgls yt, maxlag(4)DF-GLS for yt Number of obs = 145DF-GLS tau 1% Critical 5% Critical 10% Critical[lags] Test Statistic Value Value Value
---------------------------------------------------------------------------4 -4.013 -3.520 -2.930 -2.6433 -4.154 -3.520 -2.942 -2.6542 -4.848 -3.520 -2.953 -2.6641 -4.844 -3.520 -2.963 -2.673Opt Lag (Ng-Perron seq t) = 0 [use maxlag(0)]
Min SC = 3.302146 at lag 1 with RMSE 5.036697
Min MAIC = 3.638026 at lag 1 with RMSE 5.036697
与期望一致,我们拒绝了yt序列为带漂移项的随机游走过程的原假设。
结论
在这篇文章中,我讨论了时间序列非平稳主要是由于存在随机趋势项或确定趋势项或二者都有,同时还使用介绍了如何使用dfuller、pperron和dfgls命令检验是否存在单位根。
附录
这是生成随机游走过程、带漂移项的随机游走过程以及带线性趋势过程的代码:
clear all
set seed 2016
local T = 200
set obs `T'
gen time = _n
label var time "Time"
tsset time
gen eps = rnormal(0,5)/*Random walk*/
gen yrw = eps in 1
replace yrw = l.yrw + eps in 2/l/*Random walk with drift*/
gen yrwd1 = 0.1 + eps in 1
replace yrwd1 = 0.1 + l.yrwd1 + eps in 2/l/*Random walk with drift*/
gen yrwd2 = 1 + eps in 1
replace yrwd2 = 1 + l.yrwd2 + eps in 2/l/*Stationary around a time trend model*/
gen yt = 0.5 + 0.1*time + eps in 1
replace yt = 0.5 + 0.1*time +0.8*l.yt+ eps in 2/l
drop in 1/50tsline yrw yrwd1, title("Stochastic trend") ///legend(label(1 "Random walk") ///label(2 "Random walk with drift"))
tsline yt yrwd2, ///legend(label(1 "Deterministic time trend") ///label(2 "Random walk with drift")) ///title("Stochastic and deterministic trend")
Hamilton, J. D. 1994. Time Series Analysis. Princeton: Princeton University Press. ↩︎
Phillips, P. C. B. 1987. Time series regression with a unit root. Econometrica 55: 277–301. ↩︎
Phillips, P. C. B., and P. Perron. 1988. Testing for a unit root in time series regression. Biometrika 75: 335–346. ↩︎
Elliott, G. R., T. J. Rothenberg, and J. H. Stock. 1996. Efficient tests for an autoregressive unit root. Econometrica 64: 813–836. ↩︎ ↩︎
Stata中的单位根检验相关推荐
- stata面板数据单位根检验llc_STATA计量研究/面板单位根检验分析(含代码)
整理人:郑铿城 在stata建模过程中,严格上来说,在面板数据处理好后,建模步骤的第一步应该就是面板单位根检验,因为平稳数据与非平稳数据建模步骤差异较大,若直接对非平稳数据建模,易出现伪回归现象.面板 ...
- stata面板数据单位根检验llc_请问stata面板数据怎么做单位根检验?程序是什么?...
回答于 2017/10/25 19:38 面板数据的单位根检验方法有很多种,一般我们只选两种,即相同根单位根检验和不同根单位根检验.如果数据是平衡的,则可使用LLC检验(适用于同根)和IPS检验(适用 ...
- stata面板数据单位根检验llc_在对面板数据进行回归之前是否需要进行单位根检验和协整检验?...
用非平稳的面板数据进行回归,和时间序列一样会出现伪回归(spurious regression)的问题,但是一般我们有的面板数据都是"large N large T"或者" ...
- 计量经济学之时间序列的平稳性、单位根检验、协整检验、时间序列数据的一般处理流程
时间序列的平稳性 为什么要把时间序列变成平稳的?--平稳性的意义 如何检验时间序列数据的平稳性?--单位根检验 数据不平稳怎么办?--协整检验 单整.协整(cointegration) 协整检验 总结 ...
- stata画图命令_STATA计量研究/面板单位根检验分析(含代码)
整理人:郑铿城 在stata建模过程中,严格上来说,在面板数据处理好后,建模步骤的第一步应该就是面板单位根检验,因为平稳数据与非平稳数据建模步骤差异较大,若直接对非平稳数据建模,易出现伪回归现象.面板 ...
- 单位根检验urdf_实证分析中,大家是如何进行单位根(ADF)检验的?或者ADF检验流程是什么?...
最近在跟朋友聊天中,聊到了关于在实证分析中单位根检验的使用问题,事后,进行了总结. 希望论坛里的朋友谈谈自己如何进行单位根检验分析的,以及分享一下自己的经验,供大家一起学习.讨论. 我先谈谈自己的愚见 ...
- 时间序列中的平稳性检验之单位根检验
对序列的平稳性的检验中最常用的方法是单位根的检验.单位根检验是指检查序列中是否存在单位根,如果存在单位根就是非平稳时间序列了.下面是找的解释为什么单位根存在就是非平稳时间序列的原因. 作者:五雷 链接 ...
- Stata: 面板 Granger 因果检验
作者:李珍 (厦门大学) Stata 连享会: 知乎 | 简书 | 码云 | CSDN Source: Luciano Lopez, Sylvain Weber, 2017, Testing fo ...
- R语言ECM误差修正模型、均衡修正模型、受限VECM、协整检验、单位根检验即期利率市场数据...
全文下载:http://tecdat.cn/?p=29221 传统上,协整检验是在非常长的时间内进行的,本案例研究A测试了1960-2010年期间T-Bill利率和国债收益率之间的均衡(点击文末&qu ...
- stata中计算公式命令_#stata中哪个命令和stats命令等价#stata中计算命令
f的临界值在stata中怎么输入命令计算 stata怎么用命令计算有几个变量 dis `c(k)'可以看到数据中含有的变量的个数. 不过这个命令会把"股票代码"和"日期& ...
最新文章
- 认清Hadoop和Spark的这几点区别,学习时才能事半功倍
- 诚信,聪明,快乐,地位与竞争
- WebStack-Hugo | 一个静态响应式网址导航主题
- 超可爱,抖音爆款实时视频漫画变身特效技术
- linux解压tar到目录,在Linux系统中将tar文件解压到不同的目录中的教程
- laravel 5.1 Model 属性详解
- PHP判断是否有Get参数的方法
- apache证书不受信任_苹果iOS手动安装和信任企业级应用
- AE牛顿动力学插件:Motion Boutique Newton 3 Mac(支持ae2021)
- Dubbo源码分析笔记-一(工程目录介绍)
- mac mysql-share_mac下安装mysql
- 好酷啊,真是图片吗?
- 通用阿里云的短信验证码(详细)
- 项目答辩演讲稿(详细原文)
- Cell子刊:北大姜长涛组发现HIF-2α通过肠道菌群调控脂肪产热
- 几个免费的高清图片网站推荐
- Linux使用crond定时任务详解,定期同步服务器时间。
- 怎么提取图片上的文字?非常方便
- 人工智能、深度学习和机器学习有哪些区别?
- 如何使用JS实现banner图滚动
热门文章
- 100-days: twenty-five
- 谷歌官方Android镜像下载(中文站)
- 【OpenCV】计算两幅图片视觉差
- mysql got signal 11_轻松解决MYSQL错误mysqld got signal 11 ;
- php数独,详解PHP如何实现数独求解
- C语言实现约分最简分式
- 数字电路基础:系统设计优化
- 戴尔惠普华硕笔记本Fn键反了,按F1、F2等键出来Fn+F1、F2的效果
- 酱茄教你怎么用URL Scheme H5链接打开微信小程序
- dsolve函数的功能_MATLAB求解常微分方程:ode45函数与dsolve函数