1.Carga de datos


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 ...

1.1 Extracción de datos

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

1.2 Diagrama de Caja

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 (boxplot) 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_costos<-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 entre 0 y 100 evacuaciones, por lo que se selecciona este intervalo para el análisis estadístico:

Evacuaciones_0_100 <- subset(EvacuacionesPublicas, EvacuacionesPublicas >= 0 & EvacuacionesPublicas <= 100)

2.Distribución de Frecuencias


2.1 Limites e Intervalos

limites <- seq(0, 100, by = 10) 
clasificacion <- cut(Evacuaciones_0_100,
                     breaks = limites,
                     include.lowest = TRUE,
                     right = FALSE)

2.2 Frecuencias Simples

TablaEvacuacion <- as.data.frame(table(clasificacion))
colnames(TablaEvacuacion) <- c("Intervalo", "ni")

TablaEvacuacion$hi <- round((TablaEvacuacion$ni / sum(TablaEvacuacion$ni)) * 100, 2)

2.3 Frecuencias Acumuladas

# 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)))

2.4 Tabla de distribución de frecuencias

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 ↓ (%)
[0,10) 2273 98.83 2273 2300 98.83 100.01
[10,20) 11 0.48 2284 27 99.31 1.18
[20,30) 4 0.17 2288 16 99.48 0.7
[30,40) 5 0.22 2293 12 99.7 0.53
[40,50) 2 0.09 2295 7 99.79 0.31
[50,60) 0 0.00 2295 5 99.79 0.22
[60,70) 2 0.09 2297 5 99.88 0.22
[70,80) 2 0.09 2299 3 99.97 0.13
[80,90) 1 0.04 2300 1 100.01 0.04
[90,100] 0 0.00 2300 0 100.01 0
TOTAL 2300 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(7, 6, 4, 2))  
barplot(
  TablaEvacuacion$ni,
  main = "Gráfica N°2: Distribución de evacuaciones públicas
  por accidentes en oleoductos de EE.UU.",
  ylab = "Cantidad",
  names.arg = TablaEvacuacion$Intervalo,   
  col = "tan1",
  las = 2,                
  cex.main = 1.1,
  cex.lab  = 1.1,
  cex.axis = 0.9,
  cex.names = 0.8
)
mtext("Evacuaciones públicas", side = 1, line = 4, cex = 1)

- Diagrama de frecuencia absoluta (Escala global):

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 = 2,
  cex.main = 1.1,
  cex.lab  = 1.1,
  cex.axis = 0.9,
  cex.names = 0.8,
  ylim = c(0, 2303)   
)
mtext("Evacuaciones públicas", side = 1, line = 4, cex = 1)

3.1.2 Diagramas de frecuencias relativas

- Diagrama de frecuencia relativas (Escala local):

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 = 2,
  cex.main = 1.1,
  cex.lab  = 1.1,
  cex.axis = 1.0,
  cex.names = 0.8
)
mtext("Evacuaciones públicas", side = 1, line = 4, cex = 1)

- Diagrama de frecuencia relativas (Escala global):

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 = 2,
  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)

3.2 Ojivas

3.2.1 Ojivas combinadas con la frecuencia absoluta

par(mgp = c(4, 1, 0))
par(mar = c(7, 6, 4, 2))
x <- 1:nrow(TablaEvacuacion)

# Ojiva ascendente
plot(x, TablaEvacuacion$Niasc,
     main = "Gráfica N°6: Ojivas combinadas de evacuaciones públicas 
     por accidentes en oleoductos de EE.UU.",
     xlab = "Evacuaciones públicas",
     ylab = "Cantidad",
     col = "tan1",
     type = "b",
     xaxt = "n",    
     las = 1,
     cex.main = 1.2,
     cex.lab = 1.2,
     cex.axis = 0.8)

# Etiquetas personalizadas en eje X
axis(side = 1, at = x, labels = TablaEvacuacion$Intervalo, las = 2,cex.axis = 0.8)

# Ojiva descendente
lines(x, TablaEvacuacion$Nidsc, col = "tan4", type = "b")

