1.Carga de datos


setwd("/cloud/project/")
datos<-read.csv("DerramesEEUU.csv", header = TRUE, sep=";" , dec=".",)
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" "-" "ANHYDROUS AMMONIA" ...
##  $ NombreLiquido                          : chr  "-" "VACUUM GAS OIL (VGO)" "-" "-" ...
##  $ CiudadAccidente                        : chr  "GREEN RIDGE" "PHILADELPHIA" "HOBBS" "SCHALLER" ...
##  $ CondadoAccidente                       : chr  "PETTIS" "PHILADELPHIA" "LEA" "IDA" ...
##  $ EstadoAccidente                        : chr  "MO" "PA" "NM" "IA" ...
##  $ LatitudAccidente                       : chr  "38,63064" "39,91934" "32,611" "42,45589" ...
##  $ LongitudAccidente                      : chr  "-93,39656" "-75,20447" "-103,0763" "-95,32798" ...
##  $ 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         : chr  "0,24" "1700" "2" "0,36" ...
##  $ LiberacionIntencionalBarriles          : chr  "0" "0" "-" "0.05" ...
##  $ RecuperacionLiquidoBarriles            : chr  "0,07" "1699" "0,48" "0" ...
##  $ PerdidaNetaBarriles                    : chr  "0,17" "1" "1,52" "0,36" ...
##  $ IgnicionLiquido                        : chr  "NO" "NO" "NO" "NO" ...
##  $ ExplosionLiquido                       : chr  "NO" "NO" "NO" "NO" ...
##  $ CierreOleoducto                        : chr  "YES" "YES" "NO" "NO" ...
##  $ DiaCierre                              : chr  "8" "25" "-" "-" ...
##  $ MesCierre                              : chr  "4" "3" "-" "-" ...
##  $ AnioCierre                             : chr  "2010" "2010" "-" "-" ...
##  $ HoraCierre                             : chr  "6" "18" "-" "-" ...
##  $ AmPmCierre                             : chr  "a. m." "p. m." "-" "-" ...
##  $ DiaReinicio                            : chr  "9" "28" "-" "-" ...
##  $ MesReinicio                            : chr  "4" "3" "-" "-" ...
##  $ AnioReinicio                           : chr  "2010" "2010" "-" "-" ...
##  $ HoraReinicio                           : chr  "10" "16" "-" "-" ...
##  $ AmPmReinicio                           : chr  "a. m." "p. m." "-" "-" ...
##  $ EvacuacionesPublicas                   : chr  "-" "0" "-" "-" ...
##  $ LesionesEmpleadosOperador              : chr  "-" "-" "-" "-" ...
##  $ LesionesContratistasOperador           : chr  "-" "-" "-" "-" ...
##  $ LesionesRescatistasEmergencia          : chr  "-" "-" "-" "-" ...
##  $ OtrasLesiones                          : chr  "-" "-" "-" "-" ...
##  $ LesionesPublico                        : chr  "-" "-" "-" "-" ...
##  $ TodasLesiones                          : chr  "-" "-" "-" "-" ...
##  $ FallecimientosEmpleadosOperador        : chr  "-" "-" "-" "-" ...
##  $ FallecimientosContratistasOperador     : chr  "-" "-" "-" "-" ...
##  $ FallecimientosRescatistasEmergencia    : chr  "-" "-" "-" "-" ...
##  $ OtrosFallecimientos                    : chr  "-" "-" "-" "-" ...
##  $ FallecimientosPublico                  : chr  "-" "-" "-" "-" ...
##  $ TodosFallecimientos                    : chr  "-" "-" "-" "-" ...
##  $ CostosDaniosPropiedad                  : chr  "0" "0" "30000" "12000" ...
##  $ CostosMercanciaPerdidas                : chr  "27" "0" "100" "30" ...
##  $ CostosDaniosPropiedadesPublicasPrivadas: chr  "0" "0" "1000" "5000" ...
##  $ CostosRespuestaEmergencia              : chr  "0" "0" "-" "0" ...
##  $ CostosRemediacionAmbiental             : chr  "0" "100000" "20000" "15000" ...
##  $ OtrosCostos                            : chr  "0" "0" "-" "0" ...
##  $ TodosCostos                            : int  27 100000 51100 32030 5220 150 7500 9965 11497 165593 ...

