I have a large search space of ~600 time series, where I am constantly scanning for stationarity (I have a "rolling window" for all the time series where I run a stationarity test at every time point to see if the series has reached stationarity or not). This means I'm running the ADF test probably thousands of times.

Note: My threshold for stationarity is pretty loose in my context/problem. I don't need it to be perfect, just "pretty close".

I am aware of the broad issue with this (repeatedly running hypothesis tests), but let's ignore that aspect for the moment unless it becomes relevant later.

The central issues:

  1. The ADF test is relatively slow to run (so my code takes a LONG time to complete)
  2. I have read that the ADF test (along with other similar tests) has all kinds of problems in the form of low power and false positives.

So it seems like I'm spending a lot of computational effort on a test that might not even be that good.

I've tried to come up with heuristics to determine the stationarity - things like splitting the time series in half, taking the medians of the left and right side, and if the medians are pretty close to the mean of the whole series, I say "it's pretty stationary". This is obviously pretty crude.

Are there any better statistical tests, or simple heuristics that you know of, to overcome the issues of the ADF test?

  • 1
    $\begingroup$ To be precise, the ADF test is a unit-root test, not a stationarity test. I also wonder where you found criticism of the ADF test regarding false positives. You might also want to think about online algorithms for running regression-based tests on consecutive rolling windows. They could save you a significant amount of computational time. $\endgroup$ Apr 4, 2022 at 16:48
  • $\begingroup$ @RichardHardy Fair point, I suppose "low power" and "false positives" are somewhat mutually exclusive. But I have been reading blogs about my particular application, and there were warnings about all sorts of error types with this test. Could you elaborate a bit on what you mean by "online algorithms for running regression-based tests on rolling windows"? It's interesting you mention that, because my time series ARE actually time-series residuals from a linear regression. Could you give me any keywords or pointers on what to look for? $\endgroup$ Apr 4, 2022 at 16:55
  • 1
    $\begingroup$ If you need to estimate a regression repeatedly in rolling windows, there are more efficient ways than doing it separately in each window. "Online learning" + "linear regression" might be the keywords to get you started. Or see these threads, e.g. this old one. $\endgroup$ Apr 4, 2022 at 17:03


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.