Performs the Phillips-Perron test for the null hypothesis of a unit root of
a univariate time series x
(equivalently, x
is a non-stationary time series).
pp.test(x, type = c("Z_rho", "Z_tau"), lag.short = TRUE, output = TRUE)
A matrix for test results with three columns (lag
,Z_rho
or Z_tau
, p.value
) and three rows (type1
, type2
, type3
).
Each row is the test results (including lag parameter, test statistic and p.value) for
each type of linear equation.
a numeric vector or univariate time series.
the type of Phillips-Perron test. The default is Z_rho
.
a logical value indicating whether the parameter of lag to calculate the statistic is a short or long term. The default is a short term.
a logical value indicating to print the results in R console. The default
is TRUE
.
Debin Qiu
Compared with the Augmented Dickey-Fuller test, Phillips-Perron test makes
correction to the test statistics and is robust to the unspecified autocorrelation
and heteroscedasticity in the errors. There are two types of test statistics,
\(Z_{\rho}\) and \(Z_{\tau}\), which have the same asymptotic distributions
as Augmented Dickey-Fuller test statistic, ADF
. The calculations of each type
of the Phillips-Perron test can be see in the reference below. If the
lag.short = TRUE
, we use the default number of Newey-West lags
\(floor(4*(length(x)/100)^0.25)\),
otherwise \(floor(12*(length(x)/100)^0.25)\) to calculate the test statistics.
In order to calculate the test statistic, we consider
three types of linear regression models. The first type (type1
) is the one
with no drift and linear trend with respect to time:
$$x[t] = \rho*x[t-1] + e[t],$$
where \(e[t]\) is an error term.
The second type (type2
) is the one with drift but no linear trend:
$$x[t] = \mu + \rho*x[t-1] + e[t].$$
The third type (type3) is the one with both drift and linear trend:
$$x[t] = \mu + \alpha*t + \rho*x[t-1] + e[t].$$
The p.value is calculated by the interpolation of test statistics from the critical values
tables (Table 10.A.1 for Z_rho
and 10.A.2 for Z_tau
in Fuller (1996))
with a given sample size \(n\) = length(x
).
Phillips, P. C. B.; Perron, P. (1988). Testing for a Unit Root in Time Series Regression. Biometrika, 75 (2): 335-346.
Fuller, W. A. (1996). Introduction to statistical time series, second ed., Wiley, New York.
adf.test
, kpss.test
, stationary.test
# PP test for ar(1) process
x <- arima.sim(list(order = c(1,0,0),ar = 0.2),n = 100)
pp.test(x)
# PP test for co2 data
pp.test(co2)
Run the code above in your browser using DataLab