关于算法:R语言时间序列平稳性几种单位根检验ADFKPSSPP及比较分析

8次阅读

共计 8079 个字符,预计需要花费 21 分钟才能阅读完成。

原文链接:http://tecdat.cn/?p=21757

工夫序列模型依据钻研对象是否随机分为确定性模型和随机性模型两大类。

随机工夫序列模型即是指仅用它的过来值及随机扰动项所建设起来的模型, 建设具体的模型, 需解决如下三个问题模型的具体模式、时序变量的滞后期以及随机扰动项的构造。

μ 是 yt 的均值;ψ 是系数,决定了工夫序列的线性动静构造,也被称为权重,其中 ψ0=1;{εt}为高斯白噪声序列,它示意工夫序列 {yt} 在 t 时刻呈现了新的信息,所以 εt 称为时刻 t 的 innovation(新信息)或 shock(扰动)。

单位根测试是平稳性测验的非凡办法。单位根测验是对工夫序列建设 ARMA 模型、ARIMA 模型、变量间的协整剖析、因果关系测验等的根底。

对于单位根测试,为了阐明这些测试的实现,思考以下系列

 > plot(X,type="l") 

  • Dickey Fuller(规范)

这里,对于 Dickey-Fuller 测试的简略版本,咱们假如

咱们想测试是否(或不是)。咱们能够将以前的示意写为

![https://latex.codecogs.com/gi…{t-1}+varepsilon_t](https://latex.codecogs.com/gi…​

所以咱们只需测试线性回归中的回归系数是否为空。这能够通过学生 t 测验来实现。如果咱们思考后面的模型没有线性漂移,咱们必须思考上面的回归

 Call:
lm(formula = z.diff ~ 0 + z.lag.1)

Residuals:
     Min       1Q   Median       3Q      Max 
-2.84466 -0.55723 -0.00494  0.63816  2.54352 

Coefficients:
         Estimate Std. Error t value Pr(>|t|)
z.lag.1 -0.005609   0.007319  -0.766    0.444

Residual standard error: 0.963 on 238 degrees of freedom
Multiple R-squared:  0.002461,    Adjusted R-squared:  -0.00173 
F-statistic: 0.5873 on 1 and 238 DF,  p-value: 0.4442

咱们的测试程序将基于学生 t 测验的值,

> summary(lm(z.diff~0+z.lag.1))$coefficients[1,3]
[1] -0.7663308

这正是计算应用的值

ur.df(X,type="none",lags=0)


############################################################### 
# Augmented Dickey-Fuller Test Unit Root / Cointegration Test # 
############################################################### 

The value of the test statistic is: -0.7663

能够应用临界值(99%、95%、90%)来解释该值

> qnorm(c(.01,.05,.1)/2)
[1] -2.575829 -1.959964 -1.644854

如果统计量超过这些值,那么序列就不是安稳的,因为咱们不能回绝这样的假如。所以咱们能够得出结论,有一个单位根。实际上,这些临界值是通过

 ############################################### 
# Augmented Dickey-Fuller Test Unit Root Test # 
############################################### 

Test regression none 

Call:
lm(formula = z.diff ~ z.lag.1 - 1)

Residuals:
     Min       1Q   Median       3Q      Max 
-2.84466 -0.55723 -0.00494  0.63816  2.54352 

Coefficients:
         Estimate Std. Error t value Pr(>|t|)
z.lag.1 -0.005609   0.007319  -0.766    0.444

Residual standard error: 0.963 on 238 degrees of freedom
Multiple R-squared:  0.002461,    Adjusted R-squared:  -0.00173 
F-statistic: 0.5873 on 1 and 238 DF,  p-value: 0.4442

Value of test-statistic is: -0.7663 

Critical values for test statistics: 
      1pct  5pct 10pct
tau1 -2.58 -1.95 -1.62

R 有几个包能够用于单位根测试。

 Augmented Dickey-Fuller Test

data:  X
Dickey-Fuller = -2.0433, Lag order = 0, p-value = 0.5576
alternative hypothesis: stationary

这里还有一个测验零假如是存在单位根。然而 p 值是齐全不同的。

p.value
[1] 0.4423705
testreg$coefficients[4]
[1] 0.4442389

  • 增广Dickey-Fuller 测验

回归中可能有一些滞后景象。例如,咱们能够思考

![https://latex.codecogs.com/gi…{t-1}+psi%20Delta%20Y_{t-1}+varepsilon_t](https://latex.codecogs.com/gi…​

同样,咱们须要查看一个系数是否为零。这能够用学生 t 测验来做。

 > summary(lm(z.diff~0+z.lag.1+z.diff.lag))

Call:
lm(formula = z.diff ~ 0 + z.lag.1 + z.diff.lag)

Residuals:
     Min       1Q   Median       3Q      Max 
-2.87492 -0.53977 -0.00688  0.64481  2.47556 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
z.lag.1    -0.005394   0.007361  -0.733    0.464
z.diff.lag -0.028972   0.065113  -0.445    0.657

Residual standard error: 0.9666 on 236 degrees of freedom
Multiple R-squared:  0.003292,    Adjusted R-squared:  -0.005155 
F-statistic: 0.3898 on 2 and 236 DF,  p-value: 0.6777

coefficients[1,3]
[1] -0.7328138

该值是应用

> df=ur.df(X,type="none",lags=1)

############################################### 
# Augmented Dickey-Fuller Test Unit Root Test # 
############################################### 

Test regression none 

Call:
lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)

Residuals:
     Min       1Q   Median       3Q      Max 
-2.87492 -0.53977 -0.00688  0.64481  2.47556 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
z.lag.1    -0.005394   0.007361  -0.733    0.464
z.diff.lag -0.028972   0.065113  -0.445    0.657

Residual standard error: 0.9666 on 236 degrees of freedom
Multiple R-squared:  0.003292,    Adjusted R-squared:  -0.005155 
F-statistic: 0.3898 on 2 and 236 DF,  p-value: 0.6777

Value of test-statistic is: -0.7328 

Critical values for test statistics: 
      1pct  5pct 10pct
tau1 -2.58 -1.95 -1.62

同样,也能够应用其余包:

 Augmented Dickey-Fuller Test

data:  X
Dickey-Fuller = -1.9828, Lag order = 1, p-value = 0.5831
alternative hypothesis: stationary

论断是一样的(咱们应该回绝序列是安稳的假如)。

  • 带趋势和漂移的 增广Dickey-Fuller 测验

到目前为止,咱们的模型中还没有包含漂移。但很简略(这将被称为前一过程的裁减版本):咱们只须要在回归中蕴含一个常数,

> summary(lm)


Residuals:
     Min       1Q   Median       3Q      Max 
-2.91930 -0.56731 -0.00548  0.62932  2.45178 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)  0.29175    0.13153   2.218   0.0275 *
z.lag.1     -0.03559    0.01545  -2.304   0.0221 *
z.diff.lag  -0.01976    0.06471  -0.305   0.7603  
---
Signif. codes:  0‘***’0.001‘**’0.01‘*’0.05‘.’0.1‘’1

