Coleção series-temporais

Regressão dos componentes

Estima tendência e sazonalidade por regressão, com coeficientes e p-valores.

O que o bloco faz

Ajusta um modelo EXPLÍCITO para os componentes da série:

valor = tendência(t) + sazonal(estação) + erro

A tendência é um polinômio no tempo (t, t², t³), e a sazonalidade, uma variável indicadora por período — onze dummies numa série mensal. É a decomposição que se faz com regressão, e a diferença para series/decompose e series/stl é que aqui cada componente tem COEFICIENTE, erro-padrão e p-valor: dá para testar se ele existe, em vez de olhar o gráfico e achar.

O que sai

O card mostra o ajuste como um estatístico o lê: coeficientes, significância, R² e o F global. Ligado num nó da data, vira a tabela de coeficientes (termo, estimativa, erro_padrao, estatistica_t, p_valor). Ligado em series/component ou series/plot_decomposition, vira decomposição — os componentes estimados, que somam a série de volta.

Contraste

Muda como os coeficientes são lidos, e não a decomposição:

  • soma_zero — cada coeficiente sazonal é o desvio daquele período em relação à média do ano, e os desvios somam zero. É a convenção da decomposição clássica, e o que torna o sazonal daqui comparável ao de lá.
  • categoria_base — cada coeficiente é a diferença para o primeiro período (janeiro, numa mensal). É o summary() do R, e o que se vê no livro-texto.

Em ambos, o componente sazonal devolvido é centrado em zero e a tendência absorve a média — senão a mesma série daria duas decomposições diferentes por causa de uma escolha de leitura.

Erro autocorrelacionado

O padrão (Erro = independente) é mínimos quadrados ordinários, que supõe erros independentes. Em série temporal o erro quase sempre é autocorrelacionado, e aí os erros-padrão saem pequenos demais e os p-valores — dos coeficientes e dos três F — OTIMISTAS. Confira: series/component (resto) → series/ljung_box.

Erro = arma ajusta a mesma regressão por mínimos quadrados generalizados com erro ARMA(p, q) (nlme::gls com corARMA, por máxima verossimilhança), com Ordem AR do erro = p e Ordem MA do erro = q; AR(1) é o ponto de partida usual. Os coeficientes passam a ser os do GLS, e os três F viram testes de Wald com a covariância do GLS (a nota do teste diz). Medido sem tendência nenhuma e com erro AR(1) de phi = 0.6 (n = 120, 300 réplicas), o F de tendência rejeita a 5% em 37% das vezes por MQO e em 8% pelo GLS; com phi = 0.9 são 69% e 17% — perto da raiz unitária o GLS melhora muito, mas ainda passa do nominal, e o caminho é diferenciar a série; quando o AR estimado tem raiz inversa de 0.9 ou mais, o bloco avisa e a nota dos F diz. Série que o modelo reproduz sem resíduo é recusada (não há erro a modelar). O R² e o F do summary do MQO não existem no GLS: o card mostra o resumo do gls.

Limites

O bloco não aceita faltantes, e sazonalidade pede frequência maior que 1. Grau 0 com sazonalidade desligada (e sem regressor) não tem o que estimar, e para o nó em vermelho.

Regressor

A entrada opcional regressor recebe outra série — uma covariável, como a renda ou a temperatura — que entra no mesmo ajuste:

valor = tendência(t) + sazonal(estação) + β·regressor + erro

O coeficiente regressor sai na tabela com erro-padrão e p-valor: é o efeito da covariável descontadas tendência e sazonalidade, e os F de tendência e de sazonalidade passam a ser os descontado o regressor. Na decomposição, o efeito β·regressor é um componente PRÓPRIO, regressor, e a tendência continua sendo só do tempo (intercepto + polinômio): série = tendência + sazonal + regressor + resto. series/component tira o regressor como série, e series/plot_decomposition ganha um painel para ele.

O regressor tem de ter a mesma frequência e cobrir o período inteiro da série (sobrar dos lados não faz mal; faltar é erro — recorte a série com series/window), sem faltantes nesse período.

A decomposição daqui é sempre ADITIVA. Se a oscilação sazonal cresce com o nível (como em AirPassengers), passe a série por series/transform com log antes: no log, o efeito multiplicativo vira soma, e os componentes estimados são fatores quando voltam da exponencial.

As potências do tempo são cruas (t, t², t³) e fortemente correlacionadas entre si: em series/example com grau 3, a matriz de desenho tem número de condição de 7,3 milhões, e t³ sai com p = 0,46 enquanto o F do bloco de tendência é esmagador. Do grau 2 em diante, os p-valores individuais dos termos de tendência não se leem um a um — quem quer saber se há tendência lê o F do termo de tendência no models/anova_table (soma de quadrados tipo III). Os coeficientes sazonais não sofrem disso.

O nó não prevê, e é de propósito: tendência polinomial fora da amostra é das extrapolações mais perigosas que existem — um grau 3 dispara para o infinito logo depois do último ponto. Para prever, series/arima ou series/ets.

Antes de continuar

Termos que esta página usa, em poucas palavras. As definições completas estão no glossário.

