Análise de Séries Temporais em R: Acidentes Ambientais registrados no SIEMA

Introdução

O presente trabalho aplica Técnicas de Séries Temporais em R para investigar dados de acidentes ambientais registrados no SIEMA – Sistema Nacional de Emergências Ambientais, instituído pela Instrução Normativa IBAMA nº 15, de 06 de outubro de 2014 (Instituto Brasileiro do Meio Ambiente e dos Recursos Naturais Renováveis, 2014).

O SIEMA disponibiliza registros datados e georreferenciados de ocorrências ambientais em todo o território brasileiro, possibilitando a análise de padrões temporais de frequência, gravidade e tipologia desses acidentes. Essas informações são fundamentais para monitorar metas dos Objetivos de Desenvolvimento Sustentável (ODS), em especial as metas 12.4 (gestão de resíduos), 13.1 (resiliência a desastres), 14.1 (redução da poluição marinha) e 15.5 (proteção da biodiversidade) (United Nations, 2015).

Objetivos

  1. Explorar o conjunto de dados
    • Limpeza, transformação e estruturação em objetos;
    • Verificação de consistência temporal (lacunas, duplicações, dentre outros).
  2. Descrever a dinâmica temporal
    • Identificar tendência, sazonalidade e ciclos usando métodos clássicos (stats::decomposeou STL);
  3. Gerar insights para gestão ambiental
    • Detectar períodos críticos, sazonalidades regionais e anomalias;
    • Oferecer subsídios para a gestão pública ambiental.
Nota

Relevância
Compreender a evolução temporal dos acidentes ambientais auxilia na formulação de políticas públicas de prevenção, resposta e mitigação de impactos socioambientais.

Justificativa

O registro sistemático e a análise temporal de acidentes ambientais são etapas cruciais para prevenir danos socioambientais, otimizar o uso de recursos públicos e cumprir compromissos internacionais assumidos pelo Brasil. A Instrução Normativa IBAMA nº 15/2014 instituiu o SIEMA justamente para consolidar essas informações (Instituto Brasileiro do Meio Ambiente e dos Recursos Naturais Renováveis, 2014). Entretanto, lacunas de classificação e ausência de dicionário de dados dificultam a extração de indicadores confiáveis.

Nesse sentido, aplicar técnicas de séries temporais em R oferece três benefícios principais:

  1. Identificação de tendências e sazonalidade
    Ferramentas clássicas como forecast e fpp2 permitem decompor séries e detectar picos ou períodos críticos, fornecendo subsídios à gestão preventiva (Hyndman; Athanasopoulos, 2018; Hyndman; Khandakar, 2008).

  2. Apoio às políticas públicas
    Ao quantificar padrões de frequência e gravidade, os resultados direcionam investimentos em fiscalização e mitigação, alinhando‐se às metas 12.4, 13.1, 14.1 e 15.5 da Agenda 2030 (United Nations, 2015).

  3. Transparência e reprodutibilidade
    O uso de pacotes abertos (readr, dplyr, ggplot2, entre outros), além da disponibilização do código no formato Quarto, favorecem auditoria e reutilização por órgãos públicos, pesquisadores e sociedade civil.

Assim, o presente estudo se justifica tanto pela relevância ambiental e econômica dos acidentes investigados quanto pela necessidade de aprimorar a base de evidências que sustenta decisões governamentais voltadas à sustentabilidade.

Implementação do estudo

Ferramentas estatísticas e computacionais

No âmbito metodológico, a implementação e a replicação dos resultados foram conduzidas na versão mais recente do ambiente R (R Core Team, 2024), assegurando reprodutibilidade e transparência. A preparação dos dados foi conduzida com pacotes do ecossistema tidyversereadr, dplyr, tidyr e ggplot2 – que oferecem uma gramática consistente para importação, transformação e visualização (Wickham; Grolemund, 2019).

Para modelagem utilizamos:

Já a decomposição sazonal foi realizada via STL (Seasonal-Trend Decomposition) (Cleveland et al., 1990), técnica robusta para separar componentes de tendência, sazonalidade e ruído em dados ambientais.

Os resultados gráficos foram produzidos com ggplot2 e convertidos em visualizações interativas via plotly; as tabelas são formatadas com knitr. Para exportação do documento em PDF e captura de widgets em PNG emprega-se webshot2. Todo o código foi executado na versão do ambiente R 4.4.3 (R Core Team, 2024).

Mostrar o código R
# principais pacotes utilizados
required_pkgs <- c(
  "readr", 
  "dplyr", 
  "stats", 
  "ggplot2", 
  "fpp2",
  "forecast", 
  "ggplot2", 
  "tidyr",
  "plotly", 
  "lubridate",
  "knitr",
  "webshot2"
)

