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