1 Carga de datos

El presente reporte tiene como objetivo realizar un análisis estadístico descriptivo sobre los tipos de tubería registrados en el conjunto de datos database-_1_.csv. A través del uso del lenguaje de programación R, se procesará la información para identificar las frecuencias y patrones principales, permitiendo una comprensión clara de las infraestructuras predominantes en la muestra de accidentes estudiada.

# 1. Cargar la base de datos
database <- read.csv("database-_1_.csv", header = TRUE, sep = ",", dec = ".", check.names = FALSE)
zona <- database$`Pipeline Type`

2 Tabla de frecuencia

A continuación, se presenta el procesamiento de datos para la variable Pipeline Type. Se detalla el código utilizado en R para la importación del archivo CSV y la posterior generación de la tabla de frecuencias, con el fin de analizar la incidencia de siniestros según el tipo de infraestructura.

TDF_tuberia <- database %>%
  # Limpiar valores vacíos o nulos
  filter(`Pipeline Type` != "" & !is.na(`Pipeline Type`)) %>%
  
  # Agrupación y traducción de categorías principales
  mutate(`Pipeline Type` = case_when(
    `Pipeline Type` == "ABOVEGROUND" ~ "Superficial",
    `Pipeline Type` == "UNDERGROUND" ~ "Subterráneo",
    `Pipeline Type` == "TANK" ~ "Tanque",
    `Pipeline Type` == "TRANSITION AREA" ~ "Área de Transición",
    TRUE ~ "Otro" 
  )) %>%
  
  # Contar frecuencias
  count(`Pipeline Type`, name = "ni") %>%        
  mutate(ni = as.numeric(ni)) %>%
  arrange(desc(ni)) %>%                            
  mutate(hi = (ni / sum(ni)) * 100) %>%          
  mutate(hi = sprintf("%.2f", round(hi, 2)))    

# Crear la fila de Sumatoria Total
Sumatoria <- data.frame(
  `Pipeline Type` = "TOTAL",
  ni = sum(TDF_tuberia$ni),
  hi = "100.00",
  check.names = FALSE # Evita el cambio de espacios por puntos
)

# Unir tabla agrupada con el total
TDF_final <- rbind(TDF_tuberia, Sumatoria)

# Renombrar columnas para la visualización
colnames(TDF_final) <- c("Tipo de Tubería", "ni", "hi (%)")

# Generación de la tabla con el formato kable
kable(TDF_final, align = 'c', 
      caption = "Tabla de Frecuencia: Tipos de Tubería en Accidentes") %>%
  kable_styling(full_width = FALSE, position = "center", 
                bootstrap_options = c("striped", "hover", "bordered")) %>%
  row_spec(nrow(TDF_final), bold = TRUE, background = "#f2f2f2") %>%
  row_spec(1, bold = TRUE, color = "black")
Tabla de Frecuencia: Tipos de Tubería en Accidentes
Tipo de Tubería ni hi (%)
Superficial 1475 53.11
Subterráneo 985 35.47
Tanque 301 10.84
Área de Transición 16 0.58
TOTAL 2777 100.00

3 Distribución absoluta general por tipo de tubería

A continuación, se presenta un gráfico de barras que ilustra la distribución absoluta de los distintos tipos de tuberías implicados en accidentes. Esta representación visual permite apreciar de forma rápida e intuitiva cuáles son las infraestructuras con mayor incidencia, destacando la diferencia entre los sistemas expuestos al exterior y los enterrados

ggplot(TDF_tuberia, aes(x = reorder(`Pipeline Type`, -ni), y = ni)) +
  geom_bar(stat = "identity", fill = "#2980b9") +
  labs(title = "Gráfica N 1: Cantidad Absoluta General de Tipo de Tubería",
       x = "Tipo de Tubería",
       y = "Cantidad de Accidentes") +
  theme_minimal() +
  # Inclinamos los textos del eje X para que se lean bien
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  ylim(0, max(TDF_tuberia$ni) * 1.1)

4 Distribución absoluta local por tipo de tubería

El siguiente gráfico mantiene el análisis de frecuencias absolutas enfocado en el volumen de siniestros por cada clasificación específica de infraestructura.

ggplot(TDF_tuberia, aes(x = reorder(`Pipeline Type`, -ni), y = ni)) +
  geom_bar(stat = "identity", fill = "#2980b9") +
  labs(title = "Gráfica N 2: Cantidad Absoluta local de Tipo de Tubería",
       x = "Tipo de Tubería",
       y = "Cantidad de Accidentes") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  ylim(0, max(TDF_tuberia$ni) * 1.1)