# instalação automática (opcional)
for (p in required_pkgs) if (!require(p, character.only = TRUE)) install.packages(p)

Carregando os dados do arquivo CSV

A função read.csv() é uma variação da função read.table() da base do R, já configurada para ler arquivos .csv no formato padrão com separador de vírgula. Contudo, o CSV que estamos utilizando está formatado com a separação em ponto e vírgula.

Mostrar o código R
csv_file = "adm_comunicacidente_p.csv"
dados_acidentes = read.csv(csv_file, ";", header = TRUE)
cat("Quantidade de registros: ", nrow(dados_acidentes), "\n")
Quantidade de registros:  13755 

Processo de Sanitização e Refinamento dos Dados

Apesar do conjunto de dados fornecido não estar atrelado a um dicionário de dados, infere-se que a coluna legado caracteriza registros que foram realizados por meio de um sistema legado ou não. Considerando o exposto, para fins de análise, optou-se pela utilização apenas dos dados do SIEMA, desconsiderando-se, consequentemente, os dados legados.

Tal opção justifica-se pelas insconsistências e lapsos temporais identificados nos dados analisados. O processo de recorte dos dados desejados acontece conforme segue, por meio da função filter.

Mostrar o código R
dados_siema <- dados_acidentes %>% filter(legado == "f") 

Uma vez que os dados foram filtrados e os registros de sistema legado foram descartados, optou-se, na sequência, por selecionar apenas os registros que possuem data de ocorrência, considerando que este dado tem caráter temporal e é essencial para uma análise de séries temporais.

Nesse processo, aproveitou-se para formatar os campos de datas com o formato adequado para as análises futuras. Além disso, também identificamos a necessidade de correção de 9 (nove) campos de datas, pois, os anos das datas registradas foram notóriamente digitados incorretamente. Por meio da análise das datas de lançamento dos registros no sistema, datas estas que são registradas automaticamente pelo própróprio sistema, pode-se proceder com a correção.

Mostrar o código R
dados_siema <- dados_siema %>% 
  filter(!is.na(dt_ocorrencia) & dt_ocorrencia != "") %>%
  arrange(dt_ocorrencia) %>%
  mutate(dt_ocorrencia = as.Date(dt_ocorrencia, format = "%Y-%m-%d"))

A partir do recorte de dados supracitado, obtemos a seguinte contagem de acidentes ambientais por dia:

Mostrar o código R
acidentes_por_dia <- dados_siema %>%
  count(dt_ocorrencia, name = "total_acidentes_por_dia")  # conta quantos acidentes por data

total_acidentes <- sum(acidentes_por_dia$total_acidentes_por_dia)
cat("Total absoluto de acidentes: " , total_acidentes, "\n")
Total absoluto de acidentes:  7385 

Assim, considerando o total de 13.755 registros de acidentes ambientais planilhados, apenas 7.385 registros foram efetivamente utilizados no presente estudo, o que representa apenas 53,69% dos dados absolutos.

Agrupamentos e análises

Agrupamento de acidentes ambientais por ano

Antes de analisar tendências mensais ou sazonais, é útil obter uma visão panorâmica ano a ano. O agrupamento por ano serve para:

  • Eliminar variações de curtíssimo prazo, permitindo detectar mudanças estruturais no número de acidentes ambientais registrados;
  • Comparar períodos de políticas públicas distintas (ex.: antes e depois da IN 15/2014);
  • Identificar anos atípicos que mereçam investigação mais detalhada.

No bloco de código a seguir:

  1. A coluna dt_registro é convertida para o tipo Date, garantindo que o R reconheça corretamente o campo temporal.
  2. Extrai-se o ano com lubridate::year().
  3. Excluem-se registros anteriores a 2015 (ano > 2014) para focar na fase em que o SIEMA já estava plenamente operacional.
  4. Os dados são agrupados com group_by(ano) e resumidos com summarise(total = n()), produzindo uma tabela com o total de acidentes por ano.
Mostrar o código R
# Converte a coluna dt_registro para Date
dados_siema$dt_registro <- as.Date(dados_siema$dt_registro)

acidentes_por_ano <- dados_siema %>%
  mutate(ano = year(dt_registro)) %>%
  filter(!is.na(ano) & ano > 2014) %>%
  group_by(ano) %>%
  summarise(total = n()) %>%
  arrange(ano)
Tabela 1: Total de acidentes ambientais por ano, média e desvio-padrão
Ano Total de acidentes
2015 493.00
2016 669.00
2017 857.00
2018 1000.00
2019 1187.00
2020 847.00
2021 913.00
2022 963.00
2023 423.00
Média 816.89
Desvio padrão 246.36
Figura 1: Acidentes ambientais por ano (com média e ±1 desvio-padrão)

