Choosing and Fitting an ARMA Model

Module 4 · Model selection and maximum likelihood

Gary Cornwall

Econ 6376 · The George Washington University

Module 4

Last week’s fingerprint table has one unresolved row

Process ACF PACF What the print identifies
AR(pp) tails off cuts off at pp the order pp
MA(qq) cuts off at qq tails off the order qq
ARMA(p,qp,q) tails off tails off the class, not the orders

For a pure AR or MA, one fingerprint ends sharply. For an ARMA, neither does.

Module 3 can name the class. It cannot name the orders.

A known ARMA(1,1) still refuses to identify itself

The DGP is ours: ϕ=0.6\phi=0.6, θ=0.4\theta=0.4, T=500T=500. Yet both sample fingerprints tail off. Nothing in the print announces (1,1)(1,1).

Deduction got us this far. It cannot get us further.

Modules 2 and 3 ran on deduction: eliminate the impossible, and whatever remains is the truth. That worked because the answer was in the room. A series is stationary or it is not. A PACF cuts off at lag 2 or it does not.

Module 4 is where that stops.

  • AIC does not assume the true model is in your candidate set.
  • It ranks approximations by how wrong each one is expected to be.
  • There may be no true model here — only designs that meet spec at different cost.

This is Sherlock Holmes’s last appearance in the course. From here on the question is not which one is right but which one meets spec, and at what price.

Sidney Paget’s Holmes, signed and dated 1904.

Why the model is not unique

The unresolved row has a name: isomorphism

A stationary AR(pp) is an MA(\infty). An invertible MA(qq) is an AR(\infty).

yt=α1ϕ1+i=0ϕ1iϵtiy_t=\frac{\alpha}{1-\phi_1}+\sum_{i=0}^{\infty}\phi_1^{\,i}\epsilon_{t-i}

ϵt=Θ(L)1yt=k=0πkytk\epsilon_t=\Theta(L)^{-1}y_t=\sum_{k=0}^{\infty}\pi_k\,y_{t-k}

Both representations are effectively infinite-order, so neither correlogram has a finite lag at which it must go to zero. That is why the ARMA row tails off twice.

Module 3 §3.3.6 promised this would come due. The correlogram trap is the symptom; isomorphism is the cause.

Compression is the point, not the bug

If a small finite ARMA can stand in for infinite-order dynamics, then the ARMA is a compact code for a process that would otherwise need infinitely many weights.

That is dimensionality reduction, and it is the whole reason we use these models.

Silicon Valley is about a compression algorithm, and its running joke is the Weissman score — one made-up number for ranking compression algorithms on a fit-versus-cost tradeoff. We are about to need exactly that.

Silicon Valley, HBO, 2014–2019.

Two coefficients buy what five AR lags buy

The criteria later today also count σ2\sigma^2, which adds one to every candidate alike and leaves the comparison intact.

At the same 2 coefficients, the ARMA(1,1) beats the AR(2) by 5.37 log-likelihood.

The AR ladder closes in slowly: still 1.66 behind at 3 coefficients, 0.16 behind at 4, and only at 5 does it clear the line at all.

And it never stops paying out. AR(10) — five times the coefficients — buys only 2.58 more than the two-coefficient ARMA. Every AR(pp) is nested inside AR(p+1p+1), so the maximized likelihood can only go up — never down, however many lags you add.

Likelihood alone can never tell you to stop. We need a price per parameter.

What an unpriced model looks like: keep adding until everything connects.

Model selection is a general problem

Step outside time series for a moment

How do you choose between these two?

yi=α+β1x1i+β2x2i+ϵiy_i = \alpha + \beta_1 x_{1i} + \beta_2 x_{2i} + \epsilon_i

yi=α+β1x1i+β2x2i+β3z1i+β4z2i+ϵiy_i = \alpha + \beta_1 x_{1i} + \beta_2 x_{2i} + \beta_3 z_{1i} + \beta_4 z_{2i} + \epsilon_i

No lags. No correlograms. No stationarity. Cross-sectional index ii, not tt.

You must have a principled way of choosing a model.

This is not a time series problem. Time series just makes it unavoidable.

Why R2R^2 cannot rank

