The auxiliary regression is \(y_t = \mu + \beta(t - n/2) + \rho y_{t-1} + u_t\). With \(s^2 = \sum u^2/n\) and the Bartlett long-run variance \(\lambda^2 = s^2 + (2/n)\sum_{i=1}^{l} (1 - i/(l+1)) \sum_t u_t u_{t-i}\), the statistics are \(Z_\alpha = n(\rho-1) - n^6(\lambda^2 - s^2)/(24 D)\) and \(Z_{t\alpha} = \sqrt{s^2/\lambda^2}\, t_\rho - n^3(\lambda^2 - s^2)/(4\sqrt{3}\sqrt{D}\lambda)\), with \(D\) the trend-corrected sum of squares. The correction is non-parametric: the OLS t is rescaled by short-run over long-run variance rather than the regression being augmented with lagged differences. Default truncation lag \(\lfloor 4(n/100)^{1/4}\rfloor\).
References
Phillips and Perron (1988), Biometrika 75:335-346. Paywalled; the coded form, the pp_sum Bartlett kernel and the Dickey-Fuller tables were read from Trapletti and Hornik's tseries (R/test.R, src/ppsum.c), tarball tseries_0.10-62 from CRAN. The p-value is interpolated in those tables, flat outside 1%-99%.
Examples
D <- data.frame(x = c(1, 2, 3, 4), y = c(2, 4, 5, 9))
Pptest(D)
#> $statistic
#> [1] -0.8105035
#>
#> $p_value
#> [1] 0.9484554
#>
#> $rho
#> [1] 0.1531532
#>
#> $lags
#> [1] 2
#>
#> $s2
#> [1] 1.777533
#>
#> $lambda2
#> [1] 1.645231
#>
#> $n
#> [1] 7
#>
#> $method
#> [1] "Phillips-Perron unit root test, Z(t_alpha)"
#>
#> attr(,"class")
#> [1] "morie_rich_result" "list"