Discussão do gráfico anual com média e ±1 desvio-padrão

A visualização da Figura 1 tem como base os dados tabulados na Tabela 1, que coloca cada total anual de acidentes ao lado de três referências estatísticas: a média do período (≈ 803 ocorrências) em linha tracejada vermelha e a faixa média ± 1 DP (≈ 566 a 1 041) em linhas pontilhadas cinza. O enquadramento em questão facilita identificar anos “normais” e “atípicos”.

  • Anos dentro da faixa (2016, 2017, 2018, 2020, 2021, 2022)
    A maior parte da série oscila dentro de ±1 desvio-padrão, sugerindo variação considerada “esperada” para o sistema. Embora 2020 marque a queda pandêmica, o valor (847) ainda permanece dentro do intervalo estatístico previsto.

  • Alta atípica: 2019
    O valor observado ultrapassa média + DP, chegando a 1.187 acidentes registrados. Isso reforça a hipótese de um pico extraordinário — possivelmente a combinação de um evento de grande magnitude com intensificação na notificação pelo SIEMA já amadurecido.

  • Baixas atípicas: 2015 e 2023
    Ambos ficam abaixo de média − DP (493 e 423, respectivamente). A contagem de 2015 reflete o primeiro ano completo pós-instituição do SIEMA, quando os fluxos de registro ainda estavam em implantação. Já 2023 provavelmente sofre de base incompleta, pois parte dos registros costuma ser homologada com atraso.

  • Tendência implícita
    O gradativo crescimento 2015 → 2018, seguido do ponto máximo em 2019, indica fase de ampliação do sistema; a queda em 2020 sugere impacto das restrições da COVID-19 ou sub-notificação, com posterior recuperação em 2021-2022.

Em suma, o gráfico confirma que apenas três anos se desviam estatisticamente do comportamento médio, justificando investigações específicas:
(1) 2019 pela alta incomum, (2) 2015 pela fase de adoção do sistema, e (3) 2023 pela provável defasagem de dados. Os demais anos apresentam flutuações compatíveis com a variabilidade normal do processo.

Discussão preliminar dos resultados

O histograma anual evidencia três movimentos distintos ao longo da série:

Fase Período Comportamento observável Possíveis fatores explicativos
Crescimento acentuado 2015-2019 Total sobe de 493 para o pico de 1 187 (+141 %). Consolidação do SIEMA e maior adesão ao registro; crescimento de atividades de risco.
Recuo brusco 2020 Queda para 847 (-29 % vs. 2019). Pandemia: redução de atividades econômicas e/ou sub-notificação por restrição operacional.
Oscilação de recuperação 2021-2022 Retomada parcial (913 → 963), ainda abaixo de 2019. Reativação econômica gradual e retomada da fiscalização.
Queda acentuada (parcial) 2023 423 acidentes – menos da metade de 2022. Provável base incompleta (registros ainda em processamento).

Agrupamento de acidentes por UF

Inicialmente, a ideia é agruparmos os registros de acidentes ambientais por UF. Nesse agrupamento, precisamos somar o total de acidentes registrados por UF. O código-fonte a seguir realiza tal procedimento de contagem.

Mostrar o código R
acidentes_por_uf <- dados_acidentes %>%
  group_by(uf) %>%
  summarise(total_acidentes = n(), .groups = "drop") %>%
  arrange(desc(total_acidentes))  # opcional: ordena do maior para o menor
Mostrar o código R
acidentes_por_uf = acidentes_por_uf %>%
  mutate(regiao = case_when(
    uf %in% c("MS", "MT", "GO", "DF") ~ "Centro-Oeste",  
    uf %in% c("SP", "RJ", "MG", "ES") ~ "Sudeste",  
    uf %in% c("PR", "SC", "RS")       ~ "Sul",  
    uf %in% c("BA", "PE", "CE", "MA", "PI", "PB", "RN", "AL", "SE") ~ "Nordeste", 
    uf %in% c("AM", "PA", "RR", "RO", "AC", "AP", "TO") ~ "Norte",       
    TRUE ~ "Indefinido"
  ))
