Skip to content
All library documents

Frequency-Domain Tests for Stationarity in Regression Data

Article Quant Q&A · Author: Barnaby

Summary

The document explains strict, second-order, and first-order stationarity, then compares two frequency-domain tests used to assess time variation: the Priestley–Subba Rao test, which compares spectral density estimates across time and frequency, and a wavelet test based on whether estimated coefficients vary over time. The author asks whether sequentially transforming price data, removing trend-like and autoregressive components, and retesting until stationarity is found is a sound approach when using regression methods beyond ARIMA.

The example constructs log differences from a price series and applies both tests to power-of-two-length segments. The reported PSR result suggests that many rounds of differencing would be needed, prompting questions about the test’s assumptions and possible long-memory or fractional-integration effects. The document does not resolve these questions or provide a validated procedure. Its code also has apparent selection and data-entry issues, and stationarity-test conclusions depend on the tested series, test assumptions, and sample length; passing a test alone does not establish that a regression is meaningful or free of spurious relationships.

Key ideas

  • Strict stationarity concerns the full joint distribution, while weaker definitions constrain moments such as the mean, variance, and autocovariance.
  • The document contrasts a spectral homogeneity test with a wavelet-based test for time-varying stationarity.
  • It asks whether iterative detrending, differencing, and autoregressive filtering can make data suitable for regression.
  • Disagreement between tests may reflect assumptions, sample limitations, or unmodeled dependence, and the document leaves this issue open.
  • A stationarity test result by itself does not establish that a regression is valid.

Tags

Full text
# Stationarity tests in the frequency domain for regression


# Stationarity tests in the frequency domain for regression












Strict stationarity is the strongest form of stationarity. It means that the joint statistical distribution of any collection of the time series variates never depends on time. So, the mean, variance and any moment of any variate is the same whichever variate you choose. However, for day to day use strict stationarity is too strict. Hence, the following weaker definition is often used instead. Stationarity of order 2 which includes a constant mean, a constant variance and an autocovariance that does not depend on time. (second-order stationary or stationary of order 2). A weaker form of stationarity that is first-order stationary which means that the mean is a constant function of time, time-varying means to obtain one which is first-order stationary.

I have the following time series which I would like to make stationary of order 2. I do not use ARIMA but use multiple methods of regression but linear and non linear in parametric and non parametric. I have read that using traditional stationarity tests such us PP.test (Phillips-Perron Unit Root Test), kpss test or Augmented Dickey-Fuller Test are not adequate if you are to perform regression via other methods than ARIMA (due that in arima the orders are fixed and that no other factors that produce non stationarity are included) and that stationarity tests in the frequency domain instead are more adequate. (Correct me if this is wrong)

For this purpose I use two tests in the frequency domain as to compare results: The Priestley-Subba Rao (PSR) test for nonstationarity (fractal package). Based upon examining how homogeneous a set of spectral density function (SDF) estimates are across time, across frequency, or both. On another hand a unit root test where the wavelet looks at a quantity called βj(t) which is closely related to a wavelet-based time-varying spectrum of the time series (it is a linear transform of the evolutionary wavelet spectrum of the locally stationary wavelet processes of Nason, von Sachs and Kroisandt, 2000). So we see if βj(t) function varies over time or is constant by looking at Haar wavelet coefficients of the estimate so is stationary if all haar coefficients are zero (locits package).

I have the following questions.

- If I attempt to make a series stationary by taking log price diferences, then remove MA by loess regression and remove AR parts with an AR model and at each step measure if the series has become stationary with the wavelet test and stop when it has. Is this procedure correct?

- In this specific example the Priestley-Subba Rao (PSR) Test does not show stationarity. (In fact I would need to diferenciate the series over times 26 times as per this test to obtain stationary). I am wondering if this high order is correct or is due to the Priestley-Subba Rao (PSR) Gausian distribution assumption or that other long range dependences, fractional integration or definite noise yield this result.