Residual standard error: 0.9586 on 235 degrees of freedom
Multiple R-squared:  0.02313,    Adjusted R-squared:  0.01482 
F-statistic: 2.782 on 2 and 235 DF,  p-value: 0.06393

思考到方差输入的一些剖析,这里取得了感兴趣的统计数据,其中该模型与没有集成局部的模型进行了比拟,以及漂移,

> summary(lmcoefficients[2,3]
[1] -2.303948
> anova(lm$F[2]
[1] 2.732912

这两个值也是通过

ur.df(X,type="drift",lags=1)

############################################### 
# Augmented Dickey-Fuller Test Unit Root Test # 
############################################### 

Test regression drift 

Residuals:
     Min       1Q   Median       3Q      Max 
-2.91930 -0.56731 -0.00548  0.62932  2.45178 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)  0.29175    0.13153   2.218   0.0275 *
z.lag.1     -0.03559    0.01545  -2.304   0.0221 *
z.diff.lag  -0.01976    0.06471  -0.305   0.7603  
---
Signif. codes:  0‘***’0.001‘**’0.01‘*’0.05‘.’0.1‘’1

Residual standard error: 0.9586 on 235 degrees of freedom
Multiple R-squared:  0.02313,    Adjusted R-squared:  0.01482 
F-statistic: 2.782 on 2 and 235 DF,  p-value: 0.06393

Value of test-statistic is: -2.3039 2.7329 

Critical values for test statistics: 
      1pct  5pct 10pct
tau2 -3.46 -2.88 -2.57
phi1  6.52  4.63  3.81

咱们还能够包含一个线性趋势,

> temps=(lags+1):n
lm(z.diff~1+temps+z.lag.1+z.diff.lag)

Residuals:
     Min       1Q   Median       3Q      Max 
-2.87727 -0.58802 -0.00175  0.60359  2.47789 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)  
(Intercept)  0.3227245  0.1502083   2.149   0.0327 *
temps       -0.0004194  0.0009767  -0.429   0.6680  
z.lag.1     -0.0329780  0.0166319  -1.983   0.0486 *
z.diff.lag  -0.0230547  0.0652767  -0.353   0.7243  
---
Signif. codes:  0‘***’0.001‘**’0.01‘*’0.05‘.’0.1‘’1

Residual standard error: 0.9603 on 234 degrees of freedom
Multiple R-squared:  0.0239,    Adjusted R-squared:  0.01139 
F-statistic:  1.91 on 3 and 234 DF,  p-value: 0.1287