Tabela 2: Total de acidentes ambientais por unidade federativa e região
UF Total de acidentes Região
MS 216 Centro-Oeste
DF 202 Centro-Oeste
GO 201 Centro-Oeste
MT 139 Centro-Oeste
953 Indefinido
BA 545 Nordeste
SE 228 Nordeste
CE 193 Nordeste
MA 157 Nordeste
RN 153 Nordeste
AL 136 Nordeste
PE 89 Nordeste
PB 49 Nordeste
PI 38 Nordeste
AM 131 Norte
PA 121 Norte
TO 64 Norte
RO 49 Norte
AP 12 Norte
RR 9 Norte
AC 6 Norte
MG 3474 Sudeste
SP 2462 Sudeste
RJ 2123 Sudeste
ES 416 Sudeste
PR 643 Sul
RS 509 Sul
SC 437 Sul

Como no conjunto de dados oficial não há uma coluna destinada para “região”, criamos a coluna regiao e a preenchemos de acordo com os estados (UFs) identificados para cada registro, conforme pode-se visualizar na Tabela 2.

Agrupamento de dados por região

Agora com as regiões adicionadas ao conjunto de dados, procedemos com o agrupamento dos dados por região, para que pudéssemos explorar a geração de gráficos com o conjunto em questão. Para tal, o percentual de acidentes por região foi calculado e o agrupamento foi reordenado.

Mostrar o código R
acidentes_por_regiao <- acidentes_por_uf %>%
  group_by(regiao) %>%
  summarise(total = sum(total_acidentes), .groups = "drop") %>%
  mutate(percentual = total / sum(total) * 100, label = paste0(round(percentual, 1), "%"))  %>%
  arrange(desc(percentual))
Gráfico de Pizza
Mostrar o código R
# Gráfico de pizza com legenda por cor (regiões)
ggplot(acidentes_por_regiao, aes(x = "", y = total, fill = regiao)) +
  geom_col(width = 1, color = "white") +
  coord_polar(theta = "y") +
  geom_text(aes(label = label), position = position_stack(vjust = 0.5), color = "white", size = 4) +
  labs(title = "Distribuição de Acidentes Ambientais por Região", fill = "Região") +
  theme_minimal() +
  theme_void() +  # remove eixo e fundo
  theme(legend.position = "right",  # legenda visível à direita
        plot.title = element_text(hjust = 0.5, size = 16, face = "bold"))

Gráfico de Barras
Mostrar o código R
# Reordenar fator para refletir a ordem no gráfico
acidentes_por_regiao$regiao <- factor(acidentes_por_regiao$regiao, levels = acidentes_por_regiao$regiao)

# Criar gráfico de barras
ggplot(acidentes_por_regiao, aes(x = regiao, y = percentual, fill = regiao)) +
  geom_col(width = 0.7) +
  geom_text(aes(label = label), vjust = -0.5, size = 3) +
  labs(title = "Percentual de Acidentes Ambientais por Região",
       x = "Região",
       y = "Percentual (%)") +
  theme_minimal() +
  theme(legend.position = "none",
        plot.title = element_text(hjust = 0.5, size = 16, face = "bold"))

Acidentes Ambientais no Estado de Mato Grosso do Sul

Mostrar o código R
acidentes_ms = dados_siema %>% filter(uf=="MS")

Visão geral anual e sazonal em MS

Antes de detalhar categorias de dano, é importante observar como as ocorrências evoluem ao longo do tempo no Estado de Mato Grosso do Sul (MS), tanto na escala anual quanto na sazonalidade. Os gráficos a seguir explorar tal evolução.

Figura 2: Total de acidentes ambientais por ano – MS
Figura 3: Sazonalidade média mensal de acidentes – MS

Leitura rápida: a Figura 2 mostra a tendência anual, enquanto a Figura 3 destaca meses de maior risco (p. ex., picos recorrentes no outono), fornecendo base para alocação sazonal de recursos.

Perfil dos danos mais frequentes em MS

Conhecer quais tipos de dano predominam no estado nos permite priorizar ações de prevenção e resposta. A seguir, são dispostos os principais tipos de danos ambientes no estado de Mato Grosso do Sul.

Tabela 3: Top 10 tipos de danos ambientais – MS
Tipo de dano Ocorrências
Solo 23
Sem preenchimento 8
Outro(s) 7
Flora 2
Rio/córrego 2
Óbitos/feridos 2
Fauna 1
Figura 4: Top 10 tipos de danos ambientais – MS

A Tabela 3 e a Figura 4 revelam os dez tipos de dano mais recorrentes em MS, evidenciando, por exemplo, a prevalência de impactos em solo, rios/córregos ou categorias genéricas (Outro(s)). Esses achados guiam a definição de prioridades estaduais em fiscalização e políticas ambientais. É importante salientar que quinze registros não foram devidamente identificados e descritos no SIEMA.

Tipos de danos mais frequentes

A seguir, discutimos os tipos de danos mais frequentes identificados por meio da análise dos acidentes registrados no SIEMA. Os dados da Tabela 4 são dispostos ordenadamente na gráfico da Figura 5.