- How valid would a regression be in regards to potential spurious regression if we would perform point 1 and obtain stationarity at unit root 2. I have read that if higher order unit root or other non stationary producing factors such us long range dependence, fractional integration, pink noise are ignored, the system dynamics become systematic errors in regression equations and thus regression will have no meaning (e.g. changes in variance invalidating second-order stationarity)

The locits package works only with R 3.03 version

```
x<-c(-0.0870,0.0028,0.1866,0.0481,-0.3433,0.4039,0.0309,0.0789,0.4941,-0.0610,0.0951,-0.0109,-0.0001,0.0789, -0.0737, -0.0061, -0.0979,  0.3175, 0.4067,  0.0541, -0.1053, -0.0521,  0.0749, -0.0792,  0.0354,  0.1119, -0.0666,  0.2364,  0.1321,  0.0964,  0.1444,  0.5995, -0.2096 -0.1268,  0.1104, -0.1110, -0.0618, -0.0561,  0.0893,  0.9499,  0.3015,  0.1437,  0.3108, -0.0902, -0.1477,  0.0507, -0.0204,  0.2277,  0.1205,  0.0038, -0.0328, -0.0273,  0.1126,  0.0530, 0.0461,  0.1380,  0.0368, -0.0082,  0.0086,  0.0318,  0.0106,  0.0647, 0.0157,  0.0225, -0.0934,  0.0527,  0.0725,  0.0285,  0.0042,  0.1048,  0.0117,  0.1097, -0.0013,  0.0032, -0.0589, -0.0226, -0.0728, -0.0139,  0.0335,  0.1481,  0.0340, -0.0522,  0.0309, -0.0775, -0.0341, -0.0009,  0.1237, -0.1738,  0.0141,  0.0857, 0.1048, -0.0120, 0.0745,  0.1385,  0.0722,  0.0314, -0.0292, -0.0712,  0.0045,  0.0351, -0.0230,  0.0707, -0.0283, -0.0227, -0.0152, -0.0057,  0.0058, -0.0259, 0.0329, -0.0607,  0.0037,  0.0132, -0.0058,  0.0407, -0.0485, -0.0048,  0.0166,  0.0046, -0.0041,  0.0301,  0.0060,  0.0220, -0.0239,  0.0022,  0.0399,  0.0550, 0.1607, -0.0451,  0.0050,  0.0128,  0.0510, -0.0361,  0.0502,  0.0304 -0.0405, -0.0264,  0.0188, -0.0244,  0.0327, -0.0271,  0.0202, -0.0128,  0.0099,  0.0238, 0.0016,  0.0103,  0.1093,  0.0507,  0.0026, 0.0084, -0.0005, -0.0088, -0.0371,  0.0233, -0.0171, -0.0041, -0.0058, -0.0219,  0.0126,  0.0188, -0.0403,  0.0054, 0.0034,  0.0022, -0.0050, -0.0277, -0.0567,  0.0233,  0.0081,  0.0322,  0.0013,  0.0908,  0.0187)

# I log transform prices and take differences (so I obtain ratios having stabilized the variance a little) 

z2c <- cumprod(1+x)
z1log <- log(z2c)
z2log<-diff(z1log)

# As the Wavelet stationarity test requires power of two series I create segments of data of the required length

ñ1<-z2log[((length(z2log) -128)+1):length(z2log)]
ñ2<- z2log[((length(z2log) -256)+1):length(z2log)]
o<-if(z2log >128 || z2log >256) ñ2 else ñ1

# Perform the two mentioned tests 

# Priestley-Subba Rao (PSR) Test 
library(fractal)
SR <- attributes(stationarity(o, n.taper=5,n.block=max(c(2,floor(logb(length(o),base=2)))),significance=0.05,center=TRUE,recenter=FALSE))$stationarity[[1]]

#Wavelet Spectrum Test
 library(locits)
WS <- hwtos2(o)

SR
WS
```

Many thanks

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.