Skip to content

Stationarity Test

Diagnostic — instantiates Survival-Conditioned Persistence Forecasting

Tests whether the process that generated past lifetimes is still the same process, the precondition for treating survival so far as evidence about survival ahead.

The whole archetype rests on one silent assumption: that extrapolating past persistence into the future is legitimate because the lifetime-generating process is stationary — its statistical properties are not drifting. Stationarity Test turns that assumption into an explicit, falsifiable claim and returns a verdict on it, together with the threshold at which drift is declared severe enough to void the forecast. Its defining feature is that it estimates nothing about lifetimes at all — it estimates whether you are allowed to. It is the admissibility gate that stands in front of every survival curve and reference class the appraisal wants to trust.

Example

A subscription analytics team has a customer-relationship survival curve fit on cohorts from 2019–2022 and wants to forecast the 2026 cohort's persistence. Before trusting the old curve, they run a stationarity test on the monthly churn-hazard series: is the process that produced past retention stable, or did it shift? An augmented Dickey–Fuller-style test, paired with a structural-break check, flags a change around a 2024 pricing overhaul and a competitor's launch — the pre-2024 process no longer governs. The output is not a new forecast; it is a red light. The old curve is inadmissible for the 2026 cohort until refit on post-change data. And because the team set the criterion for "regime changed" in advance, the call is made by the threshold, not by whoever most wants the old numbers to still be valid.

How it works

  • State the assumption as a hypothesis — write down "the process is stationary" as something a test can actually reject.
  • Apply a formal test — unit-root or structural-break tests on the hazard or lifetime series, chosen for the kind of drift that would matter.
  • Pre-commit the criterion — fix the threshold that declares a regime change before looking at the result.
  • Return a verdict, not a forecast — admissible or inadmissible; it licenses or blocks the extrapolation, it doesn't produce one.
  • Hand off location — leave when the break occurred to change-point tools; this mechanism answers whether.

Tuning parameters

  • Test choice — unit-root vs. structural-break tests see different failures; the test must match the kind of non-stationarity that would break this forecast.
  • Significance threshold / criterion — how strong the evidence of drift must be before the forecast is voided; strict thresholds keep convenient models alive longer.
  • Window tested — whole history vs. recent past; a long window can drown a recent break, a short one can cry wolf.
  • Series tested — raw hazard, a transform, or a specific subgroup's series.
  • Action on non-rejection — proceed as-is, or proceed with widened bands; a "pass" is weak evidence and may warrant caution rather than confidence.

When it helps, and when it misleads

Its strength is that it guards the assumption everything else depends on, stopping a team from extrapolating a dead regime, and — because the criterion is pre-committed — it cannot be argued away after the fact by whoever prefers the old curve.

Its sharpest limitation is asymmetry of evidence: these tests can reject stationarity but never confirm it, and with short series they have low power, so a "pass" often just means too little data to see the drift.[1] Each test is blind to some kinds of change, and a single global test misses local breaks — which is why it pairs with change-point detection rather than replacing it. The classic misuse is running it backwards: fishing for the test, window, or threshold that fails to reject, so the comfortable old model survives. The discipline is to treat non-rejection as "not disproven," never "confirmed," to pre-register the test and threshold, and to keep it in the update loop rather than running it once at the start.

How it implements the components

This test owns the archetype's validity-of-extrapolation side — the components that decide whether the past is admissible as evidence:

  • stationarity_assumption — it turns this silent, load-bearing assumption into an explicit, tested hypothesis; that is its entire reason to exist.
  • regime_change_criterion — on rejection it supplies the pre-committed threshold that formally declares "the past no longer applies."

It does not locate when the break happened — that is Change-Point Detection — nor compare successive windows descriptively, which is Rolling Window Comparison; it delivers the yes/no admissibility verdict those refine.

  • Instantiates: Survival-Conditioned Persistence Forecasting — it is the gate that decides whether any survival estimate may be extrapolated at all.
  • Sibling mechanisms: Change-Point Detection · Survival or Time-to-Event Analysis · Rolling Window Comparison · Forecast Backtesting · Reference-Class Forecasting · Historical or Holdout Coverage Backtest · Periodic Durability Inspection · Age-Conditioned Remaining-Life Table · Censoring and Left-Truncation Audit · Hazard-Shape Diagnostic · Lifetime Distribution Comparison · Lindy Decision-Horizon Review · Non-Aging Eligibility Review

Notes

A stationarity test can only ever reject, never confirm. A clean result licenses the forecast provisionally, not permanently — which is exactly why it belongs inside the update loop, re-run as new data lands, rather than run once at the outset and forgotten. Treating a single early "pass" as a lasting guarantee is how a broken regime goes unnoticed.

References

[1] Unit-root tests such as the augmented Dickey–Fuller test are well known to have low power on short series: they frequently fail to reject non-stationarity even when it is present, so a non-rejection is weak evidence of stationarity rather than proof of it.