Skip to contents

The null is a unit root with no break. The alternative is a trend-stationary process whose intercept, trend, or both shift at a single break date \(T_B\) that is not known in advance but chosen by the data. The regression run at each candidate break is, in levels, $$y_t = \mu + \alpha y_{t-1} + \beta t + \theta DU_t(T_B) + \gamma DT_t(T_B) + \sum_{j=1}^{k} c_j \Delta y_{t-j} + e_t,$$ with break dummies \(DU_t(T_B) = 1\) for \(t > T_B\) and 0 otherwise (intercept shift), and \(DT_t(T_B) = t - T_B\) for \(t > T_B\) and 0 otherwise (trend shift).

Usage

Zaurts(x, model = "intercept", lags = 0)

Arguments

x

Numeric vector, the series to test.

model

One of "intercept", "trend", "both".

lags

Non-negative integer number of lagged differences.

Value

Named list with statistic, break_point, model, lags, cval_1pct, cval_5pct, cval_10pct, tstats, n, method.

Details

model = "intercept" includes \(DU\) only (Zivot & Andrews model A), "trend" includes \(DT\) only (model B), and "both" includes both (model C). The statistic is the minimum over candidate break dates of the t-ratio for \(\alpha = 1\), \(t_\alpha(T_B) = (\hat\alpha(T_B) - 1)/se(\hat\alpha(T_B))\), and the reported break point attains that minimum. Because \(T_B\) is chosen to minimise the statistic the null distribution is not the Dickey–Fuller one, hence the tabulated critical values.

Candidate break dates run over \(1, \ldots, n-1\) without trimming, matching urca::ur.za. Candidates whose design is rank deficient (which happens near the ends of the sample, where a dummy is almost constant) are skipped rather than allowed to produce a spurious minimum.

The regression layout, the untrimmed break search and the critical values follow urca::ur.za (urca 1.3-4, R/ur-za.R), the reference implementation of this test in R. Both arms were checked against it and agree to twelve decimal places.

Mirrors morie.fn.zaurts on the Python side.

References

Zivot E & Andrews D W K (1992). Further evidence on the great crash, the oil-price shock, and the unit-root hypothesis. Journal of Business & Economic Statistics 10(3), 251–270.

Examples

set.seed(11)
y <- cumsum(rnorm(60)) + c(rep(0, 30), rep(2.5, 30))
Zaurts(y, "intercept", 0)$statistic
#> [1] -2.738865