Teste de Ljung-Box
O teste de Ljung-Box verifica se os resíduos de um modelo de série temporal ajustado são ruído branco: não correlacionados em todas as defasagens. Um resultado significativo significa que o modelo não capturou toda a estrutura de autocorrelação dos dados e precisa de refinamento.
Contexto: quando este teste é usado?
Depois de ajustar um modelo de série temporal (ARIMA, suavização exponencial, regressão com erros de série temporal), os resíduos devem ser não correlacionados. Se não forem, o modelo está mal especificado: ele está deixando estrutura previsível nos erros, o que significa que previsões e erros padrão são pouco confiáveis.
O teste de Ljung-Box formaliza essa verificação diagnóstica. Ele não é usado para testar se dados brutos são autocorrelacionados (use a ACF para isso), mas para testar se os resíduos de um modelo ajustado são.
Estatística do teste
A estatística de Ljung-Box agrupa as autocorrelações amostrais em todas as \(m\) defasagens testadas em um único número:
\[Q = n(n+2) \sum_{k=1}^{m} \frac{\hat{r}_k^2}{n-k}\]
em que \(n\) é o número de observações, \(m\) é o número de defasagens testadas, e \(\hat{r}_k\) é a autocorrelação amostral na defasagem \(k\). Sob \(H_0\) (nenhuma autocorrelação), \(Q \sim \chi^2(m - p - q)\), em que \(p\) e \(q\) são as ordens AR e MA do modelo ajustado (ambas 0 se testando dados brutos).
A estatística de Ljung-Box é uma soma ponderada de autocorrelações ao quadrado, dando mais peso a defasagens com menos observações (\(n-k\) no denominador). Isso a torna mais sensível do que a estatística original de Box-Pierce, que usa \(n\sum \hat{r}_k^2\) sem a correção.
Hipóteses: \(H_0\): os resíduos são distribuídos de forma independente (nenhuma autocorrelação em qualquer defasagem até \(m\)). \(H_1\): pelo menos uma autocorrelação \(\hat{r}_k\) é diferente de zero.
O gráfico ACF: o complemento visual
O teste de Ljung-Box dá um único valor-p para todas as defasagens até \(m\). O gráfico ACF mostra as autocorrelações individuais em cada defasagem, facilitando ver onde está a estrutura. Sempre use os dois juntos.

Barras vermelhas excedem as bandas de confiança de 95% (linhas tracejadas azuis). Resíduos de ruído branco não têm barras significativas e um valor-p grande. Resíduos autocorrelacionados mostram um padrão claro decaindo a partir da defasagem 1, com um valor-p muito pequeno.
Exemplo completo: diagnóstico de modelo ARIMA
Números mensais de passageiros de companhias aéreas (conjunto de dados Box-Jenkins, \(n = 144\)) são ajustados com um modelo ARIMA(1,1,1)(1,1,1)[12]. O teste de Ljung-Box é aplicado aos resíduos.

Todos os valores-p estão bem acima de 0,05: os resíduos não mostram autocorrelação significativa. O modelo capturou adequadamente a estrutura dos dados.
Escolhendo o número de defasagens \(m\)
O valor de \(m\) é uma troca genuína entre capturar autocorrelação em defasagens maiores e manter poder suficiente para detectá-la:
⚠️ A escolha de m importa e não há uma única resposta correta
Testar poucas defasagens demais deixa passar autocorrelações em defasagens maiores. Testar demais reduz o poder porque a distribuição qui-quadrado tem mais graus de liberdade, tornando mais difícil detectar qualquer autocorrelação significativa individual.
Regras práticas comuns:
- Para séries não sazonais: \(m = \min(10, n/5)\).
- Para séries sazonais com período \(s\): \(m = 2s\) (por exemplo, \(m = 24\) para dados mensais).
- Para modelos ARIMA\((p,d,q)\): use \(gl = m - p - q\) graus de liberdade na distribuição qui-quadrado.
No R, Box.test(..., fitdf = p + q) aplica a correção de graus de liberdade automaticamente.
Executando o teste em R
Box.test() aplica a correção de graus de liberdade automaticamente uma vez que você passa as ordens AR e MA do modelo ajustado:
# After fitting an ARIMA model
fit <- arima(x, order = c(1, 1, 1))
resid <- residuals(fit)
# Ljung-Box test with degrees of freedom correction
Box.test(resid, lag = 10, type = "Ljung-Box", fitdf = 2) # fitdf = p + q
# Multiple lags at once
sapply(c(6, 12, 18, 24), function(m)
Box.test(resid, lag = m, type = "Ljung-Box", fitdf = 2)$p.value)
# ACF plot for visual inspection
acf(resid, lag.max = 24)
💡 Interpretando o resultado no contexto
Um resultado significativo de Ljung-Box (\(p \leq 0{,}05\)) significa que o modelo tem autocorrelação residual. Próximos passos típicos:
- Inspecionar a ACF e a PACF dos resíduos para identificar quais defasagens são significativas.
- Aumentar a ordem AR ou MA do modelo.
- Para padrões sazonais, adicionar termos AR ou MA sazonais.
- Se tudo mais falhar, considerar uma classe de modelo diferente (por exemplo, GARCH para retornos financeiros com agrupamento de volatilidade).
Um resultado não significativo não garante que o modelo esteja correto: ele apenas diz que os resíduos são consistentes com ruído branco até a defasagem \(m\).