1.Carga de datos


setwd("/cloud/project/")
datos<-read.csv("DerramesEEUU.csv", header = TRUE, sep=";" , dec=",",na.strings ="-")
str(datos)
## 'data.frame':    2760 obs. of  59 variables:
##  $ NumeroInforme                          : int  20100064 20100054 20100092 20100098 20100101 20100102 20100113 20100120 20100039 20100150 ...
##  $ NumeroComplementario                   : int  15072 15114 15120 15127 15130 15132 15146 15162 15197 15205 ...
##  $ DiaAccidente                           : int  8 25 10 28 27 29 11 23 15 11 ...
##  $ MesAccidente                           : int  4 3 5 4 5 5 6 5 3 1 ...
##  $ AnioAccidente                          : int  2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 ...
##  $ HoraAccidente                          : int  6 13 6 24 3 14 7 6 15 2 ...
##  $ AmPmAccidente                          : chr  "a. m." "p. m." "a. m." "p. m." ...
##  $ IDOperador                             : int  31684 18779 30829 12105 20160 30003 1248 300 18718 32296 ...
##  $ NombreOperador                         : chr  "CONOCOPHILLIPS" "SUNOCO, INC (R&M)" "TEPPCO CRUDE PIPELINE, LLC" "MAGELLAN AMMONIA PIPELINE, L.P." ...
##  $ NombreOleoductoInstalacion             : chr  "GD-03, GOLD LINE" "PHILADELPHIA REFINERY - WEST YARD" "HOBBS TO MIDLAND" "WHITING TO EARLY SEGMENT" ...
##  $ UbicacionOleoducto                     : chr  "ONSHORE" "ONSHORE" "ONSHORE" "ONSHORE" ...
##  $ TipoOleoducto                          : chr  "ABOVEGROUND" "ABOVEGROUND" "UNDERGROUND" "UNDERGROUND" ...
##  $ TipoLiquido                            : chr  "REFINED AND/OR PETROLEUM PRODUCT (NON-HVL), LIQUID" "REFINED AND/OR PETROLEUM PRODUCT (NON-HVL), LIQUID" "CRUDE OIL" "HVL OR OTHER FLAMMABLE OR TOXIC FLUID, GAS" ...
##  $ SubtipoLiquido                         : chr  "GASOLINE (NON-ETHANOL)" "OTHER" NA "ANHYDROUS AMMONIA" ...
##  $ NombreLiquido                          : chr  NA "VACUUM GAS OIL (VGO)" NA NA ...
##  $ CiudadAccidente                        : chr  "GREEN RIDGE" "PHILADELPHIA" "HOBBS" "SCHALLER" ...
##  $ CondadoAccidente                       : chr  "PETTIS" "PHILADELPHIA" "LEA" "IDA" ...
##  $ EstadoAccidente                        : chr  "MO" "PA" "NM" "IA" ...
##  $ LatitudAccidente                       : num  38.6 39.9 32.6 42.5 30.2 ...
##  $ LongitudAccidente                      : num  -93.4 -75.2 -103.1 -95.3 -91.2 ...
##  $ CategoriaCausa                         : chr  "NATURAL FORCE DAMAGE" "MATERIAL/WELD/EQUIP FAILURE" "CORROSION" "MATERIAL/WELD/EQUIP FAILURE" ...
##  $ SubcategoriaCausa                      : chr  "TEMPERATURE" "NON-THREADED CONNECTION FAILURE" "EXTERNAL" "CONSTRUCTION, INSTALLATION OR FABRICATION-RELATED" ...
##  $ LiberacionInvoluntariaBarriles         : num  0.24 1700 2 0.36 1.31 ...
##  $ LiberacionIntencionalBarriles          : chr  "0" "0" NA "0.05" ...
##  $ RecuperacionLiquidoBarriles            : num  0.07 1699 0.48 0 0 ...
##  $ PerdidaNetaBarriles                    : num  0.17 1 1.52 0.36 1.31 ...
##  $ IgnicionLiquido                        : chr  "NO" "NO" "NO" "NO" ...
##  $ ExplosionLiquido                       : chr  "NO" "NO" "NO" "NO" ...
##  $ CierreOleoducto                        : chr  "YES" "YES" "NO" "NO" ...
##  $ DiaCierre                              : int  8 25 NA NA 27 NA NA 23 15 11 ...
##  $ MesCierre                              : int  4 3 NA NA 5 NA NA 5 3 1 ...
##  $ AnioCierre                             : int  2010 2010 NA NA 2010 NA NA 2010 2010 2010 ...
##  $ HoraCierre                             : int  6 18 NA NA 3 NA NA 7 16 2 ...
##  $ AmPmCierre                             : chr  "a. m." "p. m." NA NA ...
##  $ DiaReinicio                            : int  9 28 NA NA 27 NA NA 23 15 15 ...
##  $ MesReinicio                            : int  4 3 NA NA 5 NA NA 5 3 1 ...
##  $ AnioReinicio                           : int  2010 2010 NA NA 2010 NA NA 2010 2010 2010 ...
##  $ HoraReinicio                           : int  10 16 NA NA 24 NA NA 9 18 15 ...
##  $ AmPmReinicio                           : chr  "a. m." "p. m." NA NA ...
##  $ EvacuacionesPublicas                   : int  NA 0 NA NA 0 0 0 0 NA 0 ...
##  $ LesionesEmpleadosOperador              : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ LesionesContratistasOperador           : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ LesionesRescatistasEmergencia          : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ OtrasLesiones                          : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ LesionesPublico                        : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ TodasLesiones                          : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ FallecimientosEmpleadosOperador        : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ FallecimientosContratistasOperador     : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ FallecimientosRescatistasEmergencia    : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ OtrosFallecimientos                    : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ FallecimientosPublico                  : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ TodosFallecimientos                    : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ CostosDaniosPropiedad                  : int  0 0 30000 12000 2720 NA 750 1300 NA 29360 ...
##  $ CostosMercanciaPerdidas                : int  27 0 100 30 1500 150 300 340 46 136233 ...
##  $ CostosDaniosPropiedadesPublicasPrivadas: int  0 0 1000 5000 0 0 0 0 NA NA ...
##  $ CostosRespuestaEmergencia              : int  0 0 NA 0 1000 NA 400 2445 10999 NA ...
##  $ CostosRemediacionAmbiental             : int  0 100000 20000 15000 NA NA 6050 3350 452 NA ...
##  $ OtrosCostos                            : int  0 0 NA 0 NA NA 0 2530 NA NA ...
##  $ TodosCostos                            : int  27 100000 51100 32030 5220 150 7500 9965 11497 165593 ...

