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
periodocomo 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 emt. 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
restocomseries/componente passe noseries/ljung_box. Com autocorrelação, ligue Erro = arma noseries/regression(GLS com erro ARMA; comece por AR(1) e escolha a ordem pelaseries/acfeseries/pacfdo resto); os F domodels/anova_tableviram 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
restodoseries/componentvira tabela no fio (colunavalor). Variância que cresce com o nível: ajuste no log (series/transform). Sem normalidade:series/mann_kendall(tendência) ouseries/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/transformantes 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 nomodels/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).
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.
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_zerooucategoria_base. - regressor (entrada, opcional) — uma série usada como covariável.
- Erro —
independente(MQO, padrão) ouarma(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
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.