Coleção series-temporais
Sazonalidade (Kruskal-Wallis)
Kruskal-Wallis: a série tem sazonalidade?
O que o bloco faz
Testa se a série tem SAZONALIDADE sem supor distribuição nenhuma. Põe todas as observações em POSTOS — o menor valor da série inteira vira posto 1, o maior vira o posto N — e compara a soma dos postos de cada estação. Se janeiro é sempre alto e julho é sempre baixo, as somas se afastam e o H cresce. H0 é “as estações têm a mesma distribuição” — sem sazonalidade —, e rejeitar é concluir que há.
É o irmão não paramétrico do F da sazonalidade (models/anova_table sobre a series/regression), que responde à mesma pergunta
pedindo erro normal em troca.
Sazonalidade determinística
O que este teste enxerga é o padrão que se repete IGUAL todo ciclo: janeiro
sempre alto, julho sempre baixo. A sazonalidade ESTOCÁSTICA — a que vai mudando
de ano para ano — não tem um “nível de janeiro” fixo para o posto encontrar, e
passa por aqui sem ser vista. A dissertação separa as duas na seção 3.4: para a
estocástica o caminho é a diferença sazonal do series/diff.
Tendência atrapalha, e o log não salva
É o ponto que mais engana desta página, e ele se mede no caso de livro. O
AirPassengers é A série sazonal dos manuais, e ela NÃO rejeita aqui:
Kruskal-Wallis chi-squared = 11.148, df = 11, p-value = 0.4309
Não é defeito do bloco: é a TENDÊNCIA. A série quase triplica ao longo dos doze anos, então os postos altos são todos dos anos finais e se espalham por todas as estações — cada mês recebe um valor baixo do começo da série e um alto do fim, e as somas de postos acabam empatando. O padrão sazonal existe; o posto o perde por baixo do crescimento.
Passar um log ANTES não muda NADA, e isso costuma surpreender: o log torna a
sazonalidade multiplicativa em aditiva, sim, mas este teste é de POSTOS e o log
é monotônico — ele não troca a ordem de valor nenhum, então o H e o p-valor saem
idênticos aos de cima, dígito por dígito. O series/transform serve para
estabilizar a variância; para este teste ele é inócuo.
O que resolve é tirar a TENDÊNCIA. Uma diferença simples do series/diff antes
do bloco, e o mesmo AirPassengers rejeita com folga:
Kruskal-Wallis chi-squared = 119.2, df = 11, p-value = 2.623e-20
Ou seja: um “não rejeita H0” numa série que você SABE que é sazonal é quase
sempre a tendência falando. Olhe a série no series/seasonal_plot ou no
series/subseries antes de concluir que não há estação.
A série precisa ter estação
Série com frequência 1 é cartão vermelho, e não um card verde dizendo que não há sazonalidade: sem ciclo declarado não existem estações para comparar, e o teste seria mandado comparar um grupo só. Declare a frequência no nó que cria a série. Menos de TRÊS ciclos completos também é recusado, e não dois como nos outros blocos sazonais. Com duas observações por estação, o maior H possível — as estações perfeitamente separadas — não chega ao valor crítico, então o teste não teria como rejeitar e o veredito estaria decidido antes de ler o dado:
frequência ciclos maior H possível corte a 5%
4 2 6.667 7.815
4 3 10.385 7.815
2 2 2.400 3.841
2 3 3.857 3.841
12 2 22.880 19.675
A mensal até rejeitaria com dois ciclos, mas o piso é o mesmo para todas as frequências: uma regra só, ao custo de um ano de dado.
O que sai
A estatística H, o p-valor e a conclusão em palavras; os graus de liberdade — o
número de estações menos um — vão numa coluna extra, porque é com eles que se lê
o H contra a tabela do qui-quadrado. A decisão é a 5%. A cauda é a SUPERIOR: é o
H grande que derruba H0, ao contrário dos testes de tendência da coleção. A
nota diz quantas estações entraram e quantas observações cada uma tem — ciclo
incompleto na ponta deixa umas com uma observação a mais, e é o que explica um H
diferente do da mesma série fechada no último ciclo.
Faltantes
Este bloco não aceita faltantes: série com buraco põe o nó em vermelho. Ligue um
series/interpolate antes, ou recorte a parte cheia com series/window.
Antes de continuar
Termos que esta página usa, em poucas palavras. As definições completas estão no glossário.
- Hipótese nula
- A afirmação que o teste põe à prova, em geral a de que não há efeito ou diferença (médias iguais, ausência de tendência). O teste mede o quanto os dados são incompatíveis com ela; não rejeitá-la não prova que ela é verdadeira.
- 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.
- Teste não paramétrico
- Um teste que não supõe uma distribuição específica (como a normal) para os dados; muitos trabalham com a ordem (os postos) das observações. É útil quando os pressupostos de um teste paramétrico falham, em geral com algum custo de poder quando eles valem.
- 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.
- Sazonalidade
- Um padrão que se repete em intervalos fixos do calendário, como mais chuva em janeiro ou mais vendas em dezembro. O período sazonal é o comprimento do ciclo: 12 para dados mensais com ciclo anual.
Quando usar
Compare a distribuição das observações entre posições do ciclo para verificar sazonalidade. A comparação é não paramétrica e depende da frequência da série.
Pressupostos
A série não tem tendência: com tendência os postos altos ficam todos nos anos finais, espalhados por todas as estações, e a sazonalidade some do teste.
Verificar:Série no tempoMann-Kendall
Se falhar: Tire a tendência antes com
series/diff(o log deseries/transformnão muda nada: o teste é de postos).Sob H0 as observações são independentes (sem autocorrelação). A autocorrelação dentro de cada estação (o janeiro de um ano parecido com o do seguinte) torna o p-valor otimista.
Verificar:Correlograma (ACF)Ljung-Box
Se falhar: Olhe a
series/acfda série sem a tendência (resto doseries/stlviaseries/component). Este teste não tem versão para dado autocorrelacionado: leia o p-valor como otimista e, para tendência, use oseries/mann_kendallcom Correçãohamed_raooupre_branqueamento.A sazonalidade é determinística (o mesmo padrão em todo ciclo) e o ciclo declarado é o verdadeiro.
Verificar:Gráfico sazonalSubséries sazonaisPeriodicidade (Fisher)
Se falhar: Sazonalidade que muda de ano para ano: diferença sazonal (
series/diff).Pelo menos três ciclos; o H segue o qui-quadrado aproximado com estações − 1 graus de liberdade.
Configuração
Nenhum. Uma entrada: serie, que precisa ter frequência maior que 1.
Exemplo
Fluxo 1
Fluxo 2
library(trama)
reg <- tr_registry()
tr_use("trama.series", registry = reg)
tr_flow(reg) |>
tr_add("pax", "series/example") |>
tr_add("kw", "series/seasonality_kw", from = "pax")
tr_flow(reg) |>
tr_add("pax", "series/example") |>
tr_add("d", "series/diff", from = "pax") |>
tr_add("kw", "series/seasonality_kw", from = "d")Como interpretar
Um teste (data/test), com os graus de liberdade numa coluna extra. Ligado
numa entrada de tabela, ele vira UMA linha de relatório: um data/bind_rows
junta vários testes num só quadro.