1.1 Extracción de datos

TipoOleoducto <- na.omit(datos$TipoOleoducto) 

2.Distribución de Frecuencias


TDFTipoOleoducto <- table(TipoOleoducto)
TablaTipoOleoducto <- as.data.frame(TDFTipoOleoducto)
names(TablaTipoOleoducto) <- c("Tipo_de_Oleoducto","Fo")

TablaTipoOleoducto$Probabilidad <- round(TablaTipoOleoducto$Fo / sum(TablaTipoOleoducto$Fo), 3)

2.1 Tabla de Frecuencia

TDFFinalTipoOleoducto <- rbind(
  TablaTipoOleoducto,
  data.frame(Tipo_de_Oleoducto = "TOTAL", 
             Fo = sum(TablaTipoOleoducto$Fo), 
             Probabilidad = 1)
)

library(gt)
tabla_TipoOleoducto <- TDFFinalTipoOleoducto %>%
  gt() %>%
  cols_label(
    Tipo_de_Oleoducto = md("**Tipo de Oleoducto**"),
    Fo = md("**Frecuencia Observada**"),
    Probabilidad = md("**Probabilidad**")
  ) %>%
  tab_header(
    title = md("**Tabla N° 1**"),
    subtitle = md("**Distribución de accidentes por Tipo de causa en EE.UU. (2010-2017)**")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo 1")
  ) %>%
  tab_options(
    table.background.color = "white",
    row.striping.background_color = "white",
    table.border.top.color = "black",
    table.border.bottom.color = "black",
    table.border.top.style = "solid",
    table.border.bottom.style = "solid",
    column_labels.font.weight = "bold",  # corregido
    column_labels.border.top.color = "black",
    column_labels.border.bottom.color = "black",
    column_labels.border.bottom.width = px(2),  # requiere library(gt)
    heading.border.bottom.color = "black",
    heading.border.bottom.width = px(2),
    table_body.hlines.color = "gray",
    table_body.border.bottom.color = "black"
  ) %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(
      rows = Tipo_de_Oleoducto == "TOTAL" 
    )
  )