1.1 Extracción de datos

AnioAccidente <- datos$AnioAccidente
AnioAccidente <- na.omit(AnioAccidente)

2.Distribución de Frecuencias


2.1 Distribución de frecuencias simples

TDFAnioAccidente <- table(AnioAccidente)
TablaAnioAccidente <- as.data.frame(TDFAnioAccidente)
names(TablaAnioAccidente) <- c("Anio","ni")

TablaAnioAccidente$hi_porc <- round((TablaAnioAccidente$ni / sum(TablaAnioAccidente$ni)) * 100, 2)

2.2 Distribución de frecuencias acumuladas

TablaAnioAccidente$Ni_asc <- cumsum(TablaAnioAccidente$ni)
TablaAnioAccidente$Ni_dsc <- rev(cumsum(rev(TablaAnioAccidente$ni)))

TablaAnioAccidente$Hi_asc <- round(cumsum(TablaAnioAccidente$hi_porc), 3)
TablaAnioAccidente$Hi_dsc <- round(rev(cumsum(rev(TablaAnioAccidente$hi_porc))), 3)

2.2 Tabla final

TDFFinalAnioAccidente<- rbind(TablaAnioAccidente, data.frame(
  Anio = "TOTAL",
  ni = sum(TablaAnioAccidente$ni),
  hi_porc = 100,
  Ni_asc = " ",
  Ni_dsc = " ",
  Hi_asc = " ",
  Hi_dsc = " "
  ))

library(gt)
tabla_AnioAccidente <- TDFFinalAnioAccidente %>%
  gt() %>%
  cols_label(
    Anio = md("**Año**"),
    ni = md("**ni**"),
    hi_porc = md("**hi (%)**"),
    Ni_asc = md("**Ni ↑**"),
    Ni_dsc = md("**Ni ↓**"),
    Hi_asc = md("**Hi ↑ (%)**"),
    Hi_dsc = md("**Hi ↓ (%)**")
  ) %>%
  tab_header(
    title = md("**Tabla N°1**"),
    subtitle = md("**Distribución de accidentes en oleoductos por año 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",
    column_labels.border.top.color = "black",
    column_labels.border.bottom.color = "black",
    column_labels.border.bottom.width = px(2),
    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 = as.character(Anio) == "TOTAL"
    )
  )

tabla_AnioAccidente
Tabla N°1
Distribución de accidentes en oleoductos por año en EE.UU. (2010-2017)
Año ni hi (%) Ni ↑ Ni ↓ Hi ↑ (%) Hi ↓ (%)
2010 346 12.54 346 2760 12.54 100
2011 336 12.17 682 2414 24.71 87.46
2012 362 13.12 1044 2078 37.83 75.29
2013 400 14.49 1444 1716 52.32 62.17
2014 447 16.20 1891 1316 68.52 47.68
2015 453 16.41 2344 869 84.93 31.48
2016 414 15.00 2758 416 99.93 15.07
2017 2 0.07 2760 2 100 0.07
TOTAL 2760 100.00
Autor: Grupo 1

3.Gráficas de distribución de frecuencia


A continuación, las gráficas de diagramas de barras se presentan con escalas local y global: la escala local ajusta el eje Y al valor máximo de la categoría más alta, mientras que la escala global fija el eje Y a un límite total, mostrando cada categoría en relación al conjunto completo.


3.1 Diagramas de barras

3.1.1 Diagramas de frecuencias absolutas

- Diagrama de frecuencia absoluta (Escala local):

par(mar = c(6, 6, 4, 2)) 
barplot(
  TablaAnioAccidente$ni, 
  main = "Gráfica N°1: Distribución de la cantidad de accidentes
  por año en EE.UU.",
  xlab = "Año",
  ylab = "Cantidad",
  col = "tan1",
  names.arg = TablaAnioAccidente$Anio,
  las = 1,
  cex.main = 1.2,    
  cex.lab = 1.2,   
  cex.axis = 0.8,
  cex.names = 0.8
)

- Diagrama de frecuencia absoluta (Escala global):