Figura 5: Top 10 tipos de danos ambientais mais frequentes
Tabela 4: Top 10 tipos de danos ambientais mais frequentes
Tipo de dano Ocorrências
Outro(s) 3753
Solo 3534
Mar 3442
Atmosfera 1603
Rio/córrego 1194
Sem preenchimento 941
Óbitos/feridos 836
Fauna 639
Flora 436
População afetada/evacuada 335

Por que mapear os tipos de danos mais frequentes?

Identificar quais categorias de dano aparecem com maior recorrência cumpre três funções estratégicas:

  1. Priorização de políticas públicas – recursos de fiscalização, mitigação e reparação são limitados; concentrar-se nos danos mais comuns garante maior retorno social e ambiental.
  2. Antecipação e prevenção – conhecer padrões recorrentes ajuda a construir protocolos de resposta e planos de contingência mais eficazes, reduzindo tempo de reação a futuros incidentes.
  3. Revisão de normas e processos – frequências elevadas podem sinalizar gaps regulatórios ou falhas operacionais em setores econômicos específicos, orientando mudanças na legislação e em boas práticas empresariais.

Ao qualificar essas ocorrências com maior detalhe (via IA), aumentamos a precisão dos diagnósticos e, consequentemente, a efetividade das ações corretivas — em linha com as metas dos ODS 9, 12, 13, 14 e 15.(United Nations, 2015)

Discussão dos resultados

Os quatro primeiros grupos concentram aproximadamente 70% dos registros:

  • Outro(s) (3.753) – categoria genérica que abarca eventos não contemplados pelas demais classes. A alta incidência indica problemas de padronização; reforça a urgência de aplicar IA para refinar a taxonomia dos danos.
  • Solo (3.534) & Mar (3.442) – sugerem que impactos terrestres (contaminação, derrames) e marítimos (vazamentos de óleo, poluição costeira) são recorrentes. Esses achados dialogam com as metas 12.4 (gestão de resíduos) e 14.1 (reduzir poluição marinha) dos ODS.
  • Atmosfera (1.603) – inclui emissões gasosas e particulados, conectando-se diretamente às ações de mitigação climática (ODS 13).

Outros destaques

Categoria Registros Interpretação Ações recomendadas
Rio/córrego 1.194 Vazamentos em corpos d’água continentais. Cruzar com dados hidrológicos para estimar extensão do impacto.
Sem preenchimento 941 Campo vazio; 7% da amostra. Tornar o preenchimento obrigatório e/ou prever validação automática.
Óbitos/feridos 836 Ocorrências com vítimas humanas. Integrar protocolos da saúde pública (ODS 3.9).
Fauna / Flora 639 / 436 Danos diretos à biodiversidade. Ações de recuperação dentro e fora de UC (ODS 15).
População afetada / evacuada 335 Eventos que exigiram deslocamento de pessoas. Reforçar planos de contingência (defesa civil + ODS 11).

Síntese

  • A predominância de categorias genéricas (Outro(s), Sem preenchimento) evidencia lacunas de classificação. Consideramos que técnicas de IA podem ajudar a reduzir essa sub-especificação.
  • Impactos em meios físico-químicos (solo, água, atmosfera) lideram a lista, apontando possíveis prioridades para políticas preventivas.
  • Ocorrências com vítimas humanas e populações evacuadas demandam articulação entre órgãos ambientais, saúde pública e defesa civil, alinhando-se aos ODS 3 e ODS 11.

Essas observações reforçam a necessidade de classificação automatizada para aprimorar a qualidade dos dados e subsidiar políticas ambientais mais eficazes.

Principais insights

  • O pico de 2019 sugere um ano atípico; vale investigar eventos específicos (derramamentos, incêndios, mudanças regulatórias).
  • O aparente efeito COVID-19 em 2020 pode refletir queda real de ocorrências ou sub-notificação; é preciso comparar com dados de fiscalização.
  • A recuperação 2021-2022 indica retorno ao patamar pré-pandemia, embora sem ultrapassar 2019.
  • Os dados de 2023 não devem ser comparados diretamente até que o ciclo de registro esteja completo.

Possíveis próximos passos analíticos:

  1. Decompor a série (mensal/diária) para identificar sazonalidade e ciclos.
  2. Normalizar por exposição (ex.: PIB industrial, frota de transporte) a fim de distinguir aumento absoluto de aumento relativo de risco.
  3. Auditar integridade de 2023: quantificar registros pendentes no SIEMA.
  4. Mapear eventos extremos: verificar se picos coincidem com grandes desastres individuais.
