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

Estado <- datos$EstadoAccidente
Estado <- na.omit(Estado)

2.Distribución de Frecuencias

2.1 Distribución de frecuencias simples

TDFEstado <- table(Estado)
TablaEstado <- as.data.frame(TDFEstado)
names(TablaEstado) <- c("Categoria","ni")

TablaEstado$`hi(%)` <- round((TablaEstado$ni / sum(TablaEstado$ni)) * 100, 2)

2.1.1 Agrupación por región

for (i in 1:nrow(TablaEstado)) {
  region <- as.character(TablaEstado$Categoria[i])
  if (region %in% c("ME","NH","VT","MA","RI","CT","NY","NJ","PA")) {
    TablaEstado$Grupo[i] <- "Noreste"
  } else if (region %in% c("OH","MI","IN","IL","WI","MN","IA","MO","ND","SD","NE","KS")) {
    TablaEstado$Grupo[i] <- "Medio Oeste"
  } else if (region %in% c("DE","MD","VA","WV","NC","SC","GA","FL","KY","TN","MS","AL","AR","LA","OK","TX")) {
    TablaEstado$Grupo[i] <- "Sur"
  } else if (region %in% c("MT","ID","WY","CO","NM","AZ","UT","NV","WA","OR","CA","AK","HI")) {
    TablaEstado$Grupo[i] <- "Oeste"
  } else {
    TablaEstado$Grupo[i] <- "Otro"
  }
}

2.1.2 Tabla Final

library(gt)

tabla_estado <- TablaEstado %>%
  gt() %>%
   cols_label(
    Categoria = md("**Estado**"),
    ni = md("**ni**"),
    Grupo = md("**Región**")
  ) %>%
  tab_header(
    title = md("**Tabla N° 1**"),
    subtitle = md("**Distribución de accidentes en oleoductos por Estado 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 = TablaEstado$Categoria == "TOTAL"
    )
  )
tabla_estado 
Tabla N° 1
Distribución de accidentes en oleoductos por Estado en EE.UU. (2010-2017)
Estado ni hi(%) Región
AK 11 0.40 Oeste
AL 20 0.72 Sur
AR 13 0.47 Sur
CA 148 5.36 Oeste
CO 24 0.87 Oeste
CT 2 0.07 Noreste
FL 7 0.25 Sur
GA 17 0.62 Sur
HI 3 0.11 Oeste
IA 46 1.67 Medio Oeste
ID 4 0.14 Oeste
IL 108 3.91 Medio Oeste
IN 57 2.07 Medio Oeste
KS 150 5.43 Medio Oeste
KY 14 0.51 Sur
LA 163 5.91 Sur
MA 2 0.07 Noreste
MD 8 0.29 Sur
ME 1 0.04 Noreste
MI 29 1.05 Medio Oeste
MN 59 2.14 Medio Oeste
MO 42 1.52 Medio Oeste
MS 32 1.16 Sur
MT 30 1.09 Oeste
NC 15 0.54 Sur
ND 49 1.78 Medio Oeste
NE 22 0.80 Medio Oeste
NJ 84 3.04 Noreste
NM 57 2.07 Oeste
NV 1 0.04 Oeste
NY 14 0.51 Noreste
OH 53 1.92 Medio Oeste
OK 236 8.55 Sur
OR 4 0.14 Oeste
PA 45 1.63 Noreste
SC 16 0.58 Sur
SD 9 0.33 Medio Oeste
TN 7 0.25 Sur
TX 997 36.12 Sur
UT 8 0.29 Oeste
VA 20 0.72 Sur
WA 8 0.29 Oeste
WI 27 0.98 Medio Oeste
WV 2 0.07 Sur
WY 96 3.48 Oeste
Autor: Grupo 1

2.2 Distribucion de frecuencias por Región

RegionGrupo <- TablaEstado$Grupo 
TDFRegionGrupo <- table(RegionGrupo)
TablaRegionGrupo <- as.data.frame(TDFRegionGrupo)
names(TablaRegionGrupo) <- c("Categoria","ni")

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

2.2.1 Tabla final por región en EE.UU

TDFFinalRegionGrupo <- rbind(TablaRegionGrupo, data.frame(
  Categoria = "TOTAL",
  ni = sum(TablaRegionGrupo$ni),
  hi_porc = 100
))