par(mar = c(6, 6, 4, 2)) 
barplot(
  TablaAnioAccidente$ni,
  main = "Gráfica N°2: Distribución de la cantidad de accidentes 
  por año, en relación al total en EE.UU.",
  xlab = "Año",
  ylab = "Cantidad",
  names.arg = TablaAnioAccidente$Anio,
  col = "tan2",
  cex.main = 1.2,
  las = 1,
  cex.lab = 1.2,
  cex.axis = 0.8,
  cex.names = 0.8,
  ylim = c(0,2760),
)

3.1.2 Diagramas de frecuencias relativas

- Diagrama de frecuencia relativas (Escala local):

par(mar = c(6, 6, 4, 2)) 
barplot(
  TablaAnioAccidente$hi,
  main = "Gráfica N°3: Distribución porcentual de accidentes 
  por año en EE.UU.",
  xlab = "Año",
  ylab = "Porcentaje (%)",
  names.arg = TablaAnioAccidente$Anio,
  col = "tan3",
  cex.main = 1.2,
  las = 1,
  cex.lab = 1.2,
  cex.axis = 1,
  cex.names = 0.8,
)

- Diagrama de frecuencia relativas (Escala global):

par(mar = c(6, 6, 4, 2)) 
barplot(
  TablaAnioAccidente$hi,
  main = "Gráfica N°4: Distribución porcentual de accidentes
  por año, en relación al total en EE.UU.",
  xlab = "Año",
  ylab = "Porcentaje (%)",
  names.arg = TablaAnioAccidente$Anio,
  col = "tan4",
  cex.main = 1.2,
  las = 1,
  cex.lab = 1.2,
  cex.axis = 1,
  cex.names = 0.8,
  ylim = c(0, 100)
)

3.2 Ojivas

3.2.1 Ojivas combinadas con la frecuencia absoluta

plot(x = 1:(nrow(TDFFinalAnioAccidente)-1), 
     y = TDFFinalAnioAccidente$Ni_asc[TDFFinalAnioAccidente$Anio != "TOTAL"], 
     type = "b", col = "tan1",
     xlab = "Año", 
     ylab = "Cantidad",
     las = 1,
     main = "Gráfica N°5: Ojivas combinadas de los años de accidentes 
     de oleoductos ocurridos en EE.UU",
     xaxt = "n")

axis(side = 1, 
     at = 1:(nrow(TDFFinalAnioAccidente)-1), 
     labels = TDFFinalAnioAccidente$Anio[TDFFinalAnioAccidente$Anio != "TOTAL"], 
     las = 2)

points(x = 1:(nrow(TDFFinalAnioAccidente)-1), 
       y = TDFFinalAnioAccidente$Ni_dsc[TDFFinalAnioAccidente$Anio != "TOTAL"], 
       type = "b", col = "tan4")

legend("right", legend = c("Ojiva descendente","Ojiva ascendente"),
       cex = 0.7,
       col = c("tan4","tan1"), pch = 1)

3.2.2 Ojivas combinadas con la frecuencia relativa

plot(x = 1:(nrow(TDFFinalAnioAccidente)-1), 
     y = TDFFinalAnioAccidente$Hi_asc[TDFFinalAnioAccidente$Anio != "TOTAL"], 
     type = "b", col = "tan1",
     xlab = "Año", 
     ylab = "Porcentaje (%)",
     las = 1,
     main = "Gráfica Nº6: Ojivas combinadas de los años de accidentes 
     de oleoductos ocurridos en EE.UU",
     xaxt = "n")

axis(side = 1, 
     at = 1:(nrow(TDFFinalAnioAccidente)-1), 
     labels = TDFFinalAnioAccidente$Anio[TDFFinalAnioAccidente$Anio != "TOTAL"], 
     las = 2)

points(x = 1:(nrow(TDFFinalAnioAccidente)-1), 
       y = TDFFinalAnioAccidente$Hi_dsc[TDFFinalAnioAccidente$Anio != "TOTAL"], 
       type = "b", col = "tan4")

legend("right", legend = c("Ojiva descendente","Ojiva ascendente"),
       cex = 0.7,
       col = c("tan4","tan1"), pch = 1)