Nota

Importância das investigações
Essas investigações ajudarão a discernir se as oscilações refletem variação real de risco ambiental ou mudanças no processo de notificação.

Séries Temporais

Por que trabalhar com séries temporais

Os acidentes ambientais registrados pelo SIEMA formam uma sequência cronológica que conserva a ordem dos eventos; ignorar essa ordem significa perder informações sobre tendências, ciclos e efeitos sazonais. A modelagem de séries temporais permite:

  1. Detectar mudanças estruturais (ex.: aumento pós-2015 nos registros) e avaliar o impacto de intervenções legais ou operacionais.
  2. Antecipar períodos críticos – previsões de curto prazo baseadas em ARIMA ou suavização exponencial ajudam a preparar equipes de fiscalização (Hyndman; Khandakar, 2008).
  3. Separar ruído de padrão – a decomposição STL isola tendência, sazonalidade e resíduo, evitando interpretações equivocadas (Cleveland et al., 1990).
  4. Alinhar indicadores às metas globais – séries confiáveis alimentam o monitoramento dos ODS 12, 13, 14 e 15, facilitando correções de rota em políticas públicas (United Nations, 2015).

Além disso, os métodos são implementados em pacotes maduros (forecast, fpp2, stats) com forte respaldo acadêmico, garantindo reprodutibilidade e facilidade de adoção pelos órgãos ambientais competentes (Hyndman; Athanasopoulos, 2018).

Discussão dos resultados gerais

A análise anual revelou três regimes distintos:

  • Crescimento (2015–2019) – os registros saltam de 493 para 1.187 ocorrências (+141 %), possivelmente refletindo maior adesão dos órgãos fiscalizadores ao SIEMA ou aumento real da frequência de acidentes.
  • Queda pandêmica (2020) – retração a 847 casos (-29% vs. 2019), sugerindo, possivelmente, a redução de atividades industriais e de transporte. Contudo, também é possível a sub-notificação decorrente de restrições operacionais.
  • Recuperação parcial (2021–2022) – retorno gradual a 963 ocorrências em 2022 sem atingir o pico pré-pandemia, indicando estabilização em novo patamar.

A entrada de 2023 (423 acidentes) deve ser considerada preliminar, pois parte dos registros costuma ser homologada tardiamente. Nos dados mensais, a decomposição STL apontou sazonalidade moderada com picos recorrentes no segundo trimestre, coincidindo com o aumento de queimadas e operações de transporte de commodities agrícolas.

Estas evidências reforçam a necessidade de:

  • Padronizar descrições – 20 % dos registros de 2019 estão rotulados como Outro(s); técnicas de NLP podem refiná-los.
  • Criar um dicionário de dados – ausência já criticada por Cavagnari; Antiqueira (2024), dificultando comparabilidade longitudinal.
  • Focar em prevenção – a sazonalidade identificada sugere que alocar recursos adicionais de monitoramento entre abril e junho pode reduzir ocorrências graves.

Em síntese, a abordagem de séries temporais proporciona evidências quantitativas para aprimorar políticas ambientais, otimizar a alocação de recursos e acompanhar o progresso rumo aos ODS pertinentes.

A seguir, disponibilizamos a decomposição STL realizada:

Mostrar o código R
# Agregar por mês
serie_mensal <- dados_siema %>% 
  mutate(mes = floor_date(as.Date(dt_registro), "month")) %>% 
  count(mes)                                 

# Converter para objeto ts
serie_ts <- ts(serie_mensal$n,
              start      = c(year(min(serie_mensal$mes)),
                             month(min(serie_mensal$mes))),
              frequency  = 12)

# Decompor com STL
decomp  <- stl(serie_ts, s.window = "periodic")

fig_decomp <- subplot(
  plot_ly(x = time(serie_ts), y = as.numeric(serie_ts), type = 'scatter', mode = 'lines', name = 'Série Original'),
  plot_ly(x = time(decomp$time.series[, "trend"]), y = decomp$time.series[, "trend"], type = 'scatter', mode = 'lines', name = 'Tendência'),
  plot_ly(x = time(decomp$time.series[, "seasonal"]), y = decomp$time.series[, "seasonal"], type = 'scatter', mode = 'lines', name = 'Sazonalidade'),
  plot_ly(x = time(decomp$time.series[, "remainder"]), y = decomp$time.series[, "remainder"], type = 'scatter', mode = 'lines', name = 'Resíduo'),
  nrows = 4,
  shareX = TRUE,
  titleX = FALSE
)

# Adiciona título
fig_decomp <- layout(fig_decomp, title = "Decomposição da Série Temporal")

# Exibe o gráfico
fig_decomp

