Test de Ljung-Box

El test de Ljung-Box comprueba si los residuos de un modelo de series temporales ajustado son ruido blanco: no correlacionados en todos los retardos. Un resultado significativo indica que el modelo no ha capturado toda la estructura de autocorrelación de los datos y necesita refinarse.

Contexto: cuándo se usa este contraste

Tras ajustar un modelo de series temporales (ARIMA, suavizado exponencial, regresión con errores de series temporales), los residuos deben ser no correlacionados. Si no lo son, el modelo está mal especificado: está dejando estructura predecible en los errores, lo que hace que las predicciones y los errores estándar sean poco fiables.

El test de Ljung-Box formaliza este diagnóstico. No se usa para contrastar si los datos brutos están autocorrelacionados (para eso sirve el ACF), sino para contrastar si los residuos de un modelo ajustado lo están.

Estadístico del contraste

\[Q = n(n+2) \sum_{k=1}^{m} \frac{\hat{r}_k^2}{n-k}\]

donde \(n\) es el número de observaciones, \(m\) es el número de retardos contrastados y \(\hat{r}_k\) es la autocorrelación muestral en el retardo \(k\). Bajo \(H_0\) (sin autocorrelación), \(Q \sim \chi^2(m - p - q)\), donde \(p\) y \(q\) son los órdenes AR y MA del modelo ajustado (ambos 0 si se contrastan datos brutos).

El estadístico de Ljung-Box es una suma ponderada de autocorrelaciones al cuadrado, con mayor peso en los retardos con menos observaciones (\(n-k\) en el denominador). Esto lo hace más sensible que el estadístico original de Box-Pierce, que usa \(n\sum \hat{r}_k^2\) sin la corrección.

Hipótesis: \(H_0\): los residuos se distribuyen de forma independiente (sin autocorrelación en ningún retardo hasta \(m\)). \(H_1\): al menos una autocorrelación \(\hat{r}_k\) es distinta de cero.

El gráfico ACF: el complemento visual

El test de Ljung-Box da un único p-valor para todos los retardos hasta \(m\). El gráfico ACF muestra las autocorrelaciones individuales en cada retardo, lo que facilita ver dónde está la estructura. Úsalos siempre juntos.

Dos gráficos ACF en paralelo: uno para residuos de ruido blanco y otro para residuos autocorrelacionados

Las barras rojas superan las bandas de confianza al 95% (líneas azules discontinuas). Los residuos de ruido blanco no tienen barras significativas y su p-valor es grande. Los residuos autocorrelacionados muestran un patrón claro que decae desde el retardo 1, con un p-valor muy pequeño.

Ejemplo completo: diagnóstico de un modelo ARIMA

Se ajusta un modelo ARIMA(1,1,1)(1,1,1)[12] a los pasajeros mensuales de una aerolínea (conjunto de datos Box-Jenkins, \(n = 144\)). La prueba de Ljung-Box se aplica a los residuos.

ACF de los residuos del modelo ARIMA para los datos de pasajeros de aviación con p-valores del contraste de Ljung-Box a distintos retardos

Todos los p-valores están muy por encima de 0,05: los residuos no muestran autocorrelación significativa. El modelo ha capturado adecuadamente la estructura de los datos.

Elección del número de retardos \(m\)

⚠️ La elección de m importa y no hay una única respuesta correcta

Contrastar muy pocos retardos pasa por alto autocorrelaciones en retardos superiores. Contrastar demasiados reduce la potencia porque la distribución chi-cuadrado tiene más grados de libertad, lo que dificulta detectar cualquier autocorrelación significativa individual.

Reglas prácticas habituales:

  • Para series no estacionales: \(m = \min(10, n/5)\).
  • Para series estacionales con período \(s\): \(m = 2s\) (por ejemplo, \(m = 24\) para datos mensuales).
  • Para modelos ARIMA\((p,d,q)\): usa \(gl = m - p - q\) grados de libertad en la distribución chi-cuadrado.

En R, Box.test(..., fitdf = p + q) aplica la corrección de grados de libertad automáticamente.

Realizar el contraste en R

# Tras ajustar un modelo ARIMA
fit   <- arima(x, order = c(1, 1, 1))
resid <- residuals(fit)

# Contraste de Ljung-Box con corrección de grados de libertad
Box.test(resid, lag = 10, type = "Ljung-Box", fitdf = 2)  # fitdf = p + q

# Varios retardos a la vez
sapply(c(6, 12, 18, 24), function(m)
  Box.test(resid, lag = m, type = "Ljung-Box", fitdf = 2)$p.value)

# Gráfico ACF para inspección visual
acf(resid, lag.max = 24)

💡 Interpretación del resultado en contexto

Un resultado significativo de Ljung-Box (\(p \leq 0{,}05\)) indica que el modelo tiene autocorrelación residual. Los siguientes pasos habituales son:

  • Inspeccionar el ACF y el PACF de los residuos para identificar qué retardos son significativos.
  • Aumentar el orden AR o MA del modelo.
  • Para patrones estacionales, añadir términos AR o MA estacionales.
  • Si todo lo demás falla, considera una clase de modelo diferente (por ejemplo, GARCH para rendimientos financieros con agrupación de volatilidad).

Un resultado no significativo no garantiza que el modelo sea correcto: solo indica que los residuos son compatibles con el ruido blanco hasta el retardo \(m\).