> summary(lmcoefficients[3,3]
[1] -1.98282
> anova(lm$F[2]
[1] 2.737086

而 R 函数返回

ur.df(X,type="trend",lags=1)


############################################### 
# Augmented Dickey-Fuller Test Unit Root Test # 
############################################### 

Test regression trend 



Residuals:
     Min       1Q   Median       3Q      Max 
-2.87727 -0.58802 -0.00175  0.60359  2.47789 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)  
(Intercept)  0.3227245  0.1502083   2.149   0.0327 *
z.lag.1     -0.0329780  0.0166319  -1.983   0.0486 *
tt          -0.0004194  0.0009767  -0.429   0.6680  
z.diff.lag  -0.0230547  0.0652767  -0.353   0.7243  
---
Signif. codes:  0‘***’0.001‘**’0.01‘*’0.05‘.’0.1‘’1

Residual standard error: 0.9603 on 234 degrees of freedom
Multiple R-squared:  0.0239,    Adjusted R-squared:  0.01139 
F-statistic:  1.91 on 3 and 234 DF,  p-value: 0.1287

Value of test-statistic is: -1.9828 1.8771 2.7371 

Critical values for test statistics: 
      1pct  5pct 10pct
tau3 -3.99 -3.43 -3.13
phi2  6.22  4.75  4.07
phi3  8.43  6.49  5.47

  • KPSS 测验

在这里,在 KPSS 过程中,能够思考两种模型:漂移模型或线性趋势模型。在这里,零假如是序列是安稳的。
代码是

ur.kpss(X,type="mu")

####################### 
# KPSS Unit Root Test # 
####################### 

Test is of type: mu with 4 lags. 

Value of test-statistic is: 0.972 

Critical value for a significance level of: 
                10pct  5pct 2.5pct  1pct
critical values 0.347 0.463  0.574 0.73

在这种状况下,有一种趋势

ur.kpss(X,type="tau")

####################### 
# KPSS Unit Root Test # 
####################### 

Test is of type: tau with 4 lags. 

Value of test-statistic is: 0.5057 

Critical value for a significance level of: 
                10pct  5pct 2.5pct  1pct
critical values 0.119 0.146  0.176 0.216

再一次,能够应用另一个包来取得雷同的测验(但同样,不同的输入)

 KPSS Test for Level Stationarity

data:  X
KPSS Level = 1.1997, Truncation lag parameter = 3, p-value = 0.01

> kpss.test(X,"Trend")

    KPSS Test for Trend Stationarity

data:  X
KPSS Trend = 0.6234, Truncation lag parameter = 3, p-value = 0.01

至多有一致性,因为咱们始终回绝假如。

  • Philipps-Perron 测验

Philipps-Perron 测验基于 ADF 过程。代码

> PP.test(X)

    Phillips-Perron Unit Root Test

data:  X
Dickey-Fuller = -2.0116, Truncation lag parameter = 4, p-value = 0.571

另一种可能的代替计划是

> pp.test(X)

    Phillips-Perron Unit Root Test

data:  X
Dickey-Fuller Z(alpha) = -7.7345, Truncation lag parameter = 4, p-value
= 0.6757
alternative hypothesis: stationary

  • 比拟

我不会花更多的工夫比拟不同的代码,在 R 中,运行这些测试。咱们再花点工夫疾速比拟一下这三种办法。让咱们生成一些或多或少具备自相干的自回归过程,以及一些随机游走,让咱们看看这些测验是如何执行的:

 > for(i in 1:(length(AR)+1)
+ for(s in 1:1000){+ if(i!=1) X=arima.sim
+ M2[s,i]=(pp.testp.value)
+ M1[s,i]=(kpss.testp.value)
+ M3[s,i]=(adf.testp.value)
+ }

这里,咱们要计算测验的 p 值超过 5% 的次数,

 > plot(AR,P[1,],type="l",col="red",ylim=c(0,1)
> lines(AR,P[2,],type="l",col="blue")
> lines(AR,P[3,],type="l",col="green") 

咱们能够在这里看到 Dickey-Fuller 测试的体现有多不稳固,因为咱们的自回归过程中有 50%(至多)被认为是非安稳的。


最受欢迎的见解

1.Matlab 马尔可夫链蒙特卡罗法(MCMC)预计随机稳定率(SV,Stochastic Volatility)模型

2.基于 R 语言的疾病制图中自适应核密度估计的阈值抉择办法

3.WinBUGS 对多元随机稳定率模型:贝叶斯预计与模型比拟

4. R 语言回归中的 hosmer-lemeshow 拟合优度测验

5.matlab 实现 MCMC 的马尔可夫切换 ARMA – GARCH 模型预计

6. R 语言区间数据回归剖析

7. R 语言 WALD 测验 VS 似然比测验

8.python 用线性回归预测股票价格

9. R 语言如何在生存剖析与 Cox 回归中计算 IDI,NRI 指标

正文完
 0