# Best practice for ADF/KPSS unit root testing sequence?

I've been quite confused by the various unit root testing strategies recommended in the literature, so I was hoping others may have some advice on the best way to proceed using ADF and KPSS tests.

Pfaff (2008) describes the following procedure using the ur.df() function to determine whether a series (i) is stationary around a zero mean, (ii) is stationary around a non-zero mean, (iii) is stationary around a linear trend, (iv) has a unit root with a zero drift, (v) has a unit root with a non-zero drift.

1. Estimate $\Delta y_{t}=\beta_{1}+\beta_{2}t+\pi y_{t-1}+\sum_{j=1}^{k}\gamma_{j}\Delta y_{t-j}+u_{1t}$ (option type = "trend")

1.1. Check tau3: $H_0: \pi = 0$ (t-test for presence of a unit root), reject if tau3 < critical value at 5pct and conclude there is no unit root, otherwise go to step 1.2.

1.2. Check phi3: $H_0: (\beta_{1}, \beta_{2}, \pi) = (\beta_{1}, 0, 0)$ (F-test for absence of trend), reject $H_0$ if phi3 > critical value at 5pct and conclude that there is a unit root, otherwise go to step 2.

2. Estimate $\Delta y_{t}=\beta_{1}+\pi y_{t-1}+\sum_{j=1}^{k}\gamma_{j}\Delta y_{t-j}+u_{2t}$ (option type = "drift")

2.1. Check tau2: $H_0: \pi = 0$ (t-test for presence of a unit root), reject if tau2 < critical value at 5pct level and conclude that there is no unit root, otherwise proceed to step 2.2.

2.2. Check phi1: $H_0 (\beta_{1}, \pi) = (0, 0)$ (F-test for absence of constant), reject $H_0$ if phi1 > critical value at 5pct and conclude that there is a unit root, otherwise proceed to step 3.

3. Estimate $\Delta y_{t}=\pi y_{t-1}+\sum_{j=1}^{k}\gamma_{j}\Delta y_{t-j}+u_{3t}$ (option type = "none")

3.1. Check tau1: $H_0: \pi = 0$ (t-test for presence of a unit root), reject $H_0$ if tau1 < critical value at 5pct level and conclude that there is no unit root, otherwise conclude that there is a unit root

If a unit root is found, take first differences and repeat procedure to find order of integration.

a. While I understand the outlined procedure, I am not quite certain how to relate the five different types of series (i)-(v) above to the test results. I guess failure to reject $H_0$ in step 3.1. is equivalent to (iv), whereas rejection of $H_0$ in step 2.2. would be (v), but what about others?

b. It is often recommended to test again whether $\pi = 0$ under a normal distribution if $H_0$ is rejected at steps 1.2. or 2.2. How is this done and why would this be necessary?

c. Could the KPSS test, which has an opposite $H_0$ (series is stationary), be used to distinguish between the five different types of series (i)-(v)? How should contradictions with the ADF be handled?

The steps where the null hypothesis is rejected relates to the following processes:

• Step 1.1 is related to (iii) is stationary around a linear trend,
• Step 2.1 is related to (ii) is stationary around a non-zero mean,
• Step 3.1 is related to (i) is stationary around a zero mean.

When the null is not rejected, then you may consider the processes (iv) a unit root with a zero drift, (v) a unit root with a non-zero drift or even a unit root with a linear trend. Be aware that the effect of an intercept or a linear trend in a random walk is not the same as in a stationary series. See this post for a graphical illustration of unit root processes with zero intercept (no drift), drift and trend.

If the null of a unit root is rejected, then the the $t$-statistic for $\mu=0$ would follow the standard distribution and you could test that $\mu=0$ under a Gaussian or Student-$t$ distribution of the test statistic. Nevertheless, I think it is a better idea what you mention in the last point, i.e., using the KPSS test where the null hypothesis is stationarity. In this way, combining the ADF and the KPSS tests we may arrive to strong conclusions rejecting either a unit root or stationarity.

In this post I summarize a sequential procedure of both tests and the conclusions that can be obtained in each case. In section 5 of this document we elaborate further on this approach in the context of seasonal time series (where the HEGY test plays the role of the ADF test and the CH test plays the role of the KPSS test).

• Thank you for this elaborate reply, javlacalle. This helped me a lot. Just to clarify: For determining whether any of the coefficients are zero under a standard normal, it would suffice to check the test results in the top part of the summary(ur.ca()) output, correct? – dreamon Dec 23 '14 at 12:38
• You could take as reference the top part to test the significance of the intercept and trend, but it would be better to use the test statistics and critical values reported at the bottom. The first statistic, tau, is for testing the presence of the unit root. The other statistics, phi, may be related to joint tests for both a unit root and no drift (zero coefficient) or a unit root and no trend (zero coefficient for trend) that were reported in the original papers. In a quick check of the documentation of the package I couldn't confirm these test statistics are related to them. – javlacalle Dec 23 '14 at 14:00
• The last link no longer works. – Richard Hardy Feb 24 '17 at 10:15
• @CagdasOzgenc In principle you could work with the residuals of the model with constant and trend (and lags of the dependent variable if needed) because the OLS estimator will be consistent in both models that you mention. The results won't be identical to the one-step process because the regressors will not be in general orthogonal to each other. – javlacalle Apr 18 '17 at 19:08
• I guess that the first step fits the DF regression including the deterministic terms. The residuals from this regression can be used to estimate the covariance matrix of the disturbance term. Then, upon this covariance matrix, the DF model is estimated again by GLS (e.g., OLS on the transformed variables). All the regressors are included in both regressions (the one used to estimate the covariance matrix and the model estimated by GLS where the DF statistic is computed). If this is how it proceeds, orthogonality is probably not an issue. – javlacalle Apr 19 '17 at 8:14