Análisis Exploratorio de Incendios de la Provincia de Neuquén.

Secretaría de Emergencias y Gestión de Riesgos - Gobierno de la provincia de Neuquén

¿Cuál es la función del Observatorio Provincial de Gestión de Riesgos?

El Observatorio Provincial de Gestión de Riesgos tiene como objetivo contribuir al diseño, implementación y monitoreo de políticas públicas tendientes a optimizar la gestión integral del riesgo en la provincia del Neuquén, a través del desarrollo de un sistema de información que permita recopilar, analizar y consolidar datos relevantes para la toma de decisiones y la mejora continua de las estrategias de reducción de riesgo y abordaje de situaciones de emergencias. Sus funciones se enmarcan en la ley provincial 2713: “Enfoque de riesgo en políticas de planificación y desarrollo territorial de la Provincia del Neuquén”.

FUENTES DE INFORMACIÓN:

CIAT – Centro de Información de Alerta Temprana

SIGISVI - Sistema Integral de Gestión de la Información de Seguridad Vial

Vialidad Provincial (Estado de las rutas)

RAPH (SIEN) Registro de Atención Pre Hospitalaria

Medios gráficos de comunicación

OpenWeatherMap

Servicio meteorológico Nacional

Policía de la provincia de Neuquén

Dirección Bomberos de la Policía

Sistema de Manejo del Fuego

Ficha Técnica: Este proyecto tiene como objetivo analizar y procesar los datos de incendios forestales y de interfase recopilados por las brigadas del Sistema Provincial de Manejo del Fuego de Neuquén. Su propósito es identificar patrones y tendencias en los eventos, facilitar la comprensión de las causas y el impacto de los incendios, y proporcionar información útil para la optimización de recursos y la planificación estratégica.

Para alcanzar estos objetivos, se empleó una metodología estructurada que abarcó la recolección de datos de las brigadas forestales, su limpieza y procesamiento, y por último se realizó un análisis sintético de los datos. A continuación, se presentan diversos gráficos que facilitan la visualización de los resultados de manera clara y comprensible.

#install.packages("readxl")
#install.packages("dplyr")
#install.packages("ggplot2")
#install.packages("openxlsx")
library(readxl)
library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(stringr)
library(tidyr)
library(openxlsx)
## Warning: package 'openxlsx' was built under R version 4.4.2

Archivo

mi_data <- read_excel("incendios_spmf.xlsx")

Gráfico clasificación vegetación

library(plotly)
## Warning: package 'plotly' was built under R version 4.4.2
## 
## Adjuntando el paquete: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
# Contar las ocurrencias de cada clasificación
data_count <- table(mi_data$clasificacion_vegetacion)

# Convertir el conteo en un data frame
data_frame <- as.data.frame(data_count)
colnames(data_frame) <- c("categoria", "valor") # Renombrar columnas para compatibilidad

# Gráfico de torta interactivo
fig <- plot_ly(
  data_frame,
  labels = ~categoria,
  values = ~valor,
  type = 'pie'
) %>%
  layout(
    title = "Distribución de Clasificación de Vegetación",
    showlegend = TRUE,
    legend = list(
      title = list(text = "Clasificación"),
      x = 1.3, # Mover la leyenda hacia la derecha
      y = 0.5
    ),
    margin = list(l = 0, r = 150, t = 50, b = 50) # Extender el margen derecho
  )

fig

Gráfico Regiones

library(plotly)

# Contar las ocurrencias de cada clasificación
data_count <- table(mi_data$`Regional del SPMF  Interviniente`)

# Convertir el conteo en un data frame
data_frame <- as.data.frame(data_count)
colnames(data_frame) <- c("categoria", "valor") # Renombrar columnas para compatibilidad

# Gráfico de torta interactivo
fig <- plot_ly(
  data_frame,
  labels = ~categoria,
  values = ~valor,
  type = 'pie'
) %>%
  layout(
    title = "Distribución por Regional del SPMF Interviniente",
    showlegend = TRUE,
    legend = list(
      title = list(text = "Regional interviniente"),
      x = 1, y = 0.5
    ),
    margin = list(l = 50, r = 50, t = 50, b = 100), # Ajustar márgenes para dar espacio al texto
    annotations = list(
      x = 0.5,  # Centrar el texto horizontalmente
      y = -0.2, # Posicionar debajo del gráfico
      text = "* La Zona Centro comprende las regionales de Aluminé y Loncopué",
      showarrow = FALSE,
      xref = "paper",
      yref = "paper",
      font = list(size = 10, color = "gray")
    )
  )

fig

Gráfico Causas de Incendio

