Coleção series-temporais
Mann-Kendall
Mann-Kendall: a série tem tendência?
O que o bloco faz
Testa se a série tem TENDÊNCIA. É o teste de tendência mais usado em climatologia — chuva, vazão, temperatura —, e o que se espera encontrar num trabalho da área.
Ele conta, par a par, quantas vezes um valor posterior supera um anterior. Essa contagem é o S: positivo quando o futuro costuma estar acima, negativo quando costuma estar abaixo. A estatística Z é o S padronizado.
Não paramétrico
Não supõe distribuição nenhuma para a série. É por isso que ele é o padrão onde
o dado não é normal, que é o caso da maior parte das variáveis ambientais. O
O F da tendência (models/anova_table sobre a series/regression) responde à mesma pergunta, mas cobra normalidade do erro em
troca; quando os dois concordam, a conclusão tem chão.
A tendência é MONOTÔNICA
É o limite que mais surpreende: o teste procura movimento em um sentido só. Uma
série que sobe durante metade do período e desce na outra metade tem pares se
cancelando e pode sair SEM tendência nenhuma — o que não quer dizer que nada
aconteceu. Olhe o series/plot antes de acreditar num “não há evidência”.
A direção vem no sinal de Z
Rejeitar H0 não é só “há tendência”: Z positivo é tendência de AUMENTO, Z negativo é tendência de QUEDA, e é assim que a conclusão sai escrita.
Empates
Valor repetido não aponta direção nenhuma, e a variância é corrigida por isso.
Sem a correção, uma série com muitos valores iguais — medição arredondada, uma
corrida de zeros na chuva — sairia com um p-valor otimista demais. A nota diz
quantos grupos de empate entraram na conta, junto do S.
O que sai
A estatística Z, o p-valor bilateral e a conclusão em palavras; o S vai na
coluna extra do relatório. A decisão é a 5%. O p-valor vem da aproximação
normal, que pede pelo menos dez observações — abaixo disso o bloco recusa em vez
de devolver um número que a amostra não sustenta. Dez bastam porque a
aproximação aqui corre sobre TODAS as n(n-1)/2 comparações par a par, e não
sobre uma contagem de símbolos: dez observações já rendem quarenta e cinco
comparações, enquanto o series/runs, que depende do corte pela mediana, só
alcança a normal dele com quarenta observações.
Série autocorrelacionada: a Correção
O teste supõe observações independentes, e série ambiental quase nunca é: com autocorrelação positiva o S varia mais do que a fórmula diz, e o teste rejeita bem acima dos 5% nominais. Duas correções publicadas:
- nenhuma — o teste de Mann (1945), como na dissertação. É o padrão.
- hamed_rao — Hamed & Rao (1998): o mesmo S, com a variância multiplicada
por n/n*, calculado das autocorrelações dos POSTOS da série sem a tendência
de Sen, só as significativas a 5%. A
notatraz o n/n*: acima de 1, a autocorrelação alargou a variância e o Z encolheu. - pre_branqueamento — Yue et al. (2002), o pré-branqueamento livre de
tendência: tira a tendência de Sen, remove o AR(1) do resto pelo r1, devolve
a tendência e testa a série resultante (uma observação a menos; pede 11).
A
notatraz o r1. Como no artigo (passos 1 a 4, p. 1822-1823), o AR(1) é removido sempre, significativo ou não; o r1 é o doacf(o domodifiedmk), n/(n − 1) vezes menor que o da eq. 14a do artigo. - bootstrap_blocos — o mesmo S, com o p-valor de um bootstrap de blocos
móveis (Kundzewicz & Robson, 2004): a série é cortada em blocos de
round(√n) observações seguidas, sorteados com reposição e emendados, 1999
vezes; o p é a fração das reamostras com |S*| ≥ |S|. Os blocos guardam a
dependência de curto alcance e desmancham a tendência. Usa a semente do nó:
o mesmo fluxo dá o mesmo p. A
notatraz o tamanho do bloco.
No Nilo (datasets::Nile, 100 anos):
correção Z p-valor nota
nenhuma -4,128 3,7e-05 S = -1387
hamed_rao -2,820 0,0048 n/n* = 2,143
pre_branqueamento -4,577 4,7e-06 r1 = 0,375, n = 99
As duas primeiras seguem o modifiedmk (mmkh e tfpwmk), conferidas contra ele.
Nenhuma das duas devolve o nível nominal. Medido em série SEM tendência, erro AR(1),
2000 réplicas, rejeição a 5%:
phi n nenhuma hamed_rao pre_branqueamento
0 60 5,1% 8,5% 4,7%
0,3 60 13,5% 15,3% 15,6%
0,6 60 30,7% 21,1% 39,4%
0,6 120 33,4% 18,0% 43,1%
O Hamed-Rao reduz o excesso quando a autocorrelação é forte, mas não o elimina e custa um pouco em ruído branco; o pré-branqueamento livre de tendência PIORA o nível, como Hamed (2009) já apontava — a tendência de Sen estimada na série autocorrelacionada volta somada. Use-o para reproduzir um trabalho que o aplicou, não como remédio. Em raros casos (até 1% das réplicas acima) a soma do Hamed-Rao sai negativa e o bloco recusa em vez de devolver NaN.
O bootstrap_blocos é a correção que mais se aproxima do nível, e ainda
assim não o alcança com autocorrelação forte. Medido em série SEM tendência,
AR(1), 1000 réplicas por caso (erro de Monte Carlo de 0.7 a 0.9 ponto),
rejeição a 5%:
phi n nenhuma bootstrap_blocos
0.3 60 16.0% 7.2%
0.3 120 13.6% 5.5%
0.6 60 31.0% 9.0%
0.6 120 31.2% 7.7%
Com autocorrelação moderada e série de uns cem pontos ele devolve o nível;
com phi de seis décimos, reduz o excesso de 31% para 8% a 9%, sem zerá-lo. O
preço é poder: com uma tendência de 1.8 desvio do ruído ao longo da série, ele
detecta em 77% (phi 0.3, n = 60), 96% (phi 0.3, n = 120), 43% (phi 0.6, n =
60) e 66% (phi 0.6, n = 120) das vezes — menos que o teste sem correção, cujo
poder aparente vem em parte do nível inflado. A regra de bloco do
modifiedmk::bbsmk (autocorrelações significativas seguidas, mais um) dá
blocos de 3 a 4 e rejeitou 17% a 19% com phi 0.6 (300 réplicas); por isso o
bloco aqui é √n. Com autocorrelação forte, prefira modelar o erro
(series/regression com Erro = arma e o models/anova_table).
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.
- 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
Teste se há tendência monotônica ao longo do tempo sem exigir uma forma linear. O teste avalia ordenação, não o tamanho da mudança.
Pressupostos
Com Correção
nenhuma, sob H0 as observações são independentes (sem autocorrelação). Autocorrelação positiva, comum em série ambiental, faz o teste rejeitar bem mais que o nível nominal.Verificar:Correlograma (ACF)Ljung-Box
Se falhar: Troque a Correção para
bootstrap_blocos(p por bootstrap de blocos móveis; o que mais se aproxima do nível),hamed_rao(variância corrigida pelas autocorrelações dos postos) oupre_branqueamento(remove o AR(1) antes do teste).Com
hamed_rao, a dependência está nas autocorrelações significativas dos postos da série sem a tendência de Sen; compre_branqueamento, ela é um AR(1) e a tendência é linear (Sen). Nenhuma das duas devolve o nível nominal: medido sem tendência, AR(1) phi = 0,6, n = 60, rejeitam a 5% em 21% (hamed_rao) e 39% (pre_branqueamento, pior que os 31% sem correção; Hamed 2009). Combootstrap_blocos, a dependência é de curto alcance (cabe em blocos de √n): medido, 5,5% com phi = 0,3 e n = 120, mas 7,7% a 9,0% com phi = 0,6 (n = 120 e 60).Verificar:Correlograma (ACF)Autocorrelação parcial (PACF)
Se falhar: Com autocorrelação forte, modele o erro:
series/regressioncom Erro =armae o F da tendência (series/regression→models/anova_table).A tendência procurada é monótona (um sentido só). Uma série que sobe e depois desce pode sair sem tendência nenhuma.
Verificar:Série no tempo
Se falhar: Separe os trechos (
series/window) ou procure o ponto de mudança com oseries/pettitt.A variável é contínua: empates são raros. Os empatados saem da conta (ou corrigem a variância), e com muitos o teste perde informação.
Pelo menos 10 observações para a aproximação normal de S.
Configuração
- Correção para autocorrelação —
nenhuma(padrão),hamed_rao,pre_branqueamentooubootstrap_blocos.
Uma entrada: serie.
Exemplo
library(trama)
reg <- tr_registry()
tr_use("trama.series", registry = reg)
tr_flow(reg) |>
tr_add("nilo", "series/example", dataset = "Nile") |>
tr_add("mk", "series/mann_kendall", from = "nilo") |>
tr_add("mk_hr", "series/mann_kendall", correcao = "hamed_rao", from = "nilo")Como interpretar
Um teste (data/test), com o S 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.