aTSA (version 3.1.2)

pp.test: Phillips-Perron Test


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.

See Also

adf.test, kpss.test, stationary.test


Run this code
# PP test for ar(1) process
x <- arima.sim(list(order = c(1,0,0),ar = 0.2),n = 100)

# PP test for co2 data

Run the code above in your browser using DataCamp Workspace