# Agrupar categorías
data_barras <- mi_data %>%
  mutate(SUBGRUPO_CAUSA = case_when(
    SUBGRUPO_CAUSA %in% c("Negligencia", "Accidente") ~ "Negligencia/Accidente",
    SUBGRUPO_CAUSA %in% c("Desconocido", "Otro") ~ "Desconocido/Otro",
    SUBGRUPO_CAUSA %in% c("Rayo Tormenta electrica", "Climatica") ~ "Naturales",
    TRUE ~ SUBGRUPO_CAUSA # Mantener el resto sin cambios
  )) %>%
  group_by(SUBGRUPO_CAUSA) %>%
  summarise(Frecuencia = n()) %>%
  arrange(desc(Frecuencia)) # Ordenar por frecuencia descendente

# Crear el gráfico de barras interactivo
fig <- plot_ly(
  data_barras, 
  x = ~reorder(SUBGRUPO_CAUSA, -Frecuencia), # Ordenar categorías por frecuencia
  y = ~Frecuencia, 
  type = 'bar', 
  text = ~Frecuencia, # Etiquetas con las frecuencias
  textposition = 'outside', # Posición de las etiquetas fuera de las barras
  marker = list(color = '#1f77b4') # Color personalizado
) %>%
  layout(
    title = "Causas de Incendios",
    xaxis = list(title = "Subgrupo Causa", tickangle = 45), # Rotar etiquetas del eje x
    yaxis = list(
      title = "Frecuencia",
      range = c(0, max(data_barras$Frecuencia) * 1.2) # Ajustar el rango superior del eje Y
    ),
    uniformtext = list(minsize = 8, mode = 'hide'), # Uniformar el texto
    margin = list(b = 100), # Espacio adicional para las etiquetas rotadas
    showlegend = FALSE # Ocultar leyenda
  )

fig

Gráfico por Mes y Año

# Convertir la columna "FechaHora" a formato de fecha (si es necesario)
mi_data$FechaHora <- as.POSIXct(mi_data$FechaHora, format = "%Y-%m-%d %H:%M:%S") # Ajusta el formato si es necesario

# Extraer solo la fecha y crear columnas adicionales
mi_data$Fecha <- as.Date(mi_data$FechaHora)
mi_data$Mes_Año <- format(mi_data$Fecha, "%Y-%m") # Año y mes (formato "YYYY-MM")

# Agrupar por mes y contar la cantidad de registros por mes
data_mensual <- mi_data %>%
  group_by(Mes_Año) %>%
  summarise(Cantidad = n()) %>%
  arrange(Mes_Año) # Ordenar por fecha para un eje X consistente

# Crear el gráfico de barras interactivo
fig <- plot_ly(
  data_mensual,
  x = ~Mes_Año,
  y = ~Cantidad,
  type = 'bar',
  text = ~Cantidad, # Etiquetas con los valores
  textposition = 'outside', # Posición de las etiquetas fuera de las barras
  marker = list(color = '#1f77b4') # Color azul para las barras
) %>%
  layout(
    title = "Cantidad de Eventos por Mes",
    xaxis = list(
      title = "Mes y Año",
      tickangle = 45 # Rotar las etiquetas del eje X
    ),
    yaxis = list(
      title = "Cantidad de Eventos",
      range = c(0, max(data_barras$Frecuencia) * 0.5) # Ajustar el rango superior del eje Y
    ),
    margin = list(b = 100), # Espacio adicional para las etiquetas rotadas
    uniformtext = list(minsize = 8, mode = 'hide'), # Uniformar el texto
    showlegend = FALSE # Ocultar leyenda
  )

fig

Cantidad de Incendios por Región

# Calcular los conteos por región
data_barras <- mi_data %>%
  group_by(Region) %>%
  summarise(Frecuencia = n()) %>%
  arrange(desc(Frecuencia)) # Ordenar por frecuencia descendente

# Crear el gráfico de barras interactivo
fig <- plot_ly(
  data_barras,
  x = ~reorder(Region, -Frecuencia), # Ordenar categorías por frecuencia
  y = ~Frecuencia,
  type = 'bar',
  text = ~Frecuencia, # Etiquetas con las frecuencias
  textposition = 'outside', # Posición de las etiquetas fuera de las barras
  marker = list(color = '#1f77b4', line = list(color = 'black', width = 1)) # Barras con borde negro
) %>%
  layout(
    title = "Total de Incendios por Región",
    xaxis = list(title = "Región", tickangle = 45), # Rotar etiquetas del eje x
    yaxis = list(title = "Cantidad de Incendios", range = c(0, max(data_barras$Frecuencia) * 1.35)), # Ajustar el rango superior del eje Y
    margin = list(b = 100, t = 50), # Espacio adicional para las etiquetas rotadas y margen superior
    showlegend = FALSE # Ocultar leyenda
  )

fig