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 ...
Estado <- datos$EstadoAccidente
Estado <- na.omit(Estado)
TDFEstado <- table(Estado)
TablaEstado <- as.data.frame(TDFEstado)
names(TablaEstado) <- c("Categoria","ni")
TablaEstado$`hi(%)` <- round((TablaEstado$ni / sum(TablaEstado$ni)) * 100, 2)
Debido a la extensión territorial de Estados Unidos, se decidió agrupar los estados en sus cuatro regiones principales, con el objetivo de facilitar el análisis y la interpretación de los resultados. A continuación, se presenta la distribución regional:
Esta clasificación permite simplificar el análisis espacial y obtener
conclusiones más claras sobre la distribución de los accidentes. Para
ello, se utilizó un bucle for, que asigna cada estado a su
respectiva 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"
}
}
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 | |||
Tras clasificar los estados en sus respectivas regiones, se calculó la distribución de frecuencias por región, tanto en valores absolutos (ni) como relativos (hi(%)). Esto permite observar la concentración de accidentes no solo a nivel de estado individual, sino también considerando la región geográfica en la que ocurren los incidentes.
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)
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 | ||
A continuación, las gráficas muestran cómo se distribuyen los
accidentes entre las cuatro regiones principales de Estados Unidos estas
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.
par(mar = c(6, 6, 4, 2))
barplot(
TablaRegionGrupo$ni,
main = "Gráfica N°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
)
par(mar = c(6, 6, 4, 2))
barplot(
TablaRegionGrupo$ni,
main = "Gráfica N°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),
)
par(mar = c(6, 6, 4, 2))
barplot(
TablaRegionGrupo$hi,
main = "Gráfica N°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,
)
par(mar = c(6, 6, 4, 2))
barplot(
TablaRegionGrupo$hi,
main = "Gráfica N°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)
)
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 N°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
)
moda_region <- TablaRegionGrupo$Categoria[which.max(TablaRegionGrupo$ni)]
La región con más accidentes en Estados Unidos es: Sur
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.Esta concentración es particularmente preocupante, ya que la
región Sur posee una alta densidad de oleoductos y zonas con ecosistemas
sensibles, lo que incrementa el riesgo ambiental y económico de los
accidentes. Por lo tanto, resulta necesario priorizar acciones
preventivas y planes de mitigación específicos para esta
región.