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          : num  0 0 NA 0.05 0 NA 0 0 NA 25 ...
##  $ 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)

2.Distribución de Frecuencias

2.1 Limites e Intervalos

limites <- seq(0, 700, by = 50) 
clasificacion <- cut(EvacuacionesPublicas,
                     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,50) 2295 99.65 2295 2303 99.65 99.99
[50,100) 5 0.22 2300 8 99.87 0.34
[100,150) 0 0.00 2300 3 99.87 0.12
[150,200) 1 0.04 2301 3 99.91 0.12
[200,250) 0 0.00 2301 2 99.91 0.08
[250,300) 0 0.00 2301 2 99.91 0.08
[300,350) 0 0.00 2301 2 99.91 0.08
[350,400) 0 0.00 2301 2 99.91 0.08
[400,450) 0 0.00 2301 2 99.91 0.08
[450,500) 1 0.04 2302 2 99.95 0.08
[500,550) 0 0.00 2302 1 99.95 0.04
[550,600) 0 0.00 2302 1 99.95 0.04
[600,650) 0 0.00 2302 1 99.95 0.04
[650,700] 1 0.04 2303 1 99.99 0.04
TOTAL 2303 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):

etiquetas <- gsub(",", "-",
              gsub("\\[|\\)", "", as.character(TablaEvacuacion$Intervalo)))

par(mar = c(7, 6, 4, 2))  
barplot(
  TablaEvacuacion$ni,
  main = "Gráfica No.1: Distribución de evacuaciones públicas
  por accidentes en oleoductos de EE.UU.",
  ylab = "Cantidad",
  names.arg = etiquetas,   
  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)

3.1.1.2. Diagrama de frecuencia absoluta (Escala global):

par(mar = c(7, 6, 4, 2))
barplot(
  TablaEvacuacion$ni,
  main = "Gráfica No.2: Distribución de evacuaciones públicas  
  por accidentes en oleoductos de EE.UU., en relación al total",
  ylab = "Cantidad",
  names.arg = etiquetas,
  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

3.1.2.1 Diagrama de frecuencia relativas (Escala local):

par(mar = c(7, 6, 4, 2))
barplot(
  TablaEvacuacion$hi,
  main = "Gráfica No.3: Distribución porcentual de evacuaciones públicas
  por accidentes en oleoductos de EE.UU",
  ylab = "Porcentaje (%)",
  names.arg = etiquetas,
  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)

3.1.2.2 Diagrama de frecuencia relativas (Escala global):

par(mar = c(7, 6, 4, 2))
barplot(
  TablaEvacuacion$hi,
  main = "Gráfica No.4: Distribución porcentual de evacuaciones públicas
  por accidentes en oleoductos, en relación al total en EE.UU.",
  ylab = "Porcentaje (%)",
  names.arg = etiquetas,
  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.3 Ojivas

3.3.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º5: 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 = etiquetas, 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.3.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 = "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 = etiquetas, 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(EvacuacionesPublicas , horizontal = TRUE, col = "tan1",
        main = "Gráfica No.7: Distribución de todas las Evacuaciones 
        públicas de accidentes de oleoductos ocurridos en EE.UU.",
        xlab = "Evacuaciones públicas",
        xaxt = "n")
axis(1, at = pretty(EvacuacionesPublicas), labels = format(pretty(EvacuacionesPublicas), scientific = FALSE))

4.Indicadores estadísticos

4.1 Indicadores de posición

4.1.1 Tendencia Central

mediana <- median(EvacuacionesPublicas)
media_aritmetica <- mean(EvacuacionesPublicas)
Mo <- "[0,50)"

4.1.2 No Centrales

# Cuartiles
ri <- min(EvacuacionesPublicas)
rs <- max(EvacuacionesPublicas)
summary(EvacuacionesPublicas)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
##   0.0000   0.0000   0.0000   0.9783   0.0000 700.0000

4.2 Indicadores de dispersión

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

4.3 Indicadores de forma

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

4.4 Tabla de indicadores

library(gt)

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

tabla_indicadores_gt <- Tabla_indicadores_EvacuacionesPublicas %>%
  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 700 0.978 0 [0,50) 18.288 1869.435 31.954 1114.015
Autor: Grupo 1

5.Valores atípicos

5.1 Identificación de valores atípicos

outliers <- boxplot.stats(EvacuacionesPublicas)$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°4**"),
    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°4
Valores atípicos de la variable Evacuaciones públicas de accidentes ocurridos en EE.UU (2010-2017)
Outliers Mínimo Máximo
52 1 700
Autor: Grupo 1

6.Conclusión

La variable Evacuaciones públicas correspondiente a los accidentes de oleoductos en EE.UU. durante el periodo 2010–2017 presenta valores que oscilan entre 0 y 700, con una media de 0.978 y una mediana de 0, lo que evidencia una distribución fuertemente sesgada hacia valores bajos. La moda se encuentra en el intervalo [0,50), reflejando que la mayoría de los accidentes no requirió evacuaciones significativas. La desviación estándar es elevada (18.288) y el coeficiente de variación muy alto (1869.435%), lo que indica una dispersión extrema y gran heterogeneidad en la cantidad de evacuaciones reportadas. La asimetría positiva (31.954) evidencia una fuerte concentración de datos hacia valores bajos y una larga cola hacia valores altos, mientras que la curtosis extremadamente elevada (1114.015) sugiere una distribución muy leptocúrtica, con presencia de picos y colas extremas. Además, se identificaron 52 valores atípicos, con un rango que va desde 1 hasta 700 evacuaciones, lo que confirma la existencia de eventos excepcionales de gran magnitud. En síntesis, la variable Evacuaciones públicas muestra una distribución muy asimétrica y heterogénea, donde la mayoría de los accidentes generan pocas evacuaciones, pero existen casos excepcionales con impactos significativamente mayores.