Skip to contents

Gera um grafico de series temporais com pontos observados e linhas de tendencia ajustadas. Suporta metodos robustos (Theil-Sen), lineares (OLS) ou suavizados (LOESS). Util para verificar tendencias de parametros ambientais por ponto e/ou rio.

Usage

plot_trend(
  data,
  param,
  date_col = "data",
  group_cols = c("rio", "ponto"),
  method = c("theilsen", "ols", "loess"),
  show_points = TRUE,
  min_n = 6
)

Arguments

data

data.frame. Deve conter ao menos uma coluna de datas e a coluna do parametro a ser analisado.

param

character. Nome da coluna do parametro (ex.: "turbidez", "iqa").

date_col

character. Nome da coluna de datas. Default = "data".

group_cols

character. Vetor com colunas para agrupamento (ex.: c("rio","ponto")). Use "none" para nao facetar. Default = c("rio","ponto").

method

character. Metodo de ajuste da tendencia:

  • "theilsen" (padrao): regressao Theil-Sen (robusta a outliers).

  • "ols": regressao linear simples (minimos quadrados).

  • "loess": curva suavizada, sem inclinacao unica.

show_points

logical. Mostrar pontos observados? Default = TRUE.

min_n

integer. Numero minimo de observacoes por grupo para calcular tendencia. Default = 6.

Value

Objeto ggplot2, que pode ser plotado diretamente.

Details

  • A funcao desenha pontos e linhas conectando as observacoes, alem da linha de tendencia calculada pelo metodo escolhido.

  • Quando group_cols possui mais de uma categoria, os grupos sao facetados.

  • "theilsen" e mais robusto a valores atipicos do que "ols".

  • "loess" e util quando nao se espera relacao linear no tempo.

See also

Examples

# Exemplo simples: turbidez com tendencia Theil-Sen
set.seed(1)
df <- data.frame(
  data = as.Date("2024-01-01") + 0:11*30,
  rio = "Demo", ponto = "P1",
  turbidez = 20 + (-0.3)*(0:11) + rnorm(12, 0, 1)
)
plot_trend(df, param = "turbidez", method = "theilsen")


# Exemplo com multiplos grupos e facetamento (OLS)
df2 <- data.frame(
  data = rep(seq(as.Date("2024-01-01"), by = "30 days", length.out = 12), 2),
  rio = rep(c("Rio A","Rio B"), each = 12),
  ponto = rep(c("P1","P2"), each = 12),
  od = c(7 + rnorm(12, 0, 0.5), 6 + rnorm(12, 0, 0.5))
)
plot_trend(df2, param = "od", method = "ols")