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 : 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" NA "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 : 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 ...
EvacuacionesPublicas <- datos$EvacuacionesPublicas
EvacuacionesPublicas <- na.omit(EvacuacionesPublicas)
# Cantidad de datos de la variable
n <- length(EvacuacionesPublicas)
Cantidad total de datos: 2303
Dado el gran volumen de datos, resulta conveniente analizar primero el comportamiento general de la variable para determinar si es necesario realizar el análisis estadístico dentro de un intervalo específico.
Por ello, se elaboró un diagrama de caja con el fin de identificar el rango en el que se agrupan la mayoría de los valores y obtener así un conjunto representativo de datos.
caja_Evacuaciones<-boxplot(EvacuacionesPublicas , horizontal = TRUE,
col = "tan1",
main = "Gráfica N°1: Distribución de todas las Evacuaciones
públicas de accidentes de oleoductos ocurridos en EE.UU.",
xlab = "Evacuaciones públicas")
La mayoría de los datos se concentran en el valor 0, por lo que se decidió enfocar el análisis únicamente en los valores atípicos, con el fin de observar con mayor precisión la distribución de los datos. En este caso, para lograr un análisis estadístico más representativo, se seleccionó el rango comprendido entre 1 y 90 evacuaciones, que corresponde al intervalo donde se concentra la mayor parte de la distribución.
Evacuaciones_1_90 <- subset(EvacuacionesPublicas, EvacuacionesPublicas >= 1 & EvacuacionesPublicas <= 100)
limites <- seq(1, 91, by = 10)
clasificacion <- cut(Evacuaciones_1_90,
breaks = limites,
include.lowest = TRUE,
right = FALSE)
TablaEvacuacion <- as.data.frame(table(clasificacion))
colnames(TablaEvacuacion) <- c("Intervalo", "ni")
TablaEvacuacion$hi <- round((TablaEvacuacion$ni / sum(TablaEvacuacion$ni)) * 100, 2)
# Frecuencia acumulada absoluta
TablaEvacuacion$Niasc <- cumsum(TablaEvacuacion$ni)
TablaEvacuacion$Nidsc <- rev(cumsum(rev(TablaEvacuacion$ni)))
# Frecuencia acumulada relativa (%)
TablaEvacuacion$Hiasc <- cumsum(TablaEvacuacion$hi)
TablaEvacuacion$Hidsc <- rev(cumsum(rev(TablaEvacuacion$hi)))
TDFFinalEvacuaciones<- rbind(TablaEvacuacion, data.frame(
Intervalo = "TOTAL",
ni = sum(TablaEvacuacion$ni),
hi = 100,
Niasc = " ",
Hiasc = " ",
Nidsc = " ",
Hidsc = " "
))
library(gt)
tablaEvacuaciones <- TDFFinalEvacuaciones %>%
gt() %>%
cols_label(
Intervalo = md("**Intervalo**"),
ni = md("**ni**"),
hi = md("**hi (%)**"),
Niasc = md("**Ni ↑**"),
Hiasc = md("**Hi ↑ (%)**"),
Nidsc = md("**Ni ↓**"),
Hidsc = md("**Hi ↓ (%)**")
) %>%
tab_header(
title = md("**Tabla N°1**"),
subtitle = md("**Distribución de las Evacuaciones públicas por accidentes ocurridos 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.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 = Intervalo == "TOTAL"
)
)
tablaEvacuaciones
| Tabla N°1 | ||||||
| Distribución de las Evacuaciones públicas por accidentes ocurridos en EE.UU (2010-2017) | ||||||
| Intervalo | ni | hi (%) | Ni ↑ | Ni ↓ | Hi ↑ (%) | Hi ↓ (%) |
|---|---|---|---|---|---|---|
| [1,11) | 23 | 46.94 | 23 | 49 | 46.94 | 99.99 |
| [11,21) | 10 | 20.41 | 33 | 26 | 67.35 | 53.05 |
| [21,31) | 6 | 12.24 | 39 | 16 | 79.59 | 32.64 |
| [31,41) | 4 | 8.16 | 43 | 10 | 87.75 | 20.4 |
| [41,51) | 1 | 2.04 | 44 | 6 | 89.79 | 12.24 |
| [51,61) | 1 | 2.04 | 45 | 5 | 91.83 | 10.2 |
| [61,71) | 2 | 4.08 | 47 | 4 | 95.91 | 8.16 |
| [71,81) | 1 | 2.04 | 48 | 2 | 97.95 | 4.08 |
| [81,91] | 1 | 2.04 | 49 | 1 | 99.99 | 2.04 |
| TOTAL | 49 | 100.00 | ||||
| Autor: Grupo 1 | ||||||
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.
par(mar = c(7, 6, 4, 2))
barplot(
TablaEvacuacion$ni,
main = "Gráfica N°2: Distribución de evacuaciones públicas\npor accidentes en oleoductos de EE.UU.",
ylab = "Cantidad",
names.arg = TablaEvacuacion$Intervalo,
col = "tan1",
las = 1,
cex.main = 1.1,
cex.lab = 1.1,
cex.axis = 0.9,
cex.names = 0.8,
ylim=c(0,25)
)
mtext("Evacuaciones públicas", side = 1, line = 4, cex = 1)
par(mar = c(7, 6, 4, 2))
barplot(
TablaEvacuacion$ni,
main = "Gráfica N°3: Distribución de evacuaciones públicas
por accidentes en oleoductos de EE.UU., en relación al total",
ylab = "Cantidad",
names.arg = TablaEvacuacion$Intervalo,
col = "tan2",
las = 1,
cex.main = 1.1,
cex.lab = 1.1,
cex.axis = 0.9,
cex.names = 0.8,
ylim = c(0, 50)
)
mtext("Evacuaciones públicas", side = 1, line = 4, cex = 1)
par(mar = c(7, 6, 4, 2))
barplot(
TablaEvacuacion$hi,
main = "Gráfica N°4: Distribución porcentual de evacuaciones públicas
por accidentes en oleoductos de EE.UU",
ylab = "Porcentaje (%)",
names.arg = TablaEvacuacion$Intervalo,
col = "tan3",
las = 1,
cex.main = 1.1,
cex.lab = 1.1,
cex.axis = 1.0,
cex.names = 0.8,
ylim=c(0,50)
)
mtext("Evacuaciones públicas", side = 1, line = 4, cex = 1)
par(mar = c(7, 6, 4, 2))
barplot(
TablaEvacuacion$hi,
main = "Gráfica N°5: Distribución porcentual de evacuaciones públicas
por accidentes en oleoductos, en relación al total en EE.UU.",
ylab = "Porcentaje (%)",
names.arg = TablaEvacuacion$Intervalo,
col = "tan4",
las = 1,
cex.main = 1.1,
cex.lab = 1.1,
cex.axis = 1.0,
cex.names = 0.8,
ylim = c(0, 100)
)
mtext("Evacuaciones públicas", side = 1, line = 4, cex = 1)
par(mgp = c(4, 1, 0))
par(mar = c(7, 6, 4, 2))
x <- 1:nrow(TablaEvacuacion)
# Ojiva descendente
plot(x, TablaEvacuacion$Nidsc,
main = "Gráfica N°6: Ojivas combinadas de la distribución de la cantidad acumulada
de evacuaciones públicas por accidentes en oleoductos de EE.UU.",
xlab = "Evacuaciones públicas",
ylab = "Cantidad",
col = "tan4",
type = "b",
xaxt = "n",
las = 1,
cex.main = 1.2,
cex.lab = 1.2,
cex.axis = 0.8,
ylim = c(0, max(TablaEvacuacion$Niasc)))
# Etiquetas personalizadas en el eje X
axis(side = 1, at = x, labels = TablaEvacuacion$Intervalo, las = 1, cex.axis = 0.8)
# Ojiva ascendente
lines(x, TablaEvacuacion$Niasc, col = "tan1", type = "b")
# Leyenda
legend("right",
legend = c("Ojiva descendente", "Ojiva ascendente"),
col = c("tan4", "tan1"),
pch = 1, lty = 1,
cex = 0.7)
par(mgp = c(4, 1, 0))
par(mar = c(7, 6, 4, 2))
# Ojiva descendente (%)
plot(x, y = TablaEvacuacion$Hidsc,
type = "b",
col = "darkorange4",
xlab = "Evacuaciones públicas",
ylab = "Porcentaje (%)",
main = "Gráfica N°7: Ojivas combinadas de la distribución porcentual acumulada de
evacuaciones públicas por accidentes en oleoductos de EE.UU.",
xaxt = "n",
ylim = c(0, 100),
las = 1,
cex.main = 1.2,
cex.lab = 1.2,
cex.axis = 0.8)
# Ojiva ascendente (%)
lines(x, TablaEvacuacion$Hiasc,
type = "b",
col = "darkorange")
# Etiquetas personalizadas en eje X
axis(side = 1, at = x, labels = TablaEvacuacion$Intervalo, las = 1, cex.axis = 0.8)
# Leyenda
legend("right",
legend = c("Ojiva descendente", "Ojiva ascendente"),
col = c("darkorange4", "darkorange"),
pch = 1, lty = 1,
cex = 0.7)
boxplot(Evacuaciones_1_90, horizontal = TRUE, col = "tan1",
main = "Gráfica N°8: Distribución de todas las Evacuaciones
públicas de accidentes de oleoductos ocurridos en EE.UU.",
xlab = "Evacuaciones públicas")
# Media
media<- mean(Evacuaciones_1_90)
# Mediana
mediana <- median(Evacuaciones_1_90)
# Moda
Mo <- "[0,10)"
# Cuartiles
ri <- min(Evacuaciones_1_90)
rs <- max(Evacuaciones_1_90)
summary(Evacuaciones_1_90)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.00 5.00 12.00 19.04 25.00 83.00
desviacion_estandar <- sd(Evacuaciones_1_90)
coeficiente_variabilidad <- (desviacion_estandar / media) * 100
library(e1071)
As <- skewness(Evacuaciones_1_90)
curtosis <- kurtosis(Evacuaciones_1_90)
library(gt)
Variable <- c("Evacuaciones públicas")
Tabla_indicadores_Evacuaciones_1_90 <- data.frame(
Variable,
ri = round(ri, 3),
rs = round(rs, 3),
media= round(media, 0),
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_Evacuaciones_1_90) <- c("Variable","Mínimo",
"Máximo","x",
"Me","Mo",
"S","Cv (%)",
"As","K")
tabla_indicadores_gt <- Tabla_indicadores_Evacuaciones_1_90 %>%
gt() %>%
tab_header(
title = md("**Tabla N°2**"),
subtitle = md("**Indicadores estadísticos de la variable Evacuaciones
públicas en oleoductos de EE.UU. (2010–2017)**")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 1")
) %>%
cols_align(
align = "center",
columns = everything()
) %>%
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 Evacuaciones públicas en oleoductos de EE.UU. (2010–2017) | |||||||||
| Variable | Mínimo | Máximo | x | Me | Mo | S | Cv (%) | As | K |
|---|---|---|---|---|---|---|---|---|---|
| Evacuaciones públicas | 1 | 83 | 19 | 12 | [0,10) | 20.909 | 109.814 | 1.506 | 1.434 |
| Autor: Grupo 1 | |||||||||
outliers <- boxplot.stats(Evacuaciones_1_90)$out
num_outliers <- length(outliers)
minimooutliers <- min(outliers)
maximooutliers <- max(outliers)
Tabla_outliers_Evacuaciones <- data.frame(
Outliers = num_outliers,
Mínimo = minimooutliers,
Máximo = maximooutliers
)
library(gt)
Tabla_outliers_Evacuaciones %>%
gt() %>%
tab_header(
title = md("**Tabla N°3**"),
subtitle = md("**Valores atípicos de la variable Evacuaciones públicas
de accidentes ocurridos en EE.UU (2010-2017)**")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 1")
) %>%
cols_align(
align = "center",
columns = everything()
) %>%
tab_options(
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 = "grey",
table_body.border.bottom.color = "black"
)
| Tabla N°3 | ||
| Valores atípicos de la variable Evacuaciones públicas de accidentes ocurridos en EE.UU (2010-2017) | ||
| Outliers | Mínimo | Máximo |
|---|---|---|
| 5 | 60 | 83 |
| Autor: Grupo 1 | ||
La variable EvacuacionesPublicas fluctúa entre 1 a 83 evacuaciones y sus valores giran en torno a 12 evacuaciones, con una desviación estándar de 20.91, siendo un conjunto de valores muy hetereogeneo los cuales se concentran ligeramente fuerte en la parte baja de la variable , con la existencia de 5 valores atipicos desde 60 hasta 80 evacuaciones.
Por todo lo anterior, el comportamiento puede considerarse
medianamente beneficioso, ya que, aunque la mayoría de los accidentes
involucraron un número reducido de evacuaciones públicas, existen casos
puntuales que presentan una mayor severidad, reflejando efectos más
graves en algunos incidentes.