R2=1i(yiŷi)2i(yiy)2R^2 = 1-\frac{\sum_i (y_i-\hat y_i)^2}{\sum_i (y_i-\bar y)^2}

Add a regressor and the residual sum of squares can only fall or stay flat. So R2R^2 weakly increases with every parameter you add, whatever that parameter is.

A number that goes up no matter what carries no information about whether the parameter earned its place.

R2R^2 is a descriptive statistic. It is not a selection rule.

Whose Line Is It Anyway? — everything’s made up and the points don’t matter.

Adjusted R2R^2: a correction, not a criterion

R2=1(1R2)N1Nk\bar R^2 = 1-(1-R^2)\frac{N-1}{N-k}

NN observations, kk estimated coefficients — intercept included.

Mills and Prasad put eight selection criteria on one page. Almost all of them reach a score by adding a penalty to a measure of fit. Adjusted R2R^2 is the exception — it appears as Theil’s RVC, and it multiplies:

RVC(k)=σ̂k2NNk\mathrm{RVC}(k)=\hat\sigma^2_k\cdot\frac{N}{N-k}

  • Its penalty is the loosest of the classical criteria, and it over-selects most aggressively: in their Table XV, 48 of 100 replications land above the true order, against AIC’s 27.
  • The inflation factor was reverse-engineered from a degrees-of-freedom correction, not derived from any risk objective — so it inherits neither AIC’s efficiency nor BIC’s consistency.

Friends don’t let friends use adjusted R2R^2.

Mills & Prasad (1992), Table I.

The log-likelihood, in the case you already know

Gaussian linear regression, NN observations:

L(𝛃,σ2𝐲,𝐗)=(2πσ2)N/2exp(12σ2i=1N(yi𝐱i𝛃)2)L(\boldsymbol\beta,\sigma^2\mid \mathbf y,\mathbf X) =(2\pi\sigma^2)^{-N/2}\exp\!\left(-\frac{1}{2\sigma^2}\sum_{i=1}^{N}(y_i-\mathbf x_i\boldsymbol\beta)^2\right)

(𝛃,σ2)=N2log(2π)N2log(σ2)12σ2i=1N(yi𝐱i𝛃)2\ell(\boldsymbol\beta,\sigma^2) =-\frac{N}{2}\log(2\pi)-\frac{N}{2}\log(\sigma^2)-\frac{1}{2\sigma^2}\sum_{i=1}^{N}(y_i-\mathbf x_i\boldsymbol\beta)^2

𝛃̂=(𝐗𝐗)1𝐗𝐲,σ̂2=1N(𝐲𝐗𝛃̂)(𝐲𝐗𝛃̂)\hat{\boldsymbol\beta}=(\mathbf X'\mathbf X)^{-1}\mathbf X'\mathbf y, \qquad \hat\sigma^2=\tfrac{1}{N}(\mathbf y-\mathbf X\hat{\boldsymbol\beta})'(\mathbf y-\mathbf X\hat{\boldsymbol\beta})

You already have 2-2\ell, in closed form, with no time series machinery at all. Everything that follows is a choice of what to add to it.

The family: likelihood + penalty

Every criterion in Core has the same two pieces

IC=2(𝛝̂)+penalty(k,T)\text{IC}=-2\ell(\hat{\boldsymbol\vartheta})+\text{penalty}(k,T)

The first term rewards a model that puts density at the fixed data. The second charges for how much flexibility it took to do that.

  • 2-2\ell is the deviance: bigger log-likelihood, smaller deviance, better fit.
  • The penalty stops the arms race. Without it, the biggest candidate always wins.
  • Smaller is better — and only among fits on the same data under the same likelihood convention.

There are many ways to choose a model. They mostly follow one pattern.

The family has many members and one shape

Classical plug-in likelihood criteria keep the same score shape:

HQIC=2(𝛝̂)+2kloglogT\mathrm{HQIC}=-2\ell(\hat{\boldsymbol\vartheta})+2k\log\log T

At T=200T=200, the per-parameter prices are AIC =2=2, HQIC 3.33\approx3.33, and BIC 5.30\approx5.30. HQIC sits between the two and reappears in VAR lag selection.

DIC and WAIC are different objects. They use posterior summaries and an effective complexity; they are not obtained by swapping another fixed-kk penalty into the formula above.

Reconciling the two written forms. Mills and Prasad’s Table I writes every criterion as ln(σ̂k2)+penalty/n\ln(\hat\sigma^2_k)+\text{penalty}/n; their nn is our sample size — NN cross-sectionally, TT in time series. For a Gaussian likelihood evaluated at the MLE σ̂2\hat\sigma^2, 2=Tln(σ̂2)+T(1+log2π)-2\ell = T\ln(\hat\sigma^2)+T(1+\log 2\pi) — a positive multiple of their score plus a constant shared by every candidate. The two forms rank identically.

We use AIC, AICc, and BIC in this course.

AIC charges a flat two units per parameter

AIC=2(𝛝̂)+2k\mathrm{AIC}=-2\ell(\hat{\boldsymbol\vartheta})+2k

In every information criterion on these slides, kk counts every estimated parameter, including σ2\sigma^2 and any process mean — the regression coefficient count from the adjusted R2R^2 digression, plus σ2\sigma^2. TT is the common estimation sample. “Smaller is better” compares only fits on the same data under the same likelihood convention.

AIC asks which candidate is expected to be the least-wrong approximation in a Kullback–Leibler risk sense. Its penalty does not grow with TT.

Consequences:

  • It is willing to keep terms that buy modest likelihood improvements.
  • Under suitable conditions, its asymptotic target is predictive efficiency.
  • In finite samples it often selects a model larger than the generating model.

BIC raises the price as the sample grows

BIC=2(𝛝̂)+klogT\mathrm{BIC}=-2\ell(\hat{\boldsymbol\vartheta})+k\log T

For T8T\ge8, logT>2\log T>2, so BIC penalizes each added parameter more than AIC.

Consequences:

  • It discards weakly supported terms more aggressively.
  • If the true finite-dimensional model is in the candidate set and regularity conditions hold, its selected order is consistent.
  • Its motivating story is a Bayesian approximation to marginal likelihood.

Enders calls the same criterion SBC.

AICc adds a short-sample surcharge

AICc=2(𝛝̂)+2k+2k(k+1)Tk1\mathrm{AICc}=-2\ell(\hat{\boldsymbol\vartheta})+2k +\frac{2k(k+1)}{T-k-1}

The correction vanishes as TT grows. It becomes sharp when the sample is short relative to the number of fitted parameters—and is undefined when Tk+1T\le k+1.

Course rule of thumb: prefer AICc to AIC when T/k<40T/k<40.

forecast::auto.arima() uses AICc by default.

Change the sample and watch the prices separate

Try T=10T=10, 4040, 200200, and 720720. Then bring TT down toward k+1k+1 to see why AICc refuses casual complexity in a short series.

The modeling goal chooses the primary score

Explanation / parsimony

Use BIC as the primary criterion when the scientific job is a compact structural description and the candidate set plausibly contains the true sparse model.

Ask: Which terms earn their place?

Prediction / forecasting

Use AIC or AICc as the primary criterion when the job is predictive approximation and modest extra flexibility can reduce future loss.

Ask: Which candidate is least wrong for prediction?

Choose before fitting. Block 4 will test the prediction claim on held-out data.

Choosing the primary criterion after seeing the winners reverses the logic.

Agreement strengthens the shortlist; disagreement reveals its price sensitivity

Scorecard Interpretation Next move
AIC, AICc, and BIC agree winner survives several penalty prices inspect diagnostics
AIC/AICc choose larger than BIC extra dynamics clear the light price only ask whether goal is prediction or parsimony
top models are within about 2 points ranking is weak, not decisive keep both through diagnostics

The professional default is to report all three. The disciplined choice is to declare which one answers the primary question.

Getting \ell when the model is not a regression

You have 2-2\ell for a regression. An ARMA is not one.

The closed forms two sections ago needed one thing: every regressor on the right-hand side is observed. Stack them into 𝐗\mathbf X, invert 𝐗𝐗\mathbf X'\mathbf X, done.

yt=α+ϕ1yt1++ϕpytpobserved+θ1ϵt1++θqϵtqnot observed+ϵty_t=\alpha+\underbrace{\phi_1 y_{t-1}+\cdots+\phi_p y_{t-p}}_{\text{observed}} +\underbrace{\theta_1\epsilon_{t-1}+\cdots+\theta_q\epsilon_{t-q}}_{\text{not observed}}+\epsilon_t

  • The AR block is fine — lagged yy’s are data.
  • The MA block is not. ϵtl\epsilon_{t-l} is an innovation, and you never see it.
  • And \ell for the whole vector 𝐲\mathbf y has to account for the fact that the observations are dependent, so it does not factor into TT independent pieces for free.

The fix: define the likelihood carefully, then let a numerical optimizer walk the parameter space.

Likelihood freezes the data and moves the parameters

You observed one vector, 𝐲=(y1,,yT)\mathbf y=(y_1,\ldots,y_T). Hold it fixed.

Now walk through possible parameter vectors 𝛝\boldsymbol\vartheta and evaluate

L(𝛝𝐲)=f𝛝(𝐲).L(\boldsymbol\vartheta\mid\mathbf y) = f_{\boldsymbol\vartheta}(\mathbf y).

(𝛝)=logL(𝛝𝐲),𝛝̂MLE=argmax𝛝(𝛝).\ell(\boldsymbol\vartheta)=\log L(\boldsymbol\vartheta\mid\mathbf y), \qquad \hat{\boldsymbol\vartheta}_{\mathrm{MLE}} =\arg\max_{\boldsymbol\vartheta}\ell(\boldsymbol\vartheta).

The data do not move. The model-implied joint density at those data moves. General ARMA has no convenient closed-form maximizer, so software searches numerically.

Which parameter values place the most density at the data already observed?

A likelihood is not the probability of an exact continuous sample

For continuous data,

Pr𝛝(𝐘=𝐲)=0\Pr_{\boldsymbol\vartheta}(\mathbf Y=\mathbf y)=0

for every exact vector 𝐲\mathbf y. The likelihood is the joint density evaluated at the fixed observed data, viewed as a function of 𝛝\boldsymbol\vartheta.

  • A density value can exceed one.
  • Its absolute level is not a probability statement about the parameter.
  • Comparisons across parameter values are the point.

Probability varies the data under fixed parameters. Likelihood varies the parameters under fixed data.

For a pure AR, the conditional objective is least squares

For zero-mean AR(pp), conditional on the first pp observations,

yt=ϕ1yt1++ϕpytp+ϵt.y_t=\phi_1y_{t-1}+\cdots+\phi_py_{t-p}+\epsilon_t.

The one-step prediction uses only observed lagged yy’s, so under Gaussian innovations:

argmax𝛟c(𝛟)argmin𝛟t=p+1Tet(𝛟)2.\arg\max_{\boldsymbol\phi}\ell_c(\boldsymbol\phi) \quad\Longleftrightarrow\quad \arg\min_{\boldsymbol\phi}\sum_{t=p+1}^{T}e_t(\boldsymbol\phi)^2.

That is the familiar OLS criterion. Conditional AR fitting is OLS-like.

Walk the AR coefficient across its conditional likelihood

Move ϕ\phi away from the OLS/CSS estimate. The residual sum of squares rises and the conditional log-likelihood falls—the same objective viewed from opposite directions.

The bridge is exact enough to see—and limited enough to name

0.557331331
CSS AR(1)
0.557331336
no-intercept OLS
0.556945001
default CSS–ML

The CSS and OLS coefficients agree to the displayed precision relevant for interpretation. The default fit performs a numerical ML polish and moves slightly.

Say “OLS-like for conditional pure AR”—not “MLE is always OLS.”

MA terms make yesterday’s errors part of today’s state

For ARMA(1,1),

yt=ϕyt1+θϵt1+ϵt.y_t=\phi y_{t-1}+\theta\epsilon_{t-1}+\epsilon_t.

yt1y_{t-1} is observed. ϵt1\epsilon_{t-1} is not.

In Memento, the protagonist cannot form new memories, so he reconstructs his own past from photographs, notes, and tattoos. yt1y_{t-1} is a photograph — you can look at it. ϵt1\epsilon_{t-1} is a memory you do not have and must rebuild from what you wrote down.

The optimizer reconstructs the past innovations recursively for every proposed (ϕ,θ)(\phi,\theta). That recursion makes the objective nonlinear in the parameters and removes the ordinary-regression shortcut.

This is why an ARMA needs a different estimator than OLS.

Memento, dir. Christopher Nolan, 2000.

What did he assume before the first note?

The recursion has to start somewhere. Different starting conventions are different estimators.

Treatment of the beginning Classroom label
Exact / unconditional ML models the full joint density, including the initial state method = "ML"
Conditional / CSS conditions on starting observations or initializes earlier innovations method = "CSS"
Default CSS–ML CSS supplies starting values; numerical ML finishes method = "CSS-ML"

There is no universal sample size at which the answers must agree to a fixed number of decimals. Persistence, boundary proximity, initial conditions, and the realized sample all matter.

Two points are enough to demystify a log-likelihood

Take y1=1.0y_1=1.0, y2=0.8y_2=0.8, and σ2=1\sigma^2=1.

For ϕ=0.6\phi=0.6:

logf(y2y1;ϕ)=12log(2π)12(0.80.6)2=0.939.\log f(y_2\mid y_1;\phi) =-\tfrac12\log(2\pi)-\tfrac12(0.8-0.6)^2=-0.939.

For ϕ=0.9\phi=0.9, the conditional mean is 0.90.9 and the log density is 0.924-0.924— slightly higher. Walk the parameter, watch the log density move, keep the top.

The log likelihood in a fitted object is the many-observation version of this arithmetic.

One fit object carries estimates, uncertainty, and fit

fit <- forecast::Arima(y_arma, order = c(1, 0, 1),
                       include.mean = FALSE)
fit
ARIMA(1,0,1) with zero mean
         ar1     ma1
      0.5398  0.4265
 s.e. 0.0501  0.0574
sigma^2 = 0.9855:  log likelihood = -705.3
AIC = 1416.61   AICc = 1416.65   BIC = 1429.25

ϵt\epsilon_t names the DGP innovation. Extracted fitted residuals are ete_t.

R’s printed “intercept” is the process mean

For an undifferenced stationary ARMA, R writes

ytμ̂=j=1pϕ̂j(ytjμ̂)+l=1qθ̂letl+et.y_t-\hat\mu=\sum_{j=1}^{p}\hat\phi_j(y_{t-j}-\hat\mu) +\sum_{l=1}^{q}\hat\theta_l e_{t-l}+e_t.

Expanding gives the recursive intercept in our master equation:

α̂=μ̂(1j=1pϕ̂j)\hat\alpha=\hat\mu\left(1-\sum_{j=1}^{p}\hat\phi_j\right)

So report R’s printed intercept as μ̂\hat\mu. Convert it before writing the recursion. For a zero-mean DGP or policy, set include.mean = FALSE explicitly.

Where this sits in Box–Jenkins

The four-step workflow, and where this course sits

Box–Jenkins step What it produces Course location After today
1. Identification candidate orders (p,d,q)(p,d,q) Module 2 (dd); Module 3 (p,qp,q) available
2. Estimation 𝛝̂\hat{\boldsymbol\vartheta}, standard errors, (𝛝̂)\ell(\hat{\boldsymbol\vartheta}) Module 4: MLE available
IC scoring (between 2 and 3) a ranking under a declared goal Module 4: AIC, AICc, BIC available
3. Diagnostic checking residual ACF/PACF, Ljung–Box, fitted roots Module 5 preview only
4. Forecasting forecast distributions, out-of-sample loss Block 4 not yet

Two boundaries worth stating out loud:

  • Scoring lives after estimation — an unfitted order has no log-likelihood to score.
  • A lowest score is a ranking, not a passed diagnostic. Module 5 can overturn it.

The mixing board is now a fitting problem

yt=α+δt+j=1pϕjytj+l=1qθlϵtl+ϵty_t=\alpha+\delta t+\sum_{j=1}^{p}\phi_j y_{t-j} +\sum_{l=1}^{q}\theta_l\epsilon_{t-l}+\epsilon_t

By Module 3, every non-seasonal term was available. Module 4 does not add a new slider. It asks:

  1. Which sliders belong in the candidate?
  2. Where should the selected sliders be set?
  3. How much evidence supports that setting?

The seasonal block remains off until Module 5.

Apply it

Three R functions have three different jobs

Function Use it for What to remember
stats::arima() minimal base-R fit reports AIC directly; generic BIC() is still available
forecast::Arima() course default manual candidate fit AIC, AICc, BIC in one object
forecast::auto.arima() automated search AICc by default; search path and constraints matter
# Six pre-COVID UNRATE candidates, foreshadowing the real-data case
candidates <- list("(1,0,0)"=c(1,0,0), "(0,0,1)"=c(0,0,1), "(1,0,1)"=c(1,0,1),
                   "(2,0,1)"=c(2,0,1), "(1,0,2)"=c(1,0,2), "(2,0,2)"=c(2,0,2))
fits <- lapply(candidates, function(ord)
  forecast::Arima(d_unrate, order = ord, include.mean = FALSE))
score <- data.frame(model = names(fits),
                    AIC = sapply(fits, AIC),
                    AICc = sapply(fits, function(f) f$aicc),
                    BIC = sapply(fits, BIC))

Hold the mean policy and estimation sample fixed across candidates.

Automation is a very good intern—not a conscience

fit_auto <- forecast::auto.arima(
  y_arma, ic = "aicc", stepwise = TRUE,
  approximation = FALSE, d = 0,
  seasonal = FALSE, allowmean = FALSE,
  allowdrift = FALSE
)

Seed 1985, T=500T=500, zero process mean:

automatic ARMA(2,2)AICc 1415.84
true ARMA(1,1)AICc 1416.65

Trust the first pass when the series is long and clean and a low-order ARMA is plausible.

Override—or at least challenge—it when roots hug one, the chosen order is large for TT, residuals fail, or domain structure is missing.

Suits, USA Network, 2011–2019.

Brilliant associate, encyclopedic recall, finds the answer before you finish the question — and still needs someone with judgment to sign off.

If you override it, can you say exactly why?

One realization gives two different winners

Seed 1985, zero process mean, nine candidates:

  • AIC and AICc: ARMA(2,2)
  • BIC: the true ARMA(1,1), by more than four BIC points

One print cannot tell us whether AIC’s miss is a fluke or a tendency.

The laboratory gives IC every advantage

We now know the truth and put it in the grid:

yt=0.6yt1+0.4ϵt1+ϵt,ϵtN(0,1).y_t=0.6y_{t-1}+0.4\epsilon_{t-1}+\epsilon_t, \qquad \epsilon_t\sim N(0,1).

500
replications
500
observations each
9
candidates each

Same zero-mean policy. Same {0,1,2}×{0,1,2}\{0,1,2\}\times\{0,1,2\} grid. Sequential seed 1999. If IC is an oracle, the true (1,1)(1,1) should win every time.

Even laboratory evidence needs screening and humility

True (1,1)(1,1), AIC74.4%
True (1,1)(1,1), BIC90.4%
Rejected fits72 / 4,500
All-failed reps0
  1. Neither criterion is certain.
  2. AIC’s misses lean larger — they concentrate in bigger ARMA candidates.
  3. BIC’s main miss is AR(2), a same-dimension approximation to the ARMA dynamics.
  4. Disagreement is information.

The screen rejects null, non-finite, or non-converged fits before ranking.

Real data: pre-COVID UNRATE

Stop the estimation window before one month rewrites everything

We estimate on 1960-01 through 2019-12:

720
UNRATE levels
719
first differences

April 2020 moved from 4.4 to 14.8 in one month. That shock dominates the covariance scale and flattens the full-sample correlogram. Outlier and break treatment is outside today’s toolkit.

The honest design is to model the pre-COVID history and state the window.

The pre-COVID fingerprints say “low-order ARMA”—and stop there

Both prints tail off. The early correlation spans several lags; there is no clean AR or MA cutoff. This is the correlogram trap on real data.

Seasonal bumps are a signal, not proof—and not evidence for D=1D=1

The ACF and PACF show modest structure near lags 12 and 24. That supports adding seasonal AR or MA candidates to a later list.

UNRATE is already seasonally adjusted, so call this residual annual-lag dependence, not raw calendar seasonality. It does not establish a seasonal unit root.

lag-12 correlation⇏D=1\text{lag-12 correlation}\;\not\Rightarrow\;D=1

Today we knowingly fit a non-seasonal ARMA as a pedagogical working model. Module 5 separates seasonal dynamics from seasonal differencing and asks for unit-root evidence before D=1D=1.

Write the six candidates—and the mean policy—before scoring

Candidate orders:

ARMA(1,0),(0,1),(1,1),(2,1),(1,2),(2,2).\mathrm{ARMA}(1,0),\ (0,1),\ (1,1),\ (2,1),\ (1,2),\ (2,2).

Mean policy:

𝔼[ΔUNRATEt]=0\mathbb E[\Delta\mathrm{UNRATE}_t]=0

That is a deliberate modeling restriction: no permanent deterministic monthly drift over this window. Every candidate uses include.mean = FALSE; the comparable automatic search uses allowmean = FALSE.

Change the policy only by refitting every candidate under the alternative.

Change the criterion; watch what the gaps do

Each bar is the gap to the best candidate under the selected criterion, so the winner sits at zero. Toggle AIC, AICc, and BIC and watch ARMA(2,2) cross the 2-point line.

All three criteria select ARMA(1,2)

Candidate AIC AICc BIC
ARMA(1,2) −549.333 −549.277 −531.021
ARMA(2,2) −548.851 −548.767 −525.962
ARMA(2,1) −545.203 −545.147 −526.891

ARMA(2,2) trails by only 0.48 AIC points but by 5.06 BIC points. The extra AR lag nearly clears AIC’s light price and clearly fails BIC’s heavier one.

The comparable non-seasonal auto.arima() search under the same zero-mean restriction also selects ARMA(1,2). Agreement names a working model. It does not finish the job.

The working fit is plausible—and explicitly provisional

Δyt=0.8638Δyt10.8963et1+0.2319et2+et.\Delta y_t =0.8638\,\Delta y_{t-1} -0.8963\,e_{t-1} +0.2319\,e_{t-2}+e_t.

code 0
optimizer converged
1.158
smallest AR-root modulus
2.077
smallest MA-root modulus

Both fitted lag-polynomial root moduli exceed one, so the AR side is stationary and the MA side is invertible. Before forecasting, the residuals must still behave like the innovations the model claims to have isolated.

The residuals leave Module 5 a seasonal signal

ρ̂e(12)\hat\rho_e(12)−0.145
ρ̂e(24)\hat\rho_e(24)−0.125
ρ̂e(36)\hat\rho_e(36)−0.130
95% band±0.073

The low lags are quieter. The lag-12, lag-24, and lag-36 negatives survive.

Supports: adding seasonal AR/MA candidates.

Does not support: taking a seasonal difference.

Key takeaways

  1. You must have a principled way of choosing a model. Isomorphism means the representation is not unique, so “read it off the correlogram” is not a rule.
  2. There are many criteria, and they mostly follow one pattern: likelihood plus a penalty, 2(𝛝̂)+penalty(k,T)-2\ell(\hat{\boldsymbol\vartheta})+\text{penalty}(k,T).
  3. Adjusted R2R^2 is a correction, not a criterion. Loosest penalty, most aggressive over-selection, no risk objective behind it — don’t rank ARMA candidates with it when AIC/AICc/BIC and diagnostics are on the table.
  4. AIC and BIC are the common two, and they have different strengths. AIC/AICc for prediction, BIC for parsimony — declared before fitting.

You can also now fit ARMA candidates by maximum likelihood, explain the pure-AR CSS–OLS bridge, hold the sample and mean policy fixed across a candidate set, and read every field in a forecast::Arima() printout.

Next time: check the residuals

12
annual lag
24
it repeats
36
still outside
  • Read the residual ACF and PACF, not the raw-series fingerprints.
  • Use Ljung–Box to test residual autocorrelations jointly.
  • Compare seasonal AR/MA terms with the much stronger commitment of D=1D=1.
  • Revisit the UNRATE spikes at lags 12, 24, and 36 before forecasting.

Module 4 hands Module 5 a fitted model—not a validated one.

Interactive lab machinery

This uncounted support slide keeps the three labs available in the document. Use the RevealJS menu to return to a lab if a browser reload interrupts an interaction.