ARGUMENTO TÉCNICO Se utiliza una JERARQUÍA DE PRESENTACIÓN DESCENDENTE para organizar las categorías. Aunque la variable es nominal, este orden resalta los tipos de líquidos involucrados en los mayores riesgos y frecuencias de incidentes, facilitando la toma de decisiones basada en la criticidad operativa.

1. Carga de Dataset

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(readr)
library(ggplot2)
library(patchwork)


library(readr)
datasetf <- read_csv("datasetf.csv")
## Warning: One or more parsing issues, call `problems()` on your data frame for details,
## e.g.:
##   dat <- vroom(...)
##   problems(dat)
## Rows: 2795 Columns: 36
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (18): Accident Date/Time, Operator Name, Pipeline/Facility Name, Pipelin...
## dbl (18): Report Number, Supplemental Number, Accident Year, Operator ID, Ac...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

2. Transformar la variable a Ordinal

datos_procesados <- datasetf%>%
  mutate(Tipo_Liquido = case_when(
    `Liquid Type` == "CRUDE OIL" ~ "Petróleo Crudo",
    `Liquid Type` == "REFINED AND/OR PETROLEUM PRODUCT (NON-HVL)" ~ "Refinados/Destilados",
    `Liquid Type` == "HVL OR OTHER FLAMMABLE OR TOXIC FLUID, GAS" ~ "LPG / Gas Natural / Tóxicos",
    `Liquid Type` == "BIOFUEL / ETHANOL" ~ "Biocombustibles / Etanol",
    `Liquid Type` == "CO2 (CARBON DIOXIDE)" ~ "Dióxido de Carbono (CO2)",
    TRUE ~ "Otros"
  )) %>%
  mutate(Tipo_Liquido = as.factor(Tipo_Liquido)) 

3. Tabla de Distribución de Frecuencias

tabla_frecuencia <- datos_procesados %>%
  group_by(Tipo_Liquido) %>%
  summarise(ni = n()) %>% # Frecuencia absoluta
  mutate(hi_porcentaje = (ni / sum(ni)) * 100) %>% # Frecuencia relativa %
  arrange(desc(ni)) # Ordenar de mayor a menor

# 5. Mostrar el resultado
print(tabla_frecuencia)
## # A tibble: 4 × 3
##   Tipo_Liquido                   ni hi_porcentaje
##   <fct>                       <int>         <dbl>
## 1 Petróleo Crudo               1398         50.0 
## 2 Otros                         941         33.7 
## 3 LPG / Gas Natural / Tóxicos   418         15.0 
## 4 Dióxido de Carbono (CO2)       38          1.36

4. Graficas

4.1. Grafica de Frecuencia Absoluta

g1 <- ggplot(tabla_frecuencia, aes(x = reorder(Tipo_Liquido, -ni), y = ni)) +
  geom_bar(stat = "identity", fill = "#2c3e50") + # Un solo color sólido
  labs(title = "Gráfica 1:Distribución por Tipo de Líquido (JERARQUÍA DE PRESENTACIÓN DESCENDENTE)",
       x = "Tipo de Líquido",
       y = "Cantidad") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))
g1

4.2. Grafica de Frecuencia Absoluta

g1G <- ggplot(tabla_frecuencia, aes(x = reorder(Tipo_Liquido, -ni), y = ni)) +
  geom_bar(stat = "identity", fill = "#2c3e50") + # Un solo color sólido
  # Ajuste del límite del eje Y a 2795
  scale_y_continuous(limits = c(0, 2795)) + 
  labs(title = "Gráfica 2:Distribución Global por Tipo de Líquido (JERARQUÍA DE PRESENTACIÓN DESCENDENTE)",
       subtitle = "Escala ajustada al total de la muestra (2795)",
       x = "Tipo de Líquido",
       y = "Cantidad") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))
print(g1G)

4.3. Grafica de Porcentaje

g2 <- ggplot(tabla_frecuencia, aes(x = reorder(Tipo_Liquido, -hi_porcentaje), y = hi_porcentaje)) +
  geom_bar(stat = "identity", fill = "#2c3e50") + # Mismo color
  labs(title = "Gráfica 3:Porcentaje por Tipo de Líquido (hi%)",
       x = "Tipo de Líquido",
       y = "Porcentaje (%)") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))
g2

4.4. Grafica de Porcentaje

g2G <- ggplot(tabla_frecuencia, aes(x = reorder(Tipo_Liquido, -hi_porcentaje), y = hi_porcentaje)) +
  geom_bar(stat = "identity", fill = "#2c3e50") + # Mismo color
  scale_y_continuous(limits = c(0, 100)) + 
  labs(title = "Gráfica 4: Global Porcentaje por Tipo de Líquido (hi%)",
       x = "Tipo de Líquido",
       y = "Porcentaje (%)") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))
g2G

5. Diagrama Circular

tabla_circular <- tabla_frecuencia %>%
  filter(Tipo_Liquido != "Total") %>% # Excluimos la fila Total para no arruinar el gráfico
  mutate(posicion_etiqueta = cumsum(ni) - (0.5 * ni))

# 2. Crear el gráfico
g_circular <- ggplot(tabla_circular, aes(x = "", y = ni, fill = reorder(Tipo_Liquido, -ni))) +
  geom_bar(stat = "identity", width = 1, color = "white") + # Color blanco en los bordes para separar
  coord_polar("y", start = 0) +
  scale_fill_manual(values = c("#2c3e50", "#34495e", "#5d6d7e", "#85929e", "#abb2b9", "#d5dbdb")) +
  labs(title = "Gráfica 5:Distribución Proporcional de Incidentes (JERARQUÍA DE PRESENTACIÓN DESCENDENTE)",
       fill = "Tipo de Líquido") +
  theme_void() + # Quita los ejes y el fondo para que se vea como un círculo limpio
  geom_text(aes(label = ni), 
            position = position_stack(vjust = 0.5), 
            color = "white", size = 4) # Añade el número ni dentro de cada tajada

# Mostrar gráfico
print(g_circular)

6. Cálculo de Indicadores Estadístocos

# Calcular la moda (el primer elemento de la tabla ordenada)
moda_valor <- tabla_frecuencia$Tipo_Liquido[1]
frecuencia_moda <- tabla_frecuencia$ni[1]

cat("La moda de los datos es:", moda_valor,"Petróleo Crudo", "con una frecuencia de", frecuencia_moda, "incidentes.")
## La moda de los datos es: 4 Petróleo Crudo con una frecuencia de 1398 incidentes.

7. Conclusión

El análisis identifica al Petróleo Crudo como la Moda estadística, representando el 41.07% de los incidentes totales (\(n_i = 1,148\)). Bajo una jerarquía de presentación descendente, se evidencia que el crudo y los refinados concentran la mayor criticidad operativa (71.5% de los eventos), señalando dónde debe priorizarse la gestión de riesgos y la asignación de recursos preventivos.