tabla_region <- TDFFinalRegionGrupo %>%
  gt() %>%
  cols_label(
    Categoria = md("**Región**"),
    ni = md("**ni**"),
    hi_porc = md("**hi(%)**")
  ) %>%
  tab_header(
    title = md("**Tabla N° 2**"),
    subtitle = md("**Distribución de accidentes en oleoductos por Región 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 = TDFFinalRegionGrupo$Categoria == "TOTAL"
    )
  )
tabla_region
Tabla N° 2
Distribución de accidentes en oleoductos por Región en EE.UU. (2010-2017)
Región ni hi(%)
Medio Oeste 12 26.67
Noreste 6 13.33
Oeste 12 26.67
Sur 15 33.33
TOTAL 45 100.00
Autor: Grupo 1

3.Gráficas de distribución de frecuencia por región en Estados Unidos

A continuación, las gráficas 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(
  TablaRegionGrupo$ni, 
  main = "Gráfica No.1: Distribución de la cantidad de accidentes en 
  oleoductos por región en EE.UU.",
  xlab = "Región",
  ylab = "Cantidad",
  col = "lightblue1",
  names.arg = TablaRegionGrupo$Categoria,
  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(
  TablaRegionGrupo$ni,
  main = "Gráfica No.2: Distribución de la cantidad de accidentes en 
  oleoductos por región en relación al total en EE.UU.",
  xlab = "Región",
  ylab = "Cantidad",
  names.arg = TablaRegionGrupo$Categoria,
  col = "lightblue2",
  cex.main = 1.2,
  las = 1,
  cex.lab = 1.2,
  cex.axis = 0.8,
  cex.names = 0.8,
  ylim = c(0,45),
)

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(
  TablaRegionGrupo$hi,
  main = "Gráfica No.3: Distribución porcentual de accidentes en 
  oleoductos por región en EE.UU.",
  xlab = "Región",
  ylab = "Porcentaje (%)",
  names.arg = TablaRegionGrupo$Categoria,
  col = "lightblue3",
  cex.main = 1.2,
  las = 1,
  cex.lab = 1.2,
  cex.axis = 0.8,
  cex.names = 0.8,
)

3.1.2.2 Diagrama de frecuencia relativas (Escala global):

par(mar = c(6, 6, 4, 2)) 
barplot(
  TablaRegionGrupo$hi,
  main = "Gráfica No.4: Distribución porcentual de accidentes en 
  oleoductos por región en relación al total en EE.UU.",
  xlab = "Región",
  ylab = "Porcentaje (%)",
  names.arg = TablaRegionGrupo$Categoria,
  col = "lightblue4",
  cex.main = 1.2,
  las = 1,
  cex.lab = 1.2,
  cex.axis = 1,
  cex.names = 0.8,
  ylim = c(0, 100)
)

3.2 Diagrama circular

par(mar = c(6, 6, 4, 2), xpd = TRUE)
colores_region <- colorRampPalette(c("lightblue1", "royalblue3"))(nrow(TablaRegionGrupo))
etiquetas_porcentaje <- paste0(TablaRegionGrupo$hi, "%")

pie(
  TablaRegionGrupo$ni,
  labels = etiquetas_porcentaje,
  main = "Gráfica No.5:Distribución porcentual de accidentes en 
  oleoductos por región en EE.UU.",
  col = colores_region,
  cex.main = 1.2,
  cex = 0.8
)

legend(
  x = 1, y = -0.5,
  legend = TablaRegionGrupo$Categoria,
  title = "Leyenda",
  fill = colores_region,
  cex = 0.7,
  y.intersp = 0.7,
  bty = "o",
  inset = 0.2
)

4.Indicador

moda_region <- TablaRegionGrupo$Categoria[which.max(TablaRegionGrupo$ni)]

La región con más accidentes en Estados Unidos es: Sur

5.Conclusión

La variable EstadoAccidente es de tipo nominal. Para el análisis, los estados fueron agrupados en cuatro regiones geográficas, en donde los accidentes fluctúan desde el Noreste hasta el Sur, concentrándose principalmente en esta última, con un 33.33% del total. Por lo anterior, esto es perjudicial, ya que evidencia una alta concentración de accidentes en ciertas zonas, siendo necesario priorizar acciones preventivas en la región Sur.