3.3 Diagrama de Caja y bigotes

boxplot(AnioAccidente , horizontal = TRUE, col = "tan1",
        main = "Gráfica N°7: Distribución de todos los años de 
        accidentes de oleoductos ocurridos en EE.UU.",
        xlab = "Años Accidentes",
        xaxt = "n")
axis(1, at = pretty(AnioAccidente), labels = format(pretty(AnioAccidente), scientific = FALSE))

4.Indicadores estadísticos

4.1 Indicadores de posición

- Tendencia Central

mediana <- median(AnioAccidente)
media_aritmetica <- mean(AnioAccidente)
Mo <- "2015"

- No Centrales

# Cuartiles
ri <- min(AnioAccidente)
rs <- max(AnioAccidente)
summary(AnioAccidente)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    2010    2012    2013    2013    2015    2017

4.2 Indicadores de dispersión

desviacion_estandar <- sd(AnioAccidente)
coeficiente_variabilidad <- (desviacion_estandar / media_aritmetica) * 100

4.3 Indicadores de forma

library(e1071) 
As <- skewness(AnioAccidente)
curtosis <- kurtosis(AnioAccidente)

4.4 Tabla de indicadores

library(gt)

Variable <- c("Año accidente")
Tabla_indicadores_AnioAccidente <- data.frame(
  Variable,
  ri = round(ri, 3),
  rs = round(rs, 3),
  media_aritmetica = round(media_aritmetica, 3),
  mediana = round(mediana, 3),
  Mo,
  S = round(desviacion_estandar, 3),
  `Cv (%)` = round(coeficiente_variabilidad, 3),
  As = round(As, 3),
  K = round(curtosis, 3)
)

colnames(Tabla_indicadores_AnioAccidente) <- c("Variable","Mínimo",
                                        "Máximo","x",
                                        "Me","Mo",
                                        "S","Cv (%)",
                                        "As","K")

tabla_indicadores_gt <- Tabla_indicadores_AnioAccidente %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N°2**"),
    subtitle = md("**Indicadores estadísticos de la variable Año del Accidente en oleoductos de 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",
    column_labels.border.top.color = "black",
    column_labels.border.bottom.color = "black",
    column_labels.border.bottom.width = px(2),
    heading.border.bottom.color = "black",
    heading.border.bottom.width = px(2),
    table_body.hlines.color = "gray",
    table_body.border.bottom.color = "black"
  )
tabla_indicadores_gt
Tabla N°2
Indicadores estadísticos de la variable Año del Accidente en oleoductos de EE.UU. (2010–2017)
Variable Mínimo Máximo x Me Mo S Cv (%) As K
Año accidente 2010 2017 2013.192 2013 2015 1.973 0.098 -0.153 -1.191
Autor: Grupo 1

6.Conclusión

La variable Año accidente, que registra la distribución temporal de los incidentes en oleoductos de EE.UU., presenta valores que fluctúan entre 2010 y 2017. La media (2013.192) y la mediana (2013) son casi idénticas, lo que inicialmente sugieriria una distribución simétrica de los accidentes a lo largo del periodo. La moda (2015) indica el año de mayor frecuencia de incidentes. La desviación estándar (1.973) es baja y el coeficiente de variación (0.098%) es prácticamente nulo, lo que indica que los datos son extremadamente homogéneos y están muy poco dispersos temporalmente.La asimetría es levemente negativa (-0.153) y la curtosis también negativa (-1.191), lo que indica que la distribución de accidentes es bastante equilibrada a lo largo del periodo, con una ligera concentración hacia los años 2013–2016, y que la distribución es platicúrtica.

Sin embargo, es crucial notar que los datos del año 2017 están incompletos (solo dos observaciones), lo cual sesga estos indicadores y exagera la aparente concentración y aplanamiento.

En síntesis, los accidentes en oleoductos se distribuyen de manera uniforme y estable en el tiempo, sin grandes picos de ocurrencia anual (al menos hasta 2016).Este comportamiento es neutro en términos de beneficio, ya que los accidentes se mantienen relativamente estables a lo largo del periodo, sin una tendencia clara de disminución en el tiempo..