tabla_TipoOleoducto
Tabla N° 1
Distribución de accidentes por Tipo de causa en EE.UU. (2010-2017)
Tipo de Oleoducto Frecuencia Observada Probabilidad
ABOVEGROUND 1466 0.532
TANK 300 0.109
TRANSITION AREA 16 0.006
UNDERGROUND 976 0.354
TOTAL 2758 1.000
Autor: Grupo 1

2.2 Gráficas

2.2.1 Distribución de frecuencias

barplot(TablaTipoOleoducto$Fo,
        main = "Gráfica No.1: Distribución de frecuencias de accidentes 
        por Tipos de Oleoductos en EE.UU",
        xlab = "Tipo de Oleoducto",
        ylab = "Frecuencia", 
        col = "pink", 
        names.arg = TablaTipoOleoducto$Tipo_de_Oleoducto, 
        las = 1, 
        cex.names = 0.8, 
        cex.axis = 0.8, 
        cex.main = 1.2)

2.2.2 Distribución porcentual

TablaTipoOleoducto$Porcentaje <- TablaTipoOleoducto$Probabilidad * 100

barplot(TablaTipoOleoducto$Porcentaje,
        main = "Gráfica No.2: Distribución porcentual de accidentes 
        por Tipos de Oleoductos en EE.UU",
        xlab = "Tipo de Oleoducto",
        ylab = "Porcentaje (%)", 
        col = "pink2", 
        names.arg = TablaTipoOleoducto$Tipo_de_Oleoducto, 
        las = 1, 
        cex.names = 0.8, 
        cex.axis = 0.8, 
        cex.main = 1.2)

2.2.3 Distribución de Probabilidad

barplot(TablaTipoOleoducto$Probabilidad,
        main = "Gráfica No.3: Distribución de probabilidad de accidentes 
        por Tipos de Oleoductos en EE.UU",
        xlab = "Tipo de Oleoducto",
        ylab = "Probabilidad", 
        col = "pink3", 
        names.arg = TablaTipoOleoducto$Tipo_de_Oleoducto, 
        las = 1, 
        cex.names = 0.8, 
        cex.axis = 0.8, 
        cex.main = 1.2)

3.Cálculo de Probabilidad


  • ¿Cuál es la probabilidad de que un accidente en oleoductos se encuentre sobre el suelo”

3.1 Definición del objetivo

Oleoducto_objetivo <- "ABOVEGROUND"

3.2 Estimación de la probabilidad

probabilidad <- round(
  (TablaTipoOleoducto$Fo[TablaTipoOleoducto$Tipo_de_Oleoducto == Oleoducto_objetivo] /
     sum(TablaTipoOleoducto$Fo)) * 100,
  1
)

La probabilidad de que ocurra un accidente en un tipo de oleoducto ABOVEGROUND es de: 53.2 %

3.3. Gráfica

# Gráfico con oleoducto objetivo resaltado
colores <- ifelse(TablaTipoOleoducto$Tipo_de_Oleoducto == Oleoducto_objetivo, "#FF34B3", "lightpink")

par(mar = c(6, 6, 4, 2))
bp <- barplot(
  height = TablaTipoOleoducto$Porcentaje,
  names.arg = TablaTipoOleoducto$Tipo_de_Oleoducto,
  main = "Gráfica No.4: Distribución de probabilidad de Tipos de Oleoductos",
  xlab = "Tipo de Oleoducto",
  ylab = "Probabilidad (%)",
  col = colores,
  las = 1,
  cex.names = 0.8,
  cex.axis = 0.8,
  cex.main = 1.2,
  ylim = c(0, 100)
)

# Etiqueta encima de la barra resaltada
text(
  x = bp[TablaTipoOleoducto$Tipo_de_Oleoducto == Oleoducto_objetivo],
  y = TablaTipoOleoducto$Porcentaje[TablaTipoOleoducto$Tipo_de_Oleoducto == Oleoducto_objetivo] + 5,
  labels = paste0(probabilidad, "%"),
  col = "black",
  font = 2,
  cex = 0.9
)

4.Conclusión


A partir de los datos analizados, se estima que la probabilidad de ocurrencia de un accidente en un oleoducto del tipo ABOVEGROUND (sobre el suelo) es de aproximadamente 53.2 %.

Este resultado sugiere que más de la mitad de los accidentes registrados durante el periodo de estudio se produjeron en este tipo de infraestructura. Esto podría indicar que los oleoductos sobre el suelo presentan una mayor exposición o vulnerabilidad a factores de riesgo en comparación con otros tipos de oleoductos.