# Leyenda
legend("right",
       legend = c("Ojiva ascendente", "Ojiva descendente"),
       col = c("tan1", "tan4"),
       pch = 1, lty = 1,
       cex = 0.8)

3.2.2 Ojivas combinadas con la frecuencia relativa

par(mgp = c(4, 1, 0))
par(mar = c(7, 6, 4, 2))

# Ojiva ascendente (%)
plot(x, y= TablaEvacuacion$Hiasc,      
     type = "b",                    
     col = "tan1",
     xlab = "Evacuaciones públicas",
     ylab = "Porcentaje(%)",
     main = "Gráfica N°7: Ojivas combinadas 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 Descendente (%)
lines(x, TablaEvacuacion$Hidsc, 
      type = "b",
      col = "tan4")

# Etiquetas personalizadas en eje X
axis(side = 1, at = x, labels = TablaEvacuacion$Intervalo,, las = 2,cex.axis = 0.8)

# Leyenda
legend("topright",
       legend = c("Ojiva ascendente", "Ojiva descendente"),
       col = c("tan1", "tan4"),
       pch = 1, lty = 1,
       cex = 0.8)

3.3 Diagrama de Caja y bigotes

boxplot(Evacuaciones_0_100 , 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")

4.Indicadores estadísticos

4.1 Indicadores de posición

- Tendencia Central

mediana <- median(Evacuaciones_0_100)
media_aritmetica <- mean(Evacuaciones_0_100)
Mo <- "[0,10)"

- No Centrales

# Cuartiles
ri <- min(Evacuaciones_0_100)
rs <- max(Evacuaciones_0_100)
summary(Evacuaciones_0_100)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.0000  0.0000  0.0000  0.4057  0.0000 83.0000

4.2 Indicadores de dispersión

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

4.3 Indicadores de forma

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

4.4 Tabla de indicadores

library(gt)

Variable <- c("Evacuaciones públicas")
Tabla_indicadores_Evacuaciones_0_100 <- 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_Evacuaciones_0_100) <- c("Variable","Mínimo",
                                        "Máximo","x",
                                        "Me","Mo",
                                        "S","Cv (%)",
                                        "As","K")

tabla_indicadores_gt <- Tabla_indicadores_Evacuaciones_0_100 %>%
  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")
  ) %>%
  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 0 83 0.406 0 [0,10) 4.085 1007.133 13.802 217.736
Autor: Grupo 1

5.Valores atípicos


5.1 Identificación de valores atípicos

outliers <- boxplot.stats(Evacuaciones_0_100)$out 

num_outliers <- length(outliers) 

minimooutliers <- min(outliers) 
maximooutliers <- max(outliers) 

5.2 Tabla de Valores atípicos

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")
  ) %>%
  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
49 1 83
Autor: Grupo 1

6.Conclusión


La variable Evacuacionespublicas, registrada en accidentes de oleoductos en EE.UU. durante el periodo 2010–2017 y analizada en el rango de 0 a 100, presenta valores que fluctúan entre 0 y 83. La media (0.406) y la mediana (0) evidencian que la mayoría de los eventos no requirieron evacuaciones o involucraron un número mínimo de personas.

La desviación estándar (4.085) y el coeficiente de variación (1007.133%) indican una alta dispersión relativa, debida a la presencia de muchos valores cercanos a cero y algunos casos más altos. La distribución muestra una asimetría positiva (As = 13.802) y una curtosis elevada (K = 217.736), reflejando una marcada concentración de datos en los valores bajos y la existencia de algunos eventos extremos.

Se identificaron 49 valores atípicos, con un rango que va desde 1 hasta 83 evacuaciones, lo que confirma la presencia de incidentes excepcionales de mayor magnitud, aunque la mayoría de los accidentes se mantiene cerca de valores bajos.

En síntesis, este comportamiento puede considerarse beneficioso desde el punto de vista social y de gestión del riesgo, ya que indica que la mayoría de los accidentes en oleoductos durante el periodo analizado no generaron afectaciones severas a la población. Sin embargo, la presencia de algunos casos extremos sugiere la necesidad de mantener protocolos preventivos y planes de emergencia para minimizar los impactos en los eventos de mayor magnitud.