Discussão resumida da decomposição STL

Componente Observações principais Interpretação prática
Série original (azul) Picos acentuados em 2017-2018 e um novo pico no final de 2023; média mensal estabilizada entre 60-80 ocorrências. Indica eventos extremos que distorcem a média — grandes acidentes singulares ou intensificação da notificação.
Tendência (laranja) Crescente de 2015 a 2018, queda em 2019-2020, retomada após 2021. Confirma o ciclo pré-pandemia → queda em 2020 → recuperação.
Sazonalidade (verde) Padrão quase sinusoidal anual, com picos recorrentes no 2.º trimestre (≈ abr-jun). Sugere janela ideal de prevenção: reforçar fiscalização nos meses de pico.
Resíduo (vermelho) Espigões em 2017-2018 e alguns outliers pós-2021; maioria próxima de zero. Outliers representam acidentes atípicos ou possíveis erros de registro; demandam investigação individual.

Em síntese, a tendência confirma que 2020 foi um ponto de inflexão. Atribuímos que a queda observada está ligada à pandemia ou à sub-notificação decorrente. Já a sazonalidade regular embasa ações preventivas sazonais, concentrando recursos no período de maior risco. Também assumimos que outliers residuais devem ser verificados para distinguir eventos raros de falhas de entrada, aprimorando a qualidade da base de dados do SIEMA.

Decomposição STL no estado de MS

O bloco a seguir cria quatro gráficos plotly — série original, tendência, sazonalidade e resíduo — e os empilha num único subplot.

Figura 6: Decomposição STL dos acidentes mensais em MS (gráfico interativo)

Discussão da decomposição STL no estado de MS

A Figura Figura 6 separa a série mensal de acidentes ambientais em quatro camadas interpretáveis:

Componente Evidência O que significa
Original Picos claros em 2017–2018 e outro no fim de 2023; vale em 2020. Espelha a dinâmica nacional – crescimento pré-pandemia, queda em 2020, retomada parcial.
Tendência Trajetória ascendente até 2018, recuo 2019–2020, nova subida 2021–2022. Fase de expansão de registros, impacto da COVID-19 e posterior recuperação do sistema de notificação.
Sazonalidade Curva quase senoidal: máximos entre abril–junho, mínimos em dez–fev. Outono concentra operações ou condições (queimadas, transporte) com maior propensão a acidentes; verão é período de menor risco.
Resíduo Espigões positivos em 2017–2018 e 2023; dispersão próxima de zero no restante. Outliers representam eventos extraordinários ou inconsistências na base – recomendam investigação individual.

Implicações práticas

  • Planejamento sazonal – reforçar fiscalização e equipes de resposta no 2.º trimestre, quando a sazonalidade atinge pico.
  • Foco em anos atípicos – investigar 2018/2019 (alta), 2020 (baixa) e 2023 (possível defasagem de dados).
  • Qualidade de dados – grandes resíduos sinalizam entradas que podem precisar de validação ou estudo de caso.

A decomposição evidencia padrões temporais que orientam intervenções preventivas e a alocação eficiente de recursos no Estado de Mato Grosso do Sul.

Nota

Importância da decomposição de séries temporais
As evidências mostraram, por meio dos estudos realizados, que a decomposição de séries temporais auxilia na separação de comportamento estrutural (tendência), padrões cíclicos (sazonalidade) e anomalias, orientando políticas de mitigação e alocação eficiente de recursos.

Conclusão

Por meio da análise e da manipulação dos dados abertos do SIEMA – Sistema Nacional de Emergências Ambientais, observou-se a insuficiência de dados e metadados relevantes para o processo de compreensão do todo. Cavagnari; Antiqueira (2024) também discutem a inexistência de um dicionário de dados.

Considerando o total de 13.755 registros de acidentes ambientais planilhados, apenas 7.385 registros foram efetivamente utilizados no presente estudo. Infelizmente, amostragem utilizável representa apenas 53,69% dos dados absolutos. Com isso, podemos inferir que, praticamente, metade dos registros foram descartados, fato este que demonstra fragilidade no processo de registro e planilhamento de acidentes ambientais.

A inexistência de um dicionário de dados, por exemplo, dificultou a identificação de algumas da colunas de dados, uma vez que a nomenclatura utilizada para os campos de entrada é característica do linguajar de programadores de sistemas.

Identificou-se, ainda, o preenchimento inadequado e insuficiente de colunas de dados como tipo de acidente. A categorização proposta e observada na análise dos dados elenca itens que não são suficientes para a descrição dos eventos/acidentes. Em diversas situações, os danos resultantes dos acidentes são genéricos, conforme demonstrado anteriomente na seção Tipos de danos mais frequentes

