La variable Tipo de Tubería es fundamental en el análisis de incidentes, ya que permite identificar qué tipo de infraestructura presenta mayor riesgo de accidentes. Esta información es crucial para enfocar los recursos preventivos y establecer protocolos de seguridad específicos según el tipo de tubería involucrada.
Se importa el archivo de datos desde la ruta local especificada. Se utiliza la función read.csv2() porque el archivo tiene separador punto y coma (;) y decimales con coma (,), formato típico de la región.
# Cargar los datos
datos <- read.csv2("C:/Users/chipr/Downloads/dataset proyecto.csv")
En este paso se extrae la variable “Pipeline.Type” de la base de datos original. Se filtran los valores nulos o vacíos para trabajar únicamente con registros válidos. Además, se traducen las categorías del inglés al español para facilitar la interpretación de los resultados.
# Extraer la variable
T_tuberia <- datos$Pipeline.Type[
!is.na(datos$Pipeline.Type) & datos$Pipeline.Type != ""
]
# 2. Traducir a Español y convertir a Factor
T_tuberia <- factor(T_tuberia,
levels = c("ABOVEGROUND", "UNDERGROUND", "TANK", "TRANSITION AREA"),
labels = c("SUPERFICIAL", "SUBTERRÁNEA", "TANQUE", "ÁREA DE TRANSICIÓN"))
Se construye una tabla que resume la distribución de los incidentes por tipo de tubería. Incluye frecuencias absolutas (ni) y frecuencias relativas porcentuales (hi). Se agrega una fila con los totales para completar el análisis descriptivo.
# Crear las frecuencias ni (absoluta) y hi (relativa %)
ni <- table(T_tuberia)
hi <- prop.table(ni) * 100
# 4. Construir la tabla base
tabla_frecuencia <- data.frame(
Tipo_de_Tuberia = names(ni),
ni = as.vector(ni),
hi = round(as.vector(hi), 2)
)
# 5. Asignar nombres a las columnas
colnames(tabla_frecuencia) <- c("Tipo de Tubería", "ni", "hi(%)")
# 6. Agregar la fila de TOTAL
fila_total <- data.frame(
Tipo_de_Tuberia = "TOTAL",
ni = sum(tabla_frecuencia$ni),
hi = sum(tabla_frecuencia$hi)
)
colnames(fila_total) <- c("Tipo de Tubería", "ni", "hi(%)")
tabla_final <- rbind(tabla_frecuencia, fila_total)
# Mostrar resultado final
knitr::kable(tabla_final, caption = "Tabla de Frecuencias Final")
| Tipo de Tubería | ni | hi(%) |
|---|---|---|
| SUPERFICIAL | 1475 | 53.11 |
| SUBTERRÁNEA | 985 | 35.47 |
| TANQUE | 301 | 10.84 |
| ÁREA DE TRANSICIÓN | 16 | 0.58 |
| TOTAL | 2777 | 100.00 |
Las gráficas de barras permiten visualizar de manera intuitiva la distribución de los incidentes por tipo de tubería. Se presentan dos versiones: una con frecuencias absolutas y otra con porcentajes, facilitando la comparación entre categorías.
library(ggplot2)
ggplot(tabla_frecuencia, aes(x = `Tipo de Tubería`, y = ni)) +
geom_bar(stat = "identity", fill = "skyblue", color = "black") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1, size = 10)) +
labs(title = "Gráfica N° 1: Distribución general por tipo de tubería",
x = "Tipo de Tubería",
y = "Cantidad")
ggplot(tabla_frecuencia, aes(x = `Tipo de Tubería`, y = hi)) +
geom_bar(stat = "identity", fill = "skyblue", color = "black") +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1, size = 10),
legend.position = "none"
) +
labs(
title = "Gráfica N° 2: Distribución porcentual por tipo de tubería",
x = "Tipo de Tubería",
y = "Porcentaje (%)"
)
## Don't know how to automatically pick scale for object of type <table>.
## Defaulting to continuous.
A partir de las frecuencias observadas, se calcula la probabilidad empírica de cada tipo de tubería. Este modelo probabilístico permite estimar la chance de que un futuro incidente ocurra en una categoría específica, asumiendo que el patrón histórico se mantiene.
# Calcular probabilidad
tabla_frecuencia$pi <- tabla_frecuencia$ni / sum(tabla_frecuencia$ni)
# Gráfica de probabilidades
ggplot(tabla_frecuencia, aes(x = `Tipo de Tubería`, y = pi)) +
geom_bar(stat = "identity", fill = "skyblue", color = "black") +
scale_y_continuous(breaks = seq(0, 1, by = 0.1),
limits = c(0, max(tabla_frecuencia$pi) + 0.05)) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1, size = 10)) +
labs(title = "Gráfica N° 3: Distribución de Probabilidad por tipo de tubería",
x = "Tipo de Tubería",
y = "Probabilidad"
)
Si seleccionamos un accidente al azar de los registros históricos de la base de datos (considerando el total de 2,777 incidentes válidos), podemos responder preguntas específicas sobre la probabilidad de ocurrencia en diferentes escenarios.
# Probabilidad de que sea Subterránea
p_subterranea <- tabla_final$ni[tabla_final$`Tipo de Tubería` == "SUBTERRÁNEA"] /
tabla_final$ni[tabla_final$`Tipo de Tubería` == "TOTAL"]
print(paste("La probabilidad es:", round(p_subterranea, 4)))
## [1] "La probabilidad es: 0.3547"
# [1] "La probabilidad es: 0.3547"
# Resultado esperado: 0.3547 (o 35.47%)
# Probabilidad de TANQUE o ÁREA DE TRANSICIÓN
p_tanque_o_transicion <- (tabla_final$ni[tabla_final$`Tipo de Tubería` == "TANQUE"] +
tabla_final$ni[tabla_final$`Tipo de Tubería` == "ÁREA DE TRANSICIÓN"]) /
tabla_final$ni[tabla_final$`Tipo de Tubería` == "TOTAL"]
print(paste("La probabilidad es:", round(p_tanque_o_transicion, 4)))
## [1] "La probabilidad es: 0.1142"
# [1] "La probabilidad es: 0.1142"
# Probabilidad de NO SUPERFICIAL (1 - P(SUPERFICIAL))
p_no_superficial <- 1 - (tabla_final$ni[tabla_final$`Tipo de Tubería` == "SUPERFICIAL"] /
tabla_final$ni[tabla_final$`Tipo de Tubería` == "TOTAL"])
print(paste("La probabilidad es:", round(p_no_superficial, 4)))
## [1] "La probabilidad es: 0.4689"
# [1] "La probabilidad es: 0.4689"
La variable Tipo de Tubería presenta un comportamiento que permite identificar patrones claros. Mediante un análisis de frecuencias, se observa que los incidentes se distribuyen en cuatro categorías: SUPERFICIAL (53.11%), SUBTERRÁNEA (35.47%), TANQUE (10.84%) y ÁREA DE TRANSICIÓN (0.58%), lo cual fue validado estadísticamente. Esta estructura permite predecir, POR EJEMPLO, ¿Cuál es la probabilidad de que, ante un nuevo incidente, este ocurra en una tubería SUBTERRÁNEA? (0.3547) , ¿Cuál es la probabilidad de que el accidente haya ocurrido en un TANQUE o en un ÁREA DE TRANSICIÓN? (0.1142) , ¿Cuál es la probabilidad de que el accidente NO haya sido en una tubería SUPERFICIAL? (0.4689) , facilitando la toma de decisiones preventivas basadas en la probabilidad de cada tipo de tubería.