1 CARGAR DATOS

Importamos el archivo “database (1).csv” desde una ruta local y lo almacena en el objeto datos, usando espacios o tabulaciones como separador.

# Cargar los datos

## setwd("C:/Users/ronal/OneDrive/Desktop")

datos <- read.csv("database (1).csv", header = TRUE, sep = ",", dec = ".")

2 EXTRAER LA VARIABLE

Extraemos la variable Tipo de Tubería, omitimos las celdas en blanco o valores iguales a cero .

# 1. 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"))

3 TABLA DE FRECUENCIA

# 3. 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)
)

# 6. Agregar la fila de TOTAL
fila_total <- data.frame(
  Tipo_de_Tuberia = "TOTAL", 
  ni = sum(tabla_frecuencia$ni), 
  hi = sum(tabla_frecuencia$hi)
)

tabla_final <- rbind(tabla_frecuencia, fila_total)

# Mostrar resultado final
knitr::kable(tabla_final, caption = "Tabla de Frecuencias Final")
Tabla de Frecuencias Final
Tipo_de_Tuberia 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

4 GRÁFICAS DE BARRAS

4.1 Gráfica de distribución de frecuencia(ni)

ggplot(tabla_frecuencia, aes(x = Tipo_de_Tuberia, 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")

4.2 Gráfica de distribución de frecuencia(hi)

# Crear la gráfica para la frecuencia relativa porcentual (hi)
ggplot(tabla_frecuencia, aes(x = Tipo_de_Tuberia, 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 (%)"
  )

5 MODELO DE PROBABILIDAD

# Calcular probabilidad pi
tabla_frecuencia$pi <- tabla_frecuencia$ni / sum(tabla_frecuencia$ni)

ggplot(tabla_frecuencia, aes(x = Tipo_de_Tuberia, 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):

¿Cuál es la probabilidad de que el accidente seleccionado haya ocurrido en una tubería SUBTERRÁNEA?

# Probabilidad de que sea Subterránea
p_subterranea <- tabla_final$ni[tabla_final$Tipo_de_Tuberia == "SUBTERRÁNEA"] / 
                 tabla_final$ni[tabla_final$Tipo_de_Tuberia == "TOTAL"]

print(paste("La probabilidad es:", round(p_subterranea, 4)))
## [1] "La probabilidad es: 0.3547"
# Resultado esperado: 0.3547 (o 35.47%)

¿Cuál es la probabilidad de que el accidente haya ocurrido en un TANQUE o en un ÁREA DE TRANSICIÓN?

# Sumamos las probabilidades de ambas categorías
p_tanque_o_transicion <- (tabla_final$ni[tabla_final$Tipo_de_Tuberia == "TANQUE"] + 
                          tabla_final$ni[tabla_final$Tipo_de_Tuberia == "ÁREA DE TRANSICIÓN"]) / 
                         tabla_final$ni[tabla_final$Tipo_de_Tuberia == "TOTAL"]

print(paste("La probabilidad es:", round(p_tanque_o_transicion, 4)))
## [1] "La probabilidad es: 0.1142"
# Resultado esperado: 0.1141 (o 11.41%)

¿Cuál es la probabilidad de que el accidente NO haya sido en una tubería SUPERFICIAL?

p_no_superficial <- 1 - (tabla_final$ni[tabla_final$Tipo_de_Tuberia == "SUPERFICIAL"] / 
                         tabla_final$ni[tabla_final$Tipo_de_Tuberia == "TOTAL"])

print(paste("La probabilidad es:", round(p_no_superficial, 4)))
## [1] "La probabilidad es: 0.4689"
# Resultado esperado: 0.4689 (o 46.89%)