Skip to contents

Implementa o teste de Mann-Kendall sazonal de Hirsch, Slack & Smith (1982), adequado para series temporais de qualidade da agua com sazonalidade (periodos chuvoso/seco ou meses do ano). A estatistica S total e a soma das estatisticas S computadas separadamente por estacao, o que remove o vies introduzido pela sazonalidade nos testes convencionais.

Usage

mk_seasonal(
  df,
  param,
  date_col = "data",
  by = "ponto",
  period = c("monthly", "season"),
  season_col = "season",
  alpha = 0.05,
  locale = c("pt", "en")
)

Arguments

df

Data frame com ao menos a coluna do param e date_col.

param

Character; nome da coluna do parametro a testar.

date_col

Character; nome da coluna de datas. Default "data".

by

Character vector; colunas de agrupamento. Default "ponto".

period

"monthly" (default) — 12 estacoes (meses 1–12); ou "season" — 2 estacoes definidas por season_col (requer assign_season() previamente).

season_col

Character; nome da coluna de periodo hidrologico, usado apenas quando period = "season". Default "season".

alpha

Numeric; nivel de significancia. Default 0.05.

locale

Character; idioma dos rotulos de tendencia: "pt" (default) ou "en".

Value

Um tibble com uma linha por grupo, contendo:

parametro

Nome do parametro testado.

n_obs

Total de observacoes validas.

n_estacoes

Numero de estacoes com dados suficientes (>= 3).

S

Estatistica S de Mann-Kendall agregada.

varS

Variancia de S.

Z

Estatistica Z normalizada.

p_value

p-valor bilateral.

tau

Tau de Kendall normalizado.

sen_slope

Inclinacao de Sen (unidade/ano).

significativo

Logical; p_value < alpha.

tendencia

"crescente", "decrescente" ou "sem_tendencia".

Details

Algoritmo (Hirsch et al., 1982):

  1. Para cada estacao m, extrai as observacoes dentro daquela estacao e calcula \(S_m\) e \(VAR(S_m)\).

  2. Soma: \(S = \sum S_m\), \(VAR(S) = \sum VAR(S_m)\).

  3. Estatistica Z com correcao de continuidade: \(Z = (S - \text{sgn}(S)) / \sqrt{VAR(S)}\).

  4. p-valor bilateral pela distribuicao normal padrao.

A inclinacao de Sen e calculada sobre a serie completa (mediana de todas as inclinacoes pareadas \((x_j - x_i)/(t_j - t_i)\)), expressa em unidades do parametro por ano.

Requer ao menos 3 observacoes por estacao para incluir a estacao no calculo; estacoes com menos dados sao ignoradas (com aviso).

References

Hirsch, R. M., Slack, J. R., & Smith, R. A. (1982). Techniques of trend analysis for monthly water quality data. Water Resources Research, 18(1), 107–121. doi:10.1029/WR018i001p00107

Examples

data("wq_demo", package = "tikatuwq")

# Mann-Kendall mensal (period = "monthly")
mk_seasonal(wq_demo, param = "turbidez", by = "ponto")
#> Warning: Grupo 'FBS-BRH-250': menos de 2 estacoes com dados suficientes para o teste.
#> Warning: Grupo 'FBS-BRH-300': menos de 2 estacoes com dados suficientes para o teste.
#> Warning: Grupo 'FBS-BRH-450': menos de 2 estacoes com dados suficientes para o teste.
#> Warning: Grupo 'FBS-BRH-950': menos de 2 estacoes com dados suficientes para o teste.
#> # A tibble: 4 × 12
#>   ponto     parametro n_obs n_estacoes     S  varS     Z p_value   tau sen_slope
#>   <chr>     <chr>     <int>      <int> <dbl> <dbl> <dbl>   <dbl> <dbl>     <dbl>
#> 1 FBS-BRH-… turbidez      5          0     0     0    NA      NA     0    -6.37 
#> 2 FBS-BRH-… turbidez      5          0     0     0    NA      NA     0    -0.821
#> 3 FBS-BRH-… turbidez      5          0     0     0    NA      NA     0    -2.34 
#> 4 FBS-BRH-… turbidez      5          0     0     0    NA      NA     0    -5.48 
#> # ℹ 2 more variables: significativo <lgl>, tendencia <chr>

# \donttest{
# Mann-Kendall por periodo hidrologico
d <- assign_season(wq_demo, region = "bahia")
mk_seasonal(d, param = "turbidez", by = "ponto",
            period = "season", season_col = "season")
#> Warning: Grupo 'FBS-BRH-250': menos de 2 estacoes com dados suficientes para o teste.
#> Warning: Grupo 'FBS-BRH-300': menos de 2 estacoes com dados suficientes para o teste.
#> Warning: Grupo 'FBS-BRH-450': menos de 2 estacoes com dados suficientes para o teste.
#> Warning: Grupo 'FBS-BRH-950': menos de 2 estacoes com dados suficientes para o teste.
#> # A tibble: 4 × 12
#>   ponto     parametro n_obs n_estacoes     S  varS     Z p_value   tau sen_slope
#>   <chr>     <chr>     <int>      <int> <dbl> <dbl> <dbl>   <dbl> <dbl>     <dbl>
#> 1 FBS-BRH-… turbidez      5          1     1  3.67    NA      NA   0.1    -6.37 
#> 2 FBS-BRH-… turbidez      5          1     3  3.67    NA      NA   0.3    -0.821
#> 3 FBS-BRH-… turbidez      5          1    -1  3.67    NA      NA  -0.1    -2.34 
#> 4 FBS-BRH-… turbidez      5          1    -4  8.67    NA      NA  -0.4    -5.48 
#> # ℹ 2 more variables: significativo <lgl>, tendencia <chr>
# }