I'm working with some time-series data that is clearly non stationary. At first glance, it looks like there are 3 sections of my data. Within each section, the data have similar mean and variance, but between each section the variance of the data is quite different.

Is there a well known algorithm to detect and label different sections of stationarity in time-series data?

  • 1
    $\begingroup$ If you have reason to believe there is abrupt regime switching, you can apply change detection to segment the time series, then estimate the model parameters (mean, variance) of each segment so that you can determine the start of the next segment. Welcome to the site! $\endgroup$
    – Emre
    Commented Apr 23, 2018 at 17:03

1 Answer 1


I hear my business forecasting professor in my head right now, suggesting the Cumulative Sum (CUSUM) Control Chart for this. Basically, this is a method borrowed from control/logistics studies that tracks a value over time. If a quantity is stable over time, then the series is "in control", and it falls "out of control" when the quantity starts to deviate systematically (that is, it stops looking like noise).

In the context of time series, you might compute a windowed stationarity metric from $t_{(0)}$ to $t_{(i)}$, then $t_{(i+1)}$ and so on until $t_{(n)}$, and create a CUSUM chart to watch for when the series seems to break stationarity. The same process might be applied to tracking ARIMA model parameters over time.

Some of this thinking has already been done, of course, and it seems that R Bloggers got a relatively nice result pretty quickly by using the changepoint package. You can dig into the details in the links below.

I applied this method to see if health insurance membership changed drastically across the implementation of the Affordable Care Act in the USA. This would answer the question:

If we had models built on past membership data in 2012, would we have given an acceptable forecast for post-ACA membership?



Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.