Use ARIMA and seasonal decomposition to forecast employee attrition trends. A practical guide to data prep, model selection, and workforce planning.
Most HR teams discover attrition trends in the rearview mirror. By the time quarterly reports reveal a spike in departures, the damage is done — institutional knowledge has walked out the door, remaining team members are overburdened, and the cost of backfilling has already hit the budget.
What if you could see attrition trends three, six, or even twelve months ahead? Time series analysis gives you exactly that capability. By treating your monthly or quarterly attrition rate as a sequence of data points over time, you can decompose historical patterns, identify seasonal rhythms, and generate statistically grounded forecasts that transform workforce planning from guesswork into strategy.
This guide walks you through every step — from preparing your data to selecting the right model to interpreting forecasts your leadership team can act on.
A time series is simply a sequence of observations recorded at regular intervals. In HR, this could be monthly attrition rates, quarterly headcount, weekly application volumes, or annual engagement scores. Time series analysis examines these sequences to identify three core components:
The long-term direction of your data. Is attrition gradually increasing year over year? Has it plateaued? A trend tells you whether underlying conditions are improving or deteriorating, independent of short-term fluctuations.
Repeating patterns tied to calendar periods. Many organizations see attrition spikes in January (post-bonus departures), June (mid-year reviews triggering exits), and September (back-to-school career transitions). Seasonal patterns are predictable once identified, and they are critical for planning hiring cycles.
The random variation left after removing trend and seasonality. Some months are simply higher or lower than expected for no systematic reason. A good model captures trend and seasonality while accepting that residuals will always exist.
Pull termination data from your HRIS and aggregate it into a consistent time interval. Monthly attrition rate works best for most organizations — it provides enough data points for modeling without being so granular that noise dominates.
Calculate monthly attrition rate as:
Attrition Rate = (Number of Separations in Month) / (Average Headcount in Month) x 100
Time series models need sufficient history to detect patterns. The minimum viable dataset is 24 months of consecutive observations. For models that capture annual seasonality, 36-48 months is ideal. If your organization is younger than two years, consider supplementing with industry benchmark data or using simpler forecasting methods until you accumulate enough internal history.
If a month is missing data due to system migration or acquisition integration, interpolate using the average of surrounding months rather than leaving a gap. Flag extraordinary events — a mass layoff, an acquisition, a pandemic — so you can decide whether to include or exclude those periods from your training data. Including anomalies without adjustment will distort your model's understanding of "normal" patterns.
Most time series models assume stationarity — that the statistical properties of the series (mean, variance) do not change over time. Apply the Augmented Dickey-Fuller (ADF) test to check:
from statsmodels.tsa.stattools import adfuller
result = adfuller(attrition_series)
print(f'ADF Statistic: {result[0]}')
print(f'p-value: {result[1]}')
If the p-value is above 0.05, the series is non-stationary. Apply differencing — subtracting each observation from the previous one — to remove the trend. You may need first-order differencing (d=1) or occasionally second-order (d=2).
Before jumping into forecasting, decompose your attrition series to visually understand its components. This step is both analytical and communicative — the decomposition plot is one of the most effective visuals for explaining attrition patterns to leadership.
from statsmodels.tsa.seasonal import seasonal_decompose
decomposition = seasonal_decompose(attrition_series, model='additive', period=12)
decomposition.plot()
Use an additive model when seasonal variation is roughly constant in magnitude. Use a multiplicative model when seasonal swings grow proportionally with the trend (e.g., a 5% seasonal spike on a higher base creates larger absolute fluctuations).
ARIMA is the workhorse of time series forecasting. It combines three components:
Use the auto_arima function from the pmdarima library to systematically test parameter combinations:
import pmdarima as pm
model = pm.auto_arima(
attrition_series,
seasonal=True,
m=12,
stepwise=True,
suppress_warnings=True,
error_action='ignore'
)
print(model.summary())
Setting seasonal=True with m=12 (monthly data with annual seasonality) fits a SARIMA model — ARIMA with an additional seasonal component. This is usually the right choice for attrition data because employment decisions follow annual rhythms.
If your data has clear trend and seasonality but you want a simpler, more intuitive model, Holt-Winters exponential smoothing is an excellent alternative. It assigns exponentially decreasing weights to older observations, naturally emphasizing recent patterns:
from statsmodels.tsa.holtwinters import ExponentialSmoothing
model = ExponentialSmoothing(
attrition_series,
trend='add',
seasonal='add',
seasonal_periods=12
).fit()
Fit both ARIMA and ETS on your training data, forecast on a held-out test period (the last 6-12 months), and compare Mean Absolute Error (MAE) and Root Mean Squared Error (RMSE). The model with lower error on the test set wins. In practice, SARIMA often edges out ETS for attrition data because of its ability to capture autocorrelation patterns, but simplicity has its own value when communicating with stakeholders.
Generate predictions for the next 6-12 months along with confidence intervals:
forecast = model.predict(n_periods=12, return_conf_int=True)
forecast_values = forecast[0]
confidence_intervals = forecast[1]
Confidence intervals are critical. A point forecast of "4.2% attrition in March" is less useful than "4.2% attrition in March, with a 95% confidence interval of 3.1% to 5.3%." The interval communicates uncertainty, which helps leadership plan for scenarios rather than a single number.
Before trusting your model with future decisions, validate it against historical periods the model has not seen. Use a rolling-origin cross-validation approach: train on months 1-24, forecast months 25-30, measure error. Then train on months 1-25, forecast months 26-31, and so on. Average the errors across all folds to get a robust estimate of forecast accuracy.
Examine the residuals of your fitted model. They should be approximately normally distributed with no remaining autocorrelation. Plot the residual autocorrelation function (ACF) — if significant spikes remain, your model has not fully captured the data's structure and needs parameter adjustment.
A forecast is only valuable when it changes decisions. Here is how to operationalize your attrition predictions.
If the model forecasts a 15% increase in attrition for Q2, start building your candidate pipeline in Q1. Coordinate with your applicant tracking system to open requisitions early, engage passive candidates, and ensure interview panels are available. Being three months ahead of a turnover spike is the difference between seamless transitions and months of vacant seats.
When decomposition reveals consistent January attrition spikes tied to post-bonus exits, schedule stay interviews and career conversations in November. Use targeted engagement surveys in the weeks before historically risky periods to surface dissatisfaction while you still have time to address it.
Translate attrition rate forecasts into headcount impact. If you have 500 employees and forecast 5% monthly attrition for three consecutive months, that is roughly 75 departures before replacement hiring catches up. Pair this with average time-to-fill and cost-per-hire to build a realistic budget request that finance teams respect because it is grounded in data, not gut feeling.
Use confidence intervals to model best-case, expected, and worst-case scenarios. If the 95% upper bound suggests attrition could reach 7% in a given quarter, build a contingency plan for that scenario — cross-training programs, contractor relationships, and accelerated onboarding processes.
Building a time series model in a notebook is the analytical foundation. Keeping it current, integrating it with live workforce data, and triggering the right interventions at the right time requires infrastructure.
PeoplePilot Analytics automates the data pipeline — pulling attrition events from your HRIS in real time, recalculating forecasts as new data arrives, and surfacing trend shifts in dashboards your leadership team actually checks. When a forecast suggests a coming spike, you can immediately drill into which departments, roles, or tenure bands are driving the projection.
Combine forecasting with PeoplePilot Surveys to validate whether predicted attrition drivers match current employee sentiment, and use PeoplePilot Learning to proactively address skill-gap and growth-opportunity concerns that often underlie seasonal attrition patterns.
A minimum of 24 consecutive months is necessary to detect basic trends. For models that capture annual seasonality (like SARIMA), 36-48 months is strongly recommended. With fewer than 24 months, simpler methods like moving averages or exponential smoothing with short seasonal periods are more appropriate than full ARIMA modeling.
Time series analysis works at the aggregate level — predicting attrition rates for the organization, department, or role group over time. For individual-level risk scoring, use classification models like logistic regression or random forests. The most effective approach combines both: time series for macro workforce planning and classification for targeted individual interventions.
Flag these events as intervention variables (also called exogenous regressors) in your ARIMA model using the ARIMAX extension. Alternatively, exclude the affected months from training and note them as anomalies. The key is to prevent extraordinary events from distorting your model's understanding of organic attrition patterns while still acknowledging they happened.
Retrain monthly if you are generating monthly forecasts, or quarterly at minimum. Each retrain incorporates the latest attrition data, which helps the model adapt to shifting workforce dynamics. Monitor forecast error over time — if accuracy degrades significantly between retrains, increase the frequency or investigate whether a structural change in your workforce has invalidated the model's assumptions.