Como paso previo al análisis descriptivo, es indispensable preparar el entorno de trabajo y estructurar la información. En esta sección inicial, se importan las librerías necesarias para la manipulación ágil de la información (dplyr) y para la generación de tablas con formato profesional (kableExtra). Posteriormente, se procede a la importación del conjunto de datos original, almacenando los registros en un marco de datos (dataframe) que servirá como base para los procesamientos posteriores, como el análisis de la variable de explosión.
datos <- read.csv("database-_1_.csv", header = TRUE, sep = ",", dec = ".", check.names = FALSE)
zona<-datos$`Liquid.Explosion`
A continuación, se analiza la variable categórica Explosión de Líquidos, la cual indica si se produjo o no la detonación o estallido de un fluido durante el evento estudiado. Para comprender la prevalencia de este factor, se extrajeron los datos y se construyó una tabla de frecuencias absolutas y relativas. Esta distribución nos permite visualizar de manera clara la proporción de casos afirmativos frente a los negativos dentro de la muestra total, resaltando la excepcionalidad de la explosión. library(ggplot2)
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(knitr)
library(kableExtra)
##
## Adjuntando el paquete: 'kableExtra'
## The following object is masked from 'package:dplyr':
##
## group_rows
datos_explosion <- datos %>%
mutate(Liquid.Explosion = case_when(
trimws(`Liquid Explosion`) == "YES" ~ "Sí",
trimws(`Liquid Explosion`) == "NO" ~ "No",
TRUE ~ as.character(`Liquid Explosion`)
))
freq_LE <- table(datos_explosion$Liquid.Explosion)
Tabla_LE <- as.data.frame(freq_LE)
colnames(Tabla_LE) <- c("x", "ni")
Tabla_LE$hi_exacto <- (Tabla_LE$ni / sum(Tabla_LE$ni)) * 100
Tabla_LE$DECIMAL_exacto <- Tabla_LE$hi_exacto / 100
Tabla_LE$hi <- round(Tabla_LE$hi_exacto, 2)
Tabla_LE$DECIMAL <- round(Tabla_LE$DECIMAL_exacto, 3)
dif_hi <- 100 - sum(Tabla_LE$hi)
dif_dec <- 1 - sum(Tabla_LE$DECIMAL)
idx_max <- which.max(Tabla_LE$ni)
Tabla_LE$hi[idx_max] <- Tabla_LE$hi[idx_max] + dif_hi
Tabla_LE$DECIMAL[idx_max] <- Tabla_LE$DECIMAL[idx_max] + dif_dec
fila_total_LE <- data.frame(
x = "Total",
ni = sum(Tabla_LE$ni),
hi = sum(Tabla_LE$hi),
DECIMAL = sum(Tabla_LE$DECIMAL)
)
TablaFinal_LE <- rbind(Tabla_LE[, c("x", "ni", "hi", "DECIMAL")], fila_total_LE)
colnames(TablaFinal_LE) <- c("Estado de explosión", "ni", "hi (%)", "fi")
titulo_formal <- "CUADRO N° [1] <br/> Distribución de frecuencias de explosión de líquidos en Estados Unidos, [2010 - 2016]"
kable(TablaFinal_LE,
align = "c",
digits = c(0, 0, 2, 3)) %>%
kable_styling(full_width = FALSE, position = "center",
bootstrap_options = c("striped", "hover", "condensed", "bordered")) %>%
add_header_above(c(" " = 2, "Frecuencia relativa" = 2),
bold = c(FALSE, TRUE),
background = c("white", "#D5D8DC")) %>%
add_header_above(setNames(4, titulo_formal), align = "center", escape = FALSE, bold = FALSE, background = "white") %>%
row_spec(0, bold = TRUE) %>%
row_spec(nrow(TablaFinal_LE), bold = TRUE, background = "#f2f2f2") %>%
column_spec(1, italic = TRUE)
| Estado de explosión | ni | hi (%) | fi |
|---|---|---|---|
| No | 2780 | 99.46 | 0.995 |
| Sí | 15 | 0.54 | 0.005 |
| Total | 2795 | 100.00 | 1.000 |
Aquí se evalúa la frecuencia de los accidentes en relación con la explosión del líquido derramado, comparando visualmente los eventos en los que hubo una detonación frente a aquellos en los que no. Esta comparativa permite identificar la mínima proporción de incidentes que escalan a un escenario de estallido, lo cual es crítico para medir la efectividad de las medidas intrínsecas de contención y estabilización del producto.
library(ggplot2)
library(dplyr)
# 1. Filtramos Tabla_LE para usar solo las categorías de interés
datos_grafico <- Tabla_LE %>%
filter(x %in% c("Sí", "No"))
# 2. Generamos la gráfica leyendo directamente las columnas 'x' y 'ni'
ggplot(datos_grafico, aes(x = x, y = ni, fill = x)) +
geom_bar(stat = "identity", width = 0.6) +
# Usamos "Sí" con tilde porque así lo definiste en tu case_when
scale_fill_manual(values = c("Sí" = "steelblue", "No" = "skyblue")) +
labs(
title = "Gráfica 1: Distribución local de explosión líquida",
x = "Explosión líquida",
y = "Cantidad"
) +
theme_classic() +
theme(
legend.position = "none",
axis.text.x = element_text(size = 12, face = "bold"),
plot.title = element_text(face = "bold", size = 14)
)
Este apartado extiende el análisis de la variable a una escala global para verificar la incidencia de explosiones en las emergencias reportadas. Al observar que la tendencia de “NO” explosión es abrumadoramente mayoritaria, se puede concluir que las condiciones operativas, la rápida respuesta en campo o las propiedades fisicoquímicas del material mitigan casi por completo el riesgo de detonación en los derrames registrados.
library(ggplot2)
# 1. Filtramos Tabla_LE para usar solo las categorías "Sí" y "No"
df_grafico <- subset(Tabla_LE, x %in% c("Sí", "No"))
# 2. Generamos el gráfico usando la columna 'x' y 'ni' de Tabla_LE
grafico_barras <- ggplot(df_grafico, aes(x = reorder(x, -ni), y = ni, fill = x)) +
geom_bar(stat = "identity", color = "black", alpha = 0.8, width = 0.6) +
scale_y_continuous(limits = c(0, 3000)) +
# Actualizamos a "Sí" con tilde y aplicamos el contraste de colores
scale_fill_manual(values = c("Sí" = "steelblue", "No" = "skyblue")) +
theme_minimal() +
labs(
title = "Gráfica No 2: Distribución global de Explosión Líquida",
x = "Estado de Explosión",
y = "Cantidad"
) +
theme(legend.position = "none",
plot.title = element_text(hjust = 0.5, face = "bold"),
plot.subtitle = element_text(hjust = 0.5))
# 3. Mostrar el gráfico
print(grafico_barras)
Esta sección analiza la magnitud visual de los accidentes en relación con la explosión del producto o infraestructura. La gráfica revela que la inmensa mayoría de los reportes se concentran en la categoría de no explosión (“NO”), superando los 2,780 registros frente a una cantidad estadísticamente minúscula de apenas 15 casos con “SI”. Esto confirma que la explosión es un fenómeno extremadamente infrecuente dentro de la matriz general de accidentes.
library(ggplot2)
library(dplyr)
# 1. Filtramos Tabla_LE y calculamos el porcentaje usando la columna 'hi'
datos_grafico <- Tabla_LE %>%
filter(x %in% c("Sí", "No")) %>%
mutate(porcentaje = hi)
# 2. Generamos la gráfica
ggplot(datos_grafico, aes(x = x, y = porcentaje, fill = x)) +
geom_bar(stat = "identity", width = 0.6) +
# Actualizamos a "Sí" con tilde y diferenciamos el color
scale_fill_manual(values = c("Sí" = "steelblue", "No" = "skyblue")) +
scale_y_continuous(limits = c(0, 100), breaks = seq(0, 100, 10)) +
labs(
title = "Gráfica 3: Distribución relativa global de Explosión líquida",
x = "Explosión líquida",
y = "Porcentaje (%)"
) +
theme_classic() +
theme(
legend.position = "none",
axis.text.x = element_text(size = 12, face = "bold"),
plot.title = element_text(face = "bold", size = 14)
)
Extraemos la variable explosión líquida, omitimos valores nulos y verificamos el tamaño muestral para asegurar la validez del estudio. El análisis porcentual indica que los incidentes que cursan sin el desarrollo de una explosión superan el 99.4% de la casuística. Esto enfatiza que el desencadenamiento de una reacción detonante, a pesar de sus gravísimas consecuencias, no forma parte del comportamiento típico de los accidentes analizados.
library(ggplot2)
library(dplyr)
# 1. Filtramos la tabla y calculamos el porcentaje (hi * 100)
datos_grafico <- Tabla_LE %>%
filter(x %in% c("Sí", "No")) %>%
mutate(hi_pct = hi)
# 2. Generamos la gráfica llamando a las columnas 'x' y 'hi_pct'
ggplot(datos_grafico, aes(x = x, y = hi_pct, fill = x)) +
geom_bar(stat = "identity", width = 0.6) +
scale_fill_manual(values = c("Sí" = "steelblue", "No" = "skyblue")) +
scale_y_continuous(limits = c(0, 100), breaks = seq(0, 100, by = 10)) +
labs(
title = "Gráfica 4: Distribución relativa local de explosión líquida",
x = "Explosión líquida",
y = "Porcentaje (%)"
) +
theme_classic() +
theme(
legend.position = "none",
axis.text.x = element_text(size = 12, face = "bold"),
plot.title = element_text(face = "bold", size = 14)
)
El diagrama circular de esta variable resalta una distribución que acapara prácticamente la totalidad del gráfico en la categoría “NO” (casi un 100% visible). Esta visualización tan extrema confirma que la presencia de estallidos no es en absoluto el estado predominante, consolidando a la explosión líquida como una rareza máxima en la ocurrencia de los siniestros petroleros o de ductos.
library(ggplot2)
library(dplyr)
# 1. Filtramos Tabla_LE y creamos el porcentaje para el gráfico
df_clean <- Tabla_LE %>%
filter(x %in% c("Sí", "No")) %>%
mutate(hi_pct = round(hi))
# 2. Generamos el diagrama circular llamando a la columna 'x'
ggplot(df_clean, aes(x = "", y = hi_pct, fill = x)) +
geom_bar(stat = "identity", width = 1, color = "white") +
coord_polar("y", start = 0) +
geom_text(aes(label = paste0(hi_pct, "%")),
position = position_stack(vjust = 0.5),
color = "white", fontface = "bold", size = 5) +
# Aplicamos la misma paleta visual y la tilde en el "Sí"
scale_fill_manual(values = c("Sí" = "steelblue", "No" = "skyblue")) +
labs(title = "Gráfico 5: Distribución de Explosión líquida", fill = "Estado") +
theme_void()
Los indicadores de la variable muestran una moda irrefutable en el estado “NO”, con una frecuencia absoluta de 2,780 registros, frente a una cantidad insignificante de 15 casos confirmados. La altísima aglomeración de los datos en la categoría negativa indica una varianza nula y evidencia una asimetría radical, indicando estadísticamente una probabilidad remota de presenciar una explosión tras el derrame o fuga.
# 1. Identificar la fila con la mayor frecuencia (La Moda)
moda_idx <- which.max(Tabla_LE$ni)
# 2. Extraer los valores
valor_mas_repetido <- Tabla_LE$x[moda_idx]
cantidad <- Tabla_LE$ni[moda_idx]
total_casos <- sum(Tabla_LE$ni)
porcentaje <- Tabla_LE$hi[moda_idx]
cat("--- RESUMEN DE INDICADORES: EXPLOSIÓN DE LÍQUIDOS ---\n")
## --- RESUMEN DE INDICADORES: EXPLOSIÓN DE LÍQUIDOS ---
cat("El valor que más se repite (Moda) es:", as.character(valor_mas_repetido), "\n")
## El valor que más se repite (Moda) es: No
cat("Cantidad de casos en la moda:", cantidad, "\n")
## Cantidad de casos en la moda: 2780
cat("Total de casos analizados:", total_casos, "\n")
## Total de casos analizados: 2795
cat("Porcentaje de representación:", porcentaje, "%\n")
## Porcentaje de representación: 99.46 %
La variable Explosión de líquidos, correspondiente a los accidentes analizados, es de tipo cualitativa nominal. El valor más frecuente corresponde a “NO”, el cual representa casi el 100% del total de los casos.
Por lo anterior, se evidencia una predominancia de ausencia de este tipo de eventos, ya que la inmensa mayoría de los accidentes no presenta estallidos ni detonaciones tras un derrame o fuga, lo que indica estadísticamente una probabilidad remota de presenciar una explosión frente a ocurrencias aisladas y atípicas