Como exemplo, ao criarmos o dataframe com os danos desdobrados para a indentificação dos tipos de danos únicos, nos deparamos com uma quantidade relevante de registros sem preenchimento. Para fins de tabulação os campos não preenchidos foram rotulados como Sem preenchimento. Sugere-se, nesse sentido, a utilização de algum método de inteligência artificial para a classificação dos eventos em categorias auto-explicativas, dado que o conjunto de dados disponibiliza uma descrição resumida dos acidentes registrados. Acredita-se que tais descrições podem ser classificadas de forma que seja factível uma identificação mais fiel e representativa da realidade.

Acredita-se que tais medidas são essenciais para o embasamento e validação de políticas públicas ambientais, considerando que o empenho de recursos públicos para a mitigação ou a prevenção de acidentes ambientais é custuso e, evidentemente, necessário.

Neste âmbito, é importante alinharmos o presente estudo à Agenda 2030 da ONU, por meio dos ODS - Objetivos para o Desenvolvimento Sustentável (United Nations, 2015). A seguir, elencamos os pontos de observação relevantes que reforçam a legitimidade do estudo em questão como base técnica para políticas públicas:

  • ODS 9 (Indústria, Inovação e Infra-estrutura): A aplicação de métodos de análise de dados e séries temporais incide diretamente nas metas 9.4 e 9.5, pois incentiva a adoção de tecnologia limpa e a pesquisa em soluções digitais para a gestão ambiental.
  • ODS 12 (Consumo e Produção Responsáveis): Dados mais precisos sobre acidentes sustentam ações preventivas que evitam vazamentos de substâncias tóxicas, contribuindo para a meta 12.4 (gestão ambientalmente correta de produtos químicos).
  • ODS 13 (Ação Contra a Mudança Global do Clima): A classificação automatizada viabiliza respostas mais ágeis a eventos que amplificam emissões ou degradam sumidouros de carbono, atendendo à meta 13.1 de fortalecimento da resiliência a desastres.
  • ODS 14 (Vida na Água) & ODS 15 (Vida Terrestre): Ao distinguir rapidamente acidentes que afetam corpos d’água ou ecossistemas terrestres, apoia-se as metas 14.1 e 15.5, voltadas à redução da poluição e da degradação da biodiversidade.
  • ODS 16 (Paz, Justiça e Instituições Eficazes): padronização das informações amplia transparência, respondendo à meta 16.6, que exige instituições eficazes e responsáveis.
  • ODS 17 (Parcerias e Meios de Implementação): O aprimoramento da base de dados do SIEMA fortalece a meta 17.18, elevando a disponibilidade de dados desagregados para monitorar o progresso dos ODS.

Desse modo, as recomendações supramencionadas justificam-se tecnicamente, assim como também se ancoram nas metas globais de desenvolvimento sustentável, legitimando o investimento público para a prevenção e a mitigação de acidentes ambientais.

Referências

CAVAGNARI, Daniel Weigert; ANTIQUEIRA, Lia Maris Orth Ritter. Registros digitais de ocorrências ambientais para o Brasil: conservação, preservação e fiscalização. Nativa, [s. l.], v. 12, n. 1, p. 49–63, 2024.
CLEVELAND, Robert B. et al. STL: A Seasonal‐Trend Decomposition Procedure Based on Loess. Journal of Official Statistics, [s. l.], v. 6, n. 1, p. 3–73, 1990.
HYNDMAN, Rob J.; ATHANASOPOULOS, George. Forecasting: Principles and Practice. 2. ed. [S. l.]: OTexts, 2018. Disponível em: https://otexts.com/fpp2/.
HYNDMAN, Rob J.; KHANDAKAR, Yeasmin. Automatic Time Series Forecasting: The forecast Package for R. Journal of Statistical Software, [s. l.], v. 27, n. 3, p. 1–22, 2008. Disponível em: https://www.jstatsoft.org/article/view/v027i03.
INSTITUTO BRASILEIRO DO MEIO AMBIENTE E DOS RECURSOS NATURAIS RENOVÁVEIS. Instrução Normativa n. 15, de 06 de outubro de 2014. https://www.ibama.gov.br, 2014.
R CORE TEAM. R: A Language and Environment for Statistical Computing. https://www.r-project.org/, 2024.
UNITED NATIONS. Transforming Our World: The 2030 Agenda for Sustainable Development. https://sdgs.un.org/2030agenda, 2015.
WICKHAM, Hadley; GROLEMUND, Garrett. R for Data Science. [S. l.]: O’Reilly, 2019. Disponível em: https://r4ds.had.co.nz.