5 Incidencia Relativa global por tipo de tubería

A través de la gráfica de incidencia relativa, se estandariza el volumen de siniestros expresando cada tipo de tubería como una proporción del total. Esta métrica porcentual es fundamental para evaluar probabilísticamente el peso específico de cada infraestructura frente al universo completo de datos observados.

# Convertimos 'hi' a numérico para graficar correctamente
TDF_tuberia <- TDF_tuberia %>% mutate(hi_num = as.numeric(hi))

ggplot(TDF_tuberia, aes(x = reorder(`Pipeline Type`, -hi_num), y = hi_num)) +
  geom_bar(stat = "identity", fill = "#2980b9") +
  labs(title = "Gráfica N 3: Incidencia Relativa Global",
       x = "Tipo de Tubería",
       y = "Porcentaje (hi %)") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  ylim(0, 100)

6 Incidencia Relativa local por tipo de tubería

Al enfocar el análisis porcentual ajustando los ejes a la incidencia real de la muestra, observamos con mayor detalle la distribución de probabilidad de fallo de cada tipo de conducto. Esta visualización facilita enfocar la atención en el análisis de riesgos.

# Usamos TDF_tuberia
ggplot(TDF_tuberia, aes(x = reorder(`Pipeline Type`, -hi_num), y = hi_num)) +
  geom_bar(stat = "identity", fill = "#2980b9") +
  labs(title = "Gráfica N 4: Incidencia Relativa local",
       x = "Tipo de Tubería",
       y = "Porcentaje (hi %)") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  ylim(0, max(TDF_tuberia$hi_num) * 1.1)

7 Diagrama circular

El siguiente diagrama circular muestra la composición porcentual de la siniestralidad, permitiendo visualizar de un vistazo qué tipos de tuberías o infraestructuras concentran la mayor proporción de los incidentes.

ggplot(TDF_tuberia, aes(x = "", y = hi_num, fill = `Pipeline Type`)) +
  geom_bar(stat = "identity", width = 1, color = "white") +
  coord_polar("y", start = 0) +
  geom_text(aes(label = paste0(hi, "%")), position = position_stack(vjust = 0.5), size = 4) +
  scale_fill_brewer(palette = "Blues") +
  labs(title = "Gráfica N 5: Distribución de Tipos de Tubería") +
  theme_void() + 
  theme(legend.position = "right", 
        legend.title = element_blank(),
        plot.title = element_text(hjust = 0.5, face = "bold"),
        plot.subtitle = element_text(hjust = 0.5))

8 Indicadores Estadísticos

Dado el carácter nominal de la variable analizada, el estudio de tendencia central no admite promedios ni desviaciones estándar, por lo que se fundamenta estrictamente en el análisis de frecuencias y la Moda estadística. A continuación, se presentan los indicadores descriptivos que cuantifican el tamaño de la muestra y determinan el tipo de instalación con mayor probabilidad de siniestro.

total_accidentes <- sum(TDF_tuberia$ni)
moda_cat <- TDF_tuberia$`Pipeline Type`[which.max(TDF_tuberia$ni)]
moda_frec <- max(TDF_tuberia$ni)
moda_porcentaje <- TDF_tuberia$hi[which.max(TDF_tuberia$ni)]

cat("--- INDICADORES ESTADÍSTICOS ---\n")
## --- INDICADORES ESTADÍSTICOS ---
cat("Total de siniestros analizados (N):", total_accidentes, "\n")
## Total de siniestros analizados (N): 2777
cat("Moda (Categoría más frecuente):", moda_cat, "con", moda_frec, "casos (", moda_porcentaje, "% )\n")
## Moda (Categoría más frecuente): Superficial con 1475 casos ( 53.11 % )

9 Conclusión

Tras consolidar y analizar los tipos de tuberías implicadas en los accidentes, se observa que la categoría “Superficial” (equivalente a ABOVEGROUND en el registro original) representa la Moda estadística de la distribución global. Este tipo de infraestructura engloba la mayor cantidad de siniestros en la base de datos, concentrando un total de 1,475 incidentes (53.11%), seguido por las tuberías Subterráneas (35.47%). Esto resalta una mayor tendencia a fallas operativas o factores desencadenantes en instalaciones que se encuentran sobre el nivel del suelo o a la intemperie.