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

3.1.1.1 Diagrama de frecuencia absoluta (Escala local):

par(mar = c(6, 6, 4, 2)) 
barplot(
  TablaAnioAccidente$ni, 
  main = "Gráfica No.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
)

3.1.1.2. Diagrama de frecuencia absoluta (Escala global):

par(mar = c(6, 6, 4, 2)) 
barplot(
  TablaAnioAccidente$ni,
  main = "Gráfica No.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

3.1.2.1 Diagrama de frecuencia relativas (Escala local):

par(mar = c(6, 6, 4, 2)) 
barplot(
  TablaAnioAccidente$hi,
  main = "Gráfica No.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,
)

3.1.2.2 Diagrama de frecuencia relativas (Escala global):

par(mar = c(6, 6, 4, 2)) 
barplot(
  TablaAnioAccidente$hi,
  main = "Gráfica No.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.3 Ojivas

3.3.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.3.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 No.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

4.1.1 Tendencia Central

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

4.1.2 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 AnioAccidente correspondiente a los accidentes de oleoductos en EE.UU. durante el periodo (2010-2017) presenta valores que fluctúan entre dichos años, con una media de 2013.19, muy cercana a la mediana (2013), lo que evidencia una distribución bastante simétrica. La moda corresponde al año 2015, en el cual se registró la mayor frecuencia de accidentes. La desviación estándar es baja (1.97) y el coeficiente de variación prácticamente nulo (0.098%), lo que indica que los datos son muy homogéneos y con poca dispersión temporal. La asimetría es levemente negativa (-0.153), reflejando una ligera concentración hacia los años más recientes, mientras que la curtosis negativa (-1.191) sugiere una distribución más aplanada que la normal. En síntesis, los accidentes en oleoductos se distribuyen de manera relativamente uniforme a lo largo del periodo analizado, sin variaciones extremas ni atipicidades significativas en la variable año.