p-valor
A probabilidade de obter um resultado tão extremo quanto o observado, ou mais, se a hipótese nula fosse verdadeira. p-valor pequeno indica dados pouco compatíveis com a hipótese nula; ele não é a probabilidade de a hipótese nula ser verdadeira nem mede o tamanho do efeito.
Independência
Pressuposto de que o erro de uma observação não informa sobre o de outra. Falha com medidas repetidas no mesmo indivíduo, unidades vizinhas ou dados no tempo, e a sua violação pode distorcer bastante os p-valores e os intervalos.
Autocorrelação
A correlação de uma série com ela mesma deslocada no tempo: o valor de hoje parecido com o de ontem. É o padrão que os modelos de séries descrevem, e o que torna inválidos os testes que supõem observações independentes.
Estacionariedade
Uma série é estacionária quando média, variância e autocorrelação não mudam ao longo do tempo. Muitos modelos (como o ARIMA) a supõem; séries com tendência costumam ser diferenciadas até ficarem estacionárias.
Tendência
O movimento de longo prazo de uma série, de subida ou de descida, separado das oscilações de curto prazo e da sazonalidade.

Quando usar

Estime tendência e sazonalidade por regressão para obter coeficientes, medidas de ajuste e componentes ajustados. A forma da tendência é uma escolha do modelo.

Pressupostos

  • A fórmula descreve a série: com periodo como efeito principal, a sazonalidade é fixa (o mesmo efeito por período em todos os ciclos, determinística), e a tendência tem a forma escrita em t. Tendência que muda de forma, ou sazonalidade que evolui, sobra no resto.

    Verificar:Gráfico da decomposiçãoGráfico sazonal

    Se falhar: Sazonalidade que muda com os anos: series/stl (sem p-valor) ou diferença sazonal (series/diff).

  • Com Erro = independente (padrão, MQO), os erros da regressão são independentes (sem autocorrelação). Série temporal quase nunca obedece, e o efeito é conhecido: erros-padrão pequenos demais e p-valores otimistas. Com Erro = arma, o erro segue o ARMA(p, q) declarado.

    Verificar:ComponenteLjung-BoxCorrelograma (ACF)

    Se falhar: Tire o resto com series/component e passe no series/ljung_box. Com autocorrelação, ligue Erro = arma no series/regression (GLS com erro ARMA; comece por AR(1) e escolha a ordem pela series/acf e series/pacf do resto); os F do models/anova_table viram testes de Wald do GLS. Perto da raiz unitária nem o GLS segura o nível: diferencie. Os testes não paramétricos (series/mann_kendall, series/seasonality_kw) também supõem independência, então não resolvem.

  • Os erros são normais e de variância constante: o F é exato só assim.

    Verificar:ComponenteQuantil-quantilShapiro-Wilk

    Se falhar: O resto do series/component vira tabela no fio (coluna valor). Variância que cresce com o nível: ajuste no log (series/transform). Sem normalidade: series/mann_kendall (tendência) ou series/seasonality_kw (sazonalidade).

  • A variância é constante no tempo: a dispersão da série não deve crescer com o nível.

    Verificar:Amplitude × médiaSérie no tempo

    Se falhar: Avalie log ou Box-Cox com series/transform antes da regressão.

  • Potências cruas do tempo (t, I(t^2), I(t^3)) como termos separados são quase colineares: os coeficientes de tendência não se leem um a um.

    Se falhar: Escreva a tendência num termo só, poly(t, 2, raw = TRUE), e leia o F da linha dela no models/anova_table (tipo III), que testa o bloco inteiro.

  • A tendência é determinística. Uma série com raiz unitária — passeio aleatório — produz tendência aparente e F significativo sem tendência nenhuma (regressão espúria).

    Verificar:ADFKPSS

    Se falhar: Com raiz unitária, diferencie (series/diff) e modele a série diferenciada.

  • Com regressor ligado: o efeito dele é contemporâneo (x no mesmo instante, sem defasagem) e exógeno (y não volta a mexer em x). Duas séries que só compartilham tendência produzem regressão espúria: o p do β sai pequeno sem relação nenhuma, sobretudo com erro autocorrelacionado.

    Verificar:Ljung-BoxADF

    Se falhar: Deixe a tendência na fórmula (t), ligue Erro = arma se o resto for autocorrelacionado, e com séries de raiz unitária diferencie as duas antes (series/diff).

Configuração

  • Grau da tendência — 0 (sem tendência) a 3.
  • Sazonalidade — inclui as dummies de período.
  • Contraste — soma_zero ou categoria_base.
  • regressor (entrada, opcional) — uma série usada como covariável.
  • Erro — independente (MQO, padrão) ou arma (GLS com erro ARMA).
  • Ordem AR do erro e Ordem MA do erro — p e q do erro ARMA, de 0 a 3 (não os dois zero). Só valem com arma.

Exemplo

Série de exemplo
Regressão dos componentes
Medidas de ajuste
Componente
Ljung-Box
library(trama)

reg <- tr_registry()
tr_use("trama.series", registry = reg)
tr_use("trama.models", registry = reg)

tr_flow(reg) |>
  tr_add("pax", "series/example") |>
  tr_add("reg", "series/regression", grau = 2L, from = "pax") |>
  tr_add("f", "models/fit_stats", from = "reg") |>
  tr_add("resto", "series/component", componente = "resto", from = "reg") |>
  tr_add("ruido", "series/ljung_box", from = "resto")

Como interpretar

Uma regressão (series/regression): o card traz o resumo do ajuste. models/fit_stats dá o F global e models/anova_table, com soma de quadrados tipo III, o F de cada bloco de termos; series/component extrai um componente como série; ligada à data, vira a tabela de coeficientes.