Coleção series-temporais
Periodicidade (Fisher)
Fisher: existe uma periodicidade escondida?
O que o bloco faz
Procura uma PERIODICIDADE ESCONDIDA. Decompõe a série nas ondas de todos os períodos que ela comporta — o periodograma — e pergunta se o MAIOR pico é maior do que o acaso produziria. A estatística é o g, a fração da potência total que esse pico sozinho carrega (eq. 3.41 da dissertação). H0 é “a série não tem periodicidade”, e rejeitar é concluir que há um ciclo.
É o irmão do series/seasonality_kw, e os dois fazem a pergunta em sentidos
opostos. O Kruskal-Wallis COMPARA ESTAÇÕES QUE VOCÊ JÁ DECLAROU: ele lê a
frequência da série para saber o que é janeiro, e responde se aquelas estações
diferem. Este aqui CAÇA UM PERÍODO DESCONHECIDO: não pergunta a frequência a
ninguém, varre a grade inteira e diz onde está o pico. Quem já sabe qual é o
ciclo e quer saber se ele é real usa o Kruskal-Wallis; quem desconfia de um ciclo
e não sabe qual, usa este.
O pico pode não ser uma estação
É o ponto que mais engana desta página: o teste acha o maior pico ONDE QUER QUE ELE ESTEJA, e nem todo pico é estação. Cinco séries do R, medidas:
série m g zα (5%) p período do pico
AirPassengers 71 0.5019 0.0984 4.627e-20 12 observações
UKgas 53 0.5531 0.1252 3.434e-17 4 observações
nottem 119 0.9140 0.0636 2.268e-124 12 observações
lh 23 0.2357 0.2432 6.193e-02 8 observações
Nile 49 0.1833 0.1335 2.944e-03 100 observações
O Nile REJEITA — e não tem sazonalidade nenhuma. Olhe o período: 100
observações, que é a série inteira. O ciclo não chega a se repetir uma segunda
vez dentro dos dados, e isso não é estação; é a tendência e a estrutura de baixa
frequência que sobraram depois de tirar a reta. Um pico sazonal se REPETE dentro
da série: poucas observações por ciclo e muitos ciclos, como os 12 do
AirPassengers. O primeiro período da grade, N, é justamente o contrário — um
ciclo só, que é tendência e não estação —, e é nele que o Nile caiu.
m é o número de ordenadas que entram no g: as m = (N − 1) ÷ 2 (inteiro)
frequências de Fourier, sem a frequência zero e sem a de Nyquist — em série de
tamanho par, o período de duas observações fica de fora, porque a ordenada dele
tem metade dos graus de liberdade das outras e a distribuição de g supõe todas
iguais (Fisher, 1929). Até a versão 1 do bloco ela entrava na soma.
Remover antes
- reta (padrão) — tira uma reta de mínimos quadrados antes do periodograma, como na dissertação. É o teste de Fisher aplicado aos resíduos da reta, e evita que uma tendência linear vire o maior pico.
- media — tira só a média: a formulação original de Fisher (1929) e a de
GeneCycle::fisher.g.test. NoAirPassengerso pico passa a ser o período de 144 observações — a tendência —, e anotaavisa.
Por isso o bloco publica o PERÍODO junto com o veredito, e a nota avisa em voz
alta quando o pico não se repete ao menos duas vezes. Um “há periodicidade” lido
sem olhar o período é o erro mais fácil de cometer aqui.
O período sai em observações
O periodograma mede frequência em ciclos por unidade de tempo, e o inverso disso
viria na unidade de tempo da série — num AirPassengers mensal, a estação de
doze meses apareceria como o número 1, que se lê como “um mês” e inverte o
sentido da frase. O bloco converte para OBSERVAÇÕES: o mesmo pico sai como 12,
que é o que se conta no gráfico. Em série de frequência 1 os dois números
coincidem. Junto vai quantas vezes o ciclo cabe na série — 12 no
AirPassengers, 1 no Nile —, que é a leitura já feita do período.
O corte da dissertação e o p-valor
A dissertação decide comparando o g com o valor crítico
zα = 1 - (α/m)^(1/(m-1)) (eq. 3.42), rejeitando quando o g passa de zα. Essa
fórmula é o PRIMEIRO termo da distribuição exata de Fisher (1929), e é exata só
quando o crítico passa de 1/2; abaixo disso ela é conservadora. O bloco usa a
distribuição exata inteira, nos dois lados: o p-valor é a soma completa, e o zα
publicado é o quantil exato a 5% dela. As duas regras são, então, A MESMA por
construção: nas cinco séries acima elas concordam, inclusive no caso apertado
do lh, onde o g fica ABAIXO de zα e o p-valor ACIMA de 5%. Para que a comparação da dissertação possa ser
conferida direto no card, o zα sai publicado como o valor crítico a 5%, ao lado
do p-valor.
Não precisa de estação declarada, mas precisa de tamanho
Ao contrário do series/seasonality_kw, este bloco ACEITA série de frequência 1:
ele não agrupa por estação, e o periodograma existe para qualquer série. Recusar
frequência 1 bloquearia justamente o uso para o qual ele serve — caçar um período
que ninguém declarou —, e foi assim que a linha do Nile da tabela acima foi
medida.
O que ele pede são oito observações. O limite vem da GRADE: com N observações o periodograma só enxerga os períodos N, N/2, N/3 e assim por diante, e o menor ciclo que esta coleção sabe declarar é o trimestral. Para que um período 4 exista nessa grade e ainda se repita duas vezes dentro da série são precisas oito observações — em N igual a 8 a grade tem o 4, em N igual a 7 ela não tem. Abaixo disso o “período do pico” não é uma escolha entre alternativas: é o único lugar onde ele poderia cair.
O que sai
O g, o p-valor e a conclusão em palavras; o período do pico e o número de ciclos vão em colunas extras, e o zα na coluna do valor crítico a 5%. A decisão é a 5%. A cauda é a SUPERIOR: é o g grande — o pico que concentra a potência — que derruba H0.
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.
- 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.
- 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.
- 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
Procure periodicidade em uma série quando o ciclo não estiver especificado previamente. A frequência e o intervalo observado condicionam quais períodos podem ser detectados.
Pressupostos
Sob H0 a série é ruído branco gaussiano (independente, normal, variância constante) em torno de uma reta (
remover = reta) ou de uma média (media, a formulação de Fisher 1929): é daí que sai a distribuição exata de g sobre as m = (N − 1) ÷ 2 ordenadas de Fourier, sem a de Nyquist.Verificar:Correlograma (ACF)Ljung-Box
Se falhar: Autocorrelação sem ciclo (um AR, por exemplo) já concentra potência nas frequências baixas e faz o teste rejeitar: leia o período do pico.
A tendência é no máximo linear (com
reta, o periodograma a remove; commedia, nem isso). Tendência curva ou estrutura de baixa frequência vira um pico no período da série inteira.Verificar:Série no tempo
Se falhar: Diferencie antes (
series/diff) e desconfie de pico que não se repete (anotaavisa).A periodicidade cai na grade de Fourier (período N/j) e há uma dominante: o teste olha só o maior pico.
Verificar:Correlograma (ACF)Gráfico sazonal
Configuração
- Remover antes —
reta(padrão) oumedia: o que sai da série antes do periodograma.
Uma entrada: serie.
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("f", "series/periodicity_fisher", from = "pax")
tr_flow(reg) |>
tr_add("nilo", "series/example", dataset = "Nile") |>
tr_add("f", "series/periodicity_fisher", from = "nilo")Como interpretar
Um teste (data/test), com o período do pico e o número de ciclos em colunas
extras, e o zα da dissertação na coluna do valor crítico a 5%. Ligado numa
entrada de tabela, ele vira UMA linha de relatório: um data/bind_rows junta
vários testes num só quadro.