Modelo ARIMAX

O ARIMAX adiciona regressores externos (exógenos) ao framework ARIMA. É o modelo natural quando a série temporal é determinada não apenas por seus próprios valores passados, mas também por fatores externos observáveis, como preço, temperatura ou gasto promocional.

Por que variáveis exógenas?

Modelos ARIMA puros exploram apenas a estrutura de autocorrelação da série. Muitas séries reais também são determinadas por fatores externos:

  • A demanda de eletricidade depende da temperatura.
  • As vendas no varejo dependem de promoções de preço e feriados.
  • O tráfego de um site depende do gasto em publicidade.
  • As reservas aéreas dependem dos preços de combustível e de indicadores econômicos.

Incluir essas variáveis como regressores pode melhorar drasticamente a precisão da previsão quando seus valores futuros são conhecidos ou podem ser previstos de forma independente.

Dois modelos relacionados, mas diferentes

Existem dois modelos comumente chamados de ARIMAX, e eles são matematicamente distintos:

Modelo 1: ARIMAX (modelo exógeno verdadeiro)

As variáveis exógenas \(x_t\) entram diretamente na equação diferenciada:

\[\Phi(L)(1-L)^d y_t = \beta x_t + \Theta(L)\varepsilon_t\]

Os polinômios AR e MA operam sobre \(y_t\) diferenciada. O regressor \(x_t\) não é diferenciado. Este é um modelo restrito: ele assume que \(x_t\) é estritamente exógeno e não retroalimenta \(y_t\).

Modelo 2: Regressão com erros ARIMA (recomendado)

A regressão acontece primeiro, e o modelo ARIMA é aplicado aos resíduos:

\[y_t = \beta x_t + \eta_t, \qquad \Phi(L)(1-L)^d\eta_t = \Theta(L)\varepsilon_t\]

Aqui \(\eta_t\) segue um processo ARIMA. O regressor entra na série não diferenciada, e a diferenciação se aplica apenas ao processo de erro. Essa é a formulação usada por forecast::auto.arima() com xreg.

⚠️ ARIMAX e regressão com erros ARIMA não são o mesmo modelo

A diferença-chave: no Modelo 1, o operador de diferenciação se aplica a \(\beta x_t y_t\), o que significa que \(x_t\) também é implicitamente diferenciado. No Modelo 2, \(x_t\) entra na equação de nível e apenas os erros são diferenciados.

Na prática, o Modelo 2 (regressão com erros ARIMA) é quase sempre o preferido porque:

  • O coeficiente \(\beta\) tem uma interpretação direta como o efeito de \(x_t\) sobre \(y_t\) em níveis.
  • Ele lida com a não estacionariedade de \(y_t\) sem exigir que \(x_t\) seja diferenciada.
  • É o que Arima(y, xreg = x) e auto.arima(y, xreg = x) de fato ajustam no R.

Quando se fala em ARIMAX no trabalho aplicado, geralmente se refere ao Modelo 2.

Exemplo: demanda de eletricidade e temperatura

A demanda de eletricidade em meia hora é fortemente influenciada pela temperatura (efeitos de aquecimento e refrigeração). Modelamos a demanda diária de pico como função da temperatura média diária, com erros ARIMA capturando a autocorrelação restante.

Regressão com erros ARIMA para demanda de eletricidade em função da temperatura com previsão

A relação em forma de U (demanda de refrigeração em temperaturas altas, demanda de aquecimento em temperaturas baixas) é capturada incluindo tanto \(\text{temp}\) quanto \(\text{temp}^2\) como regressores. O componente ARIMA lida com a autocorrelação semanal restante.

Previsão com ARIMAX

Para prever \(h\) passos adiante, valores futuros das variáveis exógenas devem ser fornecidos:

# Future temperature scenarios
temp_future <- c(22, 24, 25, 26, 28, 27, 23)  # next 7 days
xreg_future <- cbind(temp = temp_future,
                     temp2 = temp_future^2)

forecast(fit_x, xreg = xreg_future, h = 7)

Essa é a restrição prática fundamental do ARIMAX: a previsão é condicional aos valores futuros do regressor. Se o próprio regressor é incerto (por exemplo, uma previsão de temperatura), a incerteza em \(x_t\) deve ser propagada para os intervalos de previsão.

Previsão condicional ARIMAX para dois cenários de temperatura mostrando previsões de demanda diferentes

Os dois cenários produzem previsões de demanda muito diferentes, ilustrando o valor de incorporar a temperatura como regressor. O ARIMA puro produziria uma única previsão sem essa estrutura condicional.

Quando usar o ARIMAX

Situação Modelo recomendado
\(y_t\) depende de \(x_t\) externo conhecido ARIMAX (regressão com erros ARIMA)
\(y_t\) e \(x_t\) se influenciam mutuamente VAR (vetores autorregressivos)
Apenas autocorrelação, sem variáveis externas ARIMA
Sazonalidade + fatores externos SARIMAX (ARIMAX sazonal)
Relação não linear com \(x_t\) Inclua \(x_t^2\), interações, ou use modelos de ML

💡 ARIMAX em R

library(forecast)

# Fit regression with ARIMA errors
fit <- auto.arima(y, xreg = x_matrix)

# Manual specification
Arima(y, order = c(1,1,1), xreg = x_matrix)

# Forecast (must supply future xreg values)
forecast(fit, xreg = x_future, h = nrow(x_future))

# Check residuals as usual
checkresiduals(fit)

O argumento xreg aceita uma matriz de regressores. Cada coluna é um regressor. O R ajusta o Modelo 2 (regressão com erros ARIMA), não a formulação ARIMAX pura.