Augmented Dickey-Fuller (ADF) Test Calculator
Free online unit root and stationarity test for time series data — get the ADF statistic, p-value, critical values, and four publication-ready charts in one click.
📥 Data Input
| # | Value |
|---|
🔬 Technical Notes & Assumptions
Show ADF formulas
ADF regression (constant + trend form):
Δyₜ = α + β·t + γ·yₜ₋₁ + Σ(δᵢ · Δyₜ₋ᵢ) + εₜ for i = 1 … p
Test statistic:
ADF = γ̂ / SE(γ̂)
Hypotheses:
H₀: γ = 0 (unit root present → series is non-stationary)
H₁: γ < 0 (no unit root → series is stationary)
Where:
- yₜ = the time series value at time t
- Δyₜ = yₜ − yₜ₋₁ (first difference)
- α = constant (intercept)
- β = coefficient on the linear trend t
- γ = coefficient on the lagged level yₜ₋₁ (the unit-root parameter)
- δᵢ = lag coefficients on Δyₜ₋ᵢ that absorb residual autocorrelation
- p = number of lag differences (Schwert rule, AIC, or BIC)
- εₜ = white-noise error
Critical values (MacKinnon, 2010 — for the constant-only model and the constant+trend model) are computed by response-surface formulae built into this calculator.
Assumptions
- Sufficient sample size — n ≥ 30, ideally n ≥ 50 for reliable critical values
- Errors approximately white noise — verified post-hoc with a Ljung-Box test on residuals
- Correct lag specification — too few lags inflates Type I error; too many reduces power
- Correct deterministic terms — including a trend when one is not present reduces power; omitting a needed trend biases the test
- No structural breaks — ADF has very low power when a single trend break is present (use Zivot-Andrews instead)
📖 How to Use This Tool — Step-by-Step Guide
Show 10-step walkthrough
STEP 1 — Enter your data. Choose Paste/Type, Upload, or Manual. The default cluster comes pre-loaded with a random-walk sample. Format: comma-separated values like 52, 48, 55, 61, 47, ...
STEP 2 — Pick a sample dataset. Use the "Sample Dataset" dropdown to load Random Walk, White Noise, Trending, AR(1), or Mixed. Each illustrates a different stationarity pattern.
STEP 3 — Configure regression form. 'Constant only' for series with non-zero mean. 'Constant+trend' for trended series. 'No constant, no trend' for de-meaned series.
STEP 4 — Set the lag length. Default is the Schwert rule. Switch to AIC/BIC for data-driven selection or 'Manual' for full control.
STEP 5 — Run the analysis. Click "▶ Run ADF Test". Each cluster is tested independently and rendered as its own results card.
STEP 6 — Read the summary cards. Green = stationary (reject H₀). Red = non-stationary (fail to reject H₀). The number under "p-value" tells you how confident you can be.
STEP 7 — Examine all four visualizations. Time series, ACF, PACF, and first difference together give you visual confirmation of the test result.
STEP 8 — Check assumptions. Ensure n ≥ 30 and that the residuals look like white noise (no slow ACF decay).
STEP 9 — Read the detailed interpretation. Five paragraphs explain what was found, how strong the evidence is, and what the practical limitations are.
STEP 10 — Export. Use Download Doc for editing, Download PDF for submission, or Copy Summary for quick sharing.
❓ Frequently Asked Questions
Q1. What is the Augmented Dickey-Fuller (ADF) test, and when should I use it?
The ADF test is a unit-root test that asks whether a time series is stationary (mean and variance constant over time) or non-stationary. Use it before fitting any ARMA/ARIMA model, before regressing one time series on another (to avoid spurious regressions), and whenever you need to confirm that shocks decay rather than persist forever. Typical examples: GDP, stock prices, temperature anomalies, and population counts.
Q2. What is a p-value in the ADF test, and how do I interpret it?
The ADF p-value is the probability of obtaining an ADF statistic as negative as the observed one if a unit root truly exists in the data. A small p-value (e.g., p = 0.02) means: "If the series really had a unit root, we'd see a result this extreme only 2% of the time" — so we reject H₀ and conclude stationarity. The p-value is not the probability that H₀ is true.
Q3. Does statistical significance equal practical importance for ADF?
Largely yes — but with one caveat. Stationarity is a binary property the model needs, so a statistically significant rejection of H₀ is practically meaningful. However, a near-significant result (p ≈ 0.05) on a series with a half-life of decades may be practically non-stationary for forecasting. Always look at how negative the ADF statistic is, not just the p-value.
Q4. What is the "effect size" for the ADF test, and how do I interpret it?
The ADF test does not have a Cohen's-d-style effect size. Instead, the magnitude of γ̂ (the lagged-level coefficient) and the half-life of shocks (≈ ln(0.5)/ln(1+γ̂)) tell you how persistent the series is. A γ̂ near zero with a half-life of 100+ periods is essentially a unit root even when p < 0.05.
Q5. What assumptions does the ADF test require, and what if my data violate them?
The ADF test assumes (i) sufficient n (≥ 30), (ii) residuals are approximately white noise, (iii) the lag order p is correctly specified, and (iv) no structural breaks. If lags are wrong, residuals show autocorrelation — increase p. If breaks exist, use the Zivot-Andrews or Phillips-Perron test instead.
Q6. How large a sample do I need for ADF to be reliable?
Minimum n = 30, recommended n ≥ 50, ideal n ≥ 100. With fewer than 30 observations the test has very low power and the asymptotic critical values are inaccurate. For samples below 25, prefer the small-sample bootstrap version.
Q7. What is the difference between a one-sided and two-sided ADF test?
The ADF test is inherently one-sided (left-tailed). The alternative hypothesis is γ < 0 — i.e., the lagged-level coefficient is significantly negative. There is no "two-sided ADF". Critical values are negative (e.g., −2.86 at 5% for the constant-only model with large n).
Q8. How do I report ADF results in APA 7th edition format?
Report the test statistic, lag order, p-value, and which critical-value threshold was crossed. Example: "An augmented Dickey–Fuller test (constant + trend, lag = 4) rejected the unit-root null hypothesis, ADF = −4.21, p = .002, exceeding the 1% critical value of −3.96; the GDP series is therefore trend-stationary."
Q9. Can I use this calculator for my published research or thesis?
This calculator gives results that match Python (statsmodels.adfuller) and R (tseries::adf.test) for standard cases. For a peer-reviewed manuscript or PhD thesis we recommend cross-checking with one of those packages and citing Dickey & Fuller (1979) and Said & Dickey (1984). The tool itself can be cited as "Stats Unlock. (2025). Augmented Dickey-Fuller test calculator. https://statsunlock.com/tools/augmented-dickey-fuller-test-calculator".
Q10. What should I do if the ADF test fails to reject H₀ (non-stationary result)?
(1) Difference the series once and re-test. Most macro-economic and ecological series become stationary after first differencing — they are I(1). (2) If still non-stationary, difference again to test for I(2). (3) Confirm with a KPSS test (whose null is stationarity); if both ADF says "non-stationary" and KPSS says "non-stationary", the conclusion is robust. (4) Consider whether a structural-break-aware test (Zivot-Andrews) is more appropriate.
📚 References
The Augmented Dickey-Fuller test is one of the most widely used unit root tests for time series stationarity in econometrics, ecology, and applied statistics. The references below cover the original derivation, the augmented version with lags, MacKinnon's critical-value response surfaces, and standard textbook treatments — all useful for citing this calculator's results in your research.
- Dickey, D. A., & Fuller, W. A. (1979). Distribution of the estimators for autoregressive time series with a unit root. Journal of the American Statistical Association, 74(366), 427–431. https://doi.org/10.1080/01621459.1979.10482531
- Said, S. E., & Dickey, D. A. (1984). Testing for unit roots in autoregressive-moving average models of unknown order. Biometrika, 71(3), 599–607. https://doi.org/10.1093/biomet/71.3.599
- MacKinnon, J. G. (1996). Numerical distribution functions for unit root and cointegration tests. Journal of Applied Econometrics, 11(6), 601–618. https://doi.org/10.1002/(SICI)1099-1255(199611)11:6<601::AID-JAE417>3.0.CO;2-T
- MacKinnon, J. G. (2010). Critical values for cointegration tests (Working Paper No. 1227). Queen's Economics Department. https://ideas.repec.org/p/qed/wpaper/1227.html
- Hamilton, J. D. (1994). Time series analysis. Princeton University Press. https://press.princeton.edu/books/hardcover/9780691042893/time-series-analysis
- Enders, W. (2014). Applied econometric time series (4th ed.). Wiley. https://www.wiley.com/en-us/Applied+Econometric+Time+Series%2C+4th+Edition-p-9781118808566
- Schwert, G. W. (1989). Tests for unit roots: A Monte Carlo investigation. Journal of Business & Economic Statistics, 7(2), 147–159. https://doi.org/10.1080/07350015.1989.10509723
- Phillips, P. C. B., & Perron, P. (1988). Testing for a unit root in time series regression. Biometrika, 75(2), 335–346. https://doi.org/10.1093/biomet/75.2.335
- Kwiatkowski, D., Phillips, P. C. B., Schmidt, P., & Shin, Y. (1992). Testing the null hypothesis of stationarity against the alternative of a unit root. Journal of Econometrics, 54(1–3), 159–178. https://doi.org/10.1016/0304-4076(92)90104-Y
- 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. https://doi.org/10.1080/07350015.1992.10509904
- Box, G. E. P., Jenkins, G. M., Reinsel, G. C., & Ljung, G. M. (2015). Time series analysis: Forecasting and control (5th ed.). Wiley. https://www.wiley.com/en-us/Time+Series+Analysis%3A+Forecasting+and+Control%2C+5th+Edition-p-9781118675021
- Hyndman, R. J., & Athanasopoulos, G. (2021). Forecasting: Principles and practice (3rd ed.). OTexts. https://otexts.com/fpp3/
- Cromwell, J. B., Labys, W. C., & Terraza, M. (1994). Univariate tests for time series models. SAGE. https://sk.sagepub.com/book/mono/univariate-tests-for-time-series-models
- Seabold, S., & Perktold, J. (2010). statsmodels: Econometric and statistical modeling with Python. Proceedings of the 9th Python in Science Conference, 92–96. https://doi.org/10.25080/Majora-92bf1922-011
- R Core Team. (2024). R: A language and environment for statistical computing. R Foundation for Statistical Computing. https://www.r-project.org/









