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                       : num  38.6 39.9 32.6 42.5 30.2 ...
##  $ LongitudAccidente                      : num  -93.4 -75.2 -103.1 -95.3 -91.2 ...
##  $ 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         : num  0.24 1700 2 0.36 1.31 ...
##  $ LiberacionIntencionalBarriles          : chr  "0" "0" "-" "0.05" ...
##  $ RecuperacionLiquidoBarriles            : num  0.07 1699 0.48 0 0 ...
##  $ PerdidaNetaBarriles                    : num  0.17 1 1.52 0.36 1.31 ...
##  $ 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

Costos <- datos$TodosCostos
Costos <- na.omit(Costos) 

# Cantidad de datos de la variable
n <- length(Costos)

Cantidad total de datos: 2760

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.

options(scipen = 999)
caja_costos <- boxplot(Costos,
                        horizontal = TRUE,
                        main = "Gráfica N°1: Distribución de todos los costos involucrados en 
                       accidentes en oleoductos EE.UU. (2010-2017)",
                        xlab = "Todos los Costos",
                        col = "pink3")

Debido a la presencia de valores atípicos extremadamente altos, se decidió enfocar el análisis en los valores más representativos de la gráfica, con el fin de observar con mayor precisión la distribución de los datos, donde se concentra la mayor parte de la información.

Identificación de valores comunes y atípicos

VC_costos<-subset(Costos,Costos <min(caja_costos$out))
VO_costos<-subset(Costos,Costos >=min(caja_costos$out))

2.Distribución de Frecuencias


2.1 Método teórico/manual: Regla de Sturges

2.1.1 Rango, número de clases y amplitud

R_Costos <- max(VC_costos) - min(VC_costos)
k_Costos <- floor(1 + (3.3 * log10(length(VC_costos))))
A_Costos <- R_Costos / k_Costos

2.1.2 Límites, intervalos y marca de clase

Una vez determinada la amplitud y el número de clases mediante la regla de Sturges, se procedió a establecer los límites inferior y superior de cada intervalo.

liminf <- seq(from = min(VC_costos), by = A_Costos, length.out = k_Costos)
limsup <- liminf + A_Costos
limsup[k_Costos] <- max(VC_costos)

MC <- (liminf + limsup) / 2

2.1.3 Frecuencias Simples

2.1.3.1 Frecuencia absoluta

Con los intervalos previamente definidos, se procedió al cálculo de las frecuencias simples de la variable. Para obtener la frecuencia absoluta (ni), se utilizó un bucle for, que recorre secuencialmente cada uno de los intervalos. En cada iteración, el código evalúa cuántos datos de la variable se encuentran dentro de los límites inferior y superior correspondientes a un rango específico.

ni <- numeric(k_Costos)
for (i in 1:k_Costos) {
  if (i == k_Costos) {
    ni[i] <- sum(VC_costos >= liminf[i] & VC_costos <= limsup[i])
  } else {
    ni[i] <- sum(VC_costos >= liminf[i] & VC_costos < limsup[i])
  }
}

2.1.3.1 Frecuencia relativa

hi <- round((ni / length(VC_costos)) * 100, 3)

2.1.4 Frecuencias Acumuladas

Niasc <- cumsum(ni)
Nidsc <- rev(cumsum(rev(ni)))
Hiasc <- cumsum(hi)
Hidsc <- rev(cumsum(rev(hi)))

2.1.5 Tabla de distribución de frecuencias

tabla_Costos <- data.frame(
  liminf = round(liminf, 3),
  limsup = round(limsup, 3),
  MC = round(MC, 3),
  ni = ni,
  hi_porc = round(hi, 3),      
  Ni_asc = Niasc,
  Ni_dsc = Nidsc,
  Hiasc_porc = round(Hiasc, 3),
  Hidsc_porc = round(Hidsc, 3)
)

total_ni <- sum(tabla_Costos$ni)
total_hi <- 100

TDFCostosCompleto <- rbind(tabla_Costos, data.frame(
  liminf = "TOTAL",
  limsup = " ",
  MC = " ",
  ni = total_ni,
  hi_porc = total_hi,
  Ni_asc = " ",
  Ni_dsc = " ",
  Hiasc_porc = " ",
  Hidsc_porc = " "
))

library(gt)
tabla_Costos_gt <- TDFCostosCompleto %>%
  gt() %>%
  cols_label(
    liminf = md("**liminf**"),
    limsup = md("**limsup**"),
    MC = md("**MC**"),
    ni = md("**ni**"),
    hi_porc = md("**hi (%)**"),
    Ni_asc = md("**Ni ↑**"),
    Ni_dsc = md("**Ni ↓**"),
    Hiasc_porc = md("**Hi ↑ (%)**"),
    Hidsc_porc = md("**Hi ↓ (%)**")
  ) %>%
  tab_header(
    title = md("**Tabla N° 1**"),
    subtitle = md("**Distribución de Todos los Costos involucrados en accidentes 
    de oleoductos 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 = liminf == "TOTAL"
    )
  )

tabla_Costos_gt
Tabla N° 1
Distribución de Todos los Costos involucrados en accidentes de oleoductos ocurridos en EE.UU (2010-2017)
liminf limsup MC ni hi (%) Ni ↑ Ni ↓ Hi ↑ (%) Hi ↓ (%)
0 23343.5 11671.75 1389 59.132 1389 2349 59.132 100
23343.5 46687 35015.25 374 15.922 1763 960 75.054 40.868
46687 70030.5 58358.75 170 7.237 1933 586 82.291 24.946
70030.5 93374 81702.25 72 3.065 2005 416 85.356 17.709
93374 116717.5 105045.75 69 2.937 2074 344 88.293 14.644
116717.5 140061 128389.25 58 2.469 2132 275 90.762 11.707
140061 163404.5 151732.75 64 2.725 2196 217 93.487 9.238
163404.5 186748 175076.25 39 1.660 2235 153 95.147 6.513
186748 210091.5 198419.75 38 1.618 2273 114 96.765 4.853
210091.5 233435 221763.25 25 1.064 2298 76 97.829 3.235
233435 256778.5 245106.75 27 1.149 2325 51 98.978 2.171
256778.5 280122 268450.25 24 1.022 2349 24 100 1.022
TOTAL 2349 100.000
Autor: Grupo 1

Como se puede observar, la tabla resulta difícil de interpretar debido a la gran magnitud de los valores. Por ello, para un análisis más claro de la variable, se emplearán los intervalos sugeridos por R, lo que facilita la visualización y comprensión de la distribución de los datos.

2.2 Método práctico: Software R

2.2.1 Generación del histograma

histoCostos <- hist(VC_costos, 
            main ="Gráfica N°1: Distribución de la cantidad de Todos los Costos
            involucrados en accidentes en oleoductos ocurridos en EE.UU.", 
            xlab = "Todos los Costos", 
            ylab = "Frecuencia",
            col = "pink", 
            border = "black")

2.2.2 Límites, intervalos y marca de clase

Después de crear el histograma en R, se pueden obtener los límites de los intervalos usando breaks. Estos límites indican dónde empieza y termina cada clase, permitiendo organizar los datos en grupos claros y contiguos sin que se solapen.

Limites <- histoCostos$breaks
Limites
##  [1]      0  20000  40000  60000  80000 100000 120000 140000 160000 180000
## [11] 200000 220000 240000 260000 280000 300000
LimInf <- Limites[-length(Limites)] 
LimSup <- Limites[-1]
MC <- (LimInf + LimSup)/2

2.2.3 Frecuencias Simples

ni_r <- histoCostos$counts
hi_r <- (ni_r/sum(ni_r)*100)

2.2.4 Frecuencias Acumuladas

Niasc <- cumsum(ni_r)                     
Nidsc <- rev(cumsum(rev(ni_r)))           
Hiasc <- round(cumsum(hi_r), 3)          
Hidsc <- round(rev(cumsum(rev(hi_r))), 3)

2.2.5 Tabla de distribución de frecuencias

options(scipen = 999)
TDFCostosR <- data.frame(LimInf, LimSup, MC, ni_r, hi_r = round(hi_r,3),
                           Niasc, Nidsc, Hiasc, Hidsc)
total_ni <- sum(ni_r)
total_hi <- 100  

TDFCostosRFinal <- rbind(TDFCostosR,
                        data.frame(LimInf="Total",
                                   LimSup=" ", 
                                   MC=" ",
                                   ni_r=total_ni, 
                                   hi_r=total_hi, 
                                   Niasc=" ", 
                                   Nidsc=" ", 
                                   Hiasc=" ", 
                                   Hidsc=" "))

tabla_CostosR_gt <- TDFCostosRFinal %>%
  gt() %>%
  cols_label(
    LimInf = md("**LimInf**"),
    LimSup = md("**LimSup**"),
    MC = md("**MC**"),
    ni_r = md("**ni**"),
    hi_r = md("**hi (%)**"),
    Niasc = md("**Ni ↑**"),
    Nidsc = md("**Ni ↓**"),
    Hiasc = md("**Hi ↑ (%)**"),
    Hidsc = md("**Hi ↓ (%)**")
  ) %>%
  tab_header(
    title = md("**Tabla N° 2**"),
    subtitle = md("**Distribución de Todos los Costos involucrados en
                  accidentes en oleductos 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 = LimInf == "Total"
    )
  )
tabla_CostosR_gt
Tabla N° 2
Distribución de Todos los Costos involucrados en accidentes en oleductos ocurridos en EE.UU (2010-2017)
LimInf LimSup MC ni hi (%) Ni ↑ Ni ↓ Hi ↑ (%) Hi ↓ (%)
0 20000 10000 1310 55.768 1310 2349 55.768 100
20000 40000 30000 339 14.432 1649 1039 70.2 44.232
40000 60000 50000 213 9.068 1862 700 79.268 29.8
60000 80000 70000 108 4.598 1970 487 83.865 20.732
80000 100000 90000 59 2.512 2029 379 86.377 16.135
100000 120000 110000 55 2.341 2084 320 88.719 13.623
120000 140000 130000 47 2.001 2131 265 90.719 11.281
140000 160000 150000 58 2.469 2189 218 93.189 9.281
160000 180000 170000 38 1.618 2227 160 94.806 6.811
180000 200000 190000 33 1.405 2260 122 96.211 5.194
200000 220000 210000 25 1.064 2285 89 97.275 3.789
220000 240000 230000 17 0.724 2302 64 97.999 2.725
240000 260000 250000 29 1.235 2331 47 99.234 2.001
260000 280000 270000 17 0.724 2348 18 99.957 0.766
280000 300000 290000 1 0.043 2349 1 100 0.043
Total 2349 100.000
Autor: Grupo 1

3.Gráficas de Distribución de Frecuencias


3.1 Histogramas

A continuación, las gráficas de histogramas 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.1 Histogramas frecuencias absolutas

- Histograma Frecuencia Absoluta (Escala Local)

barplot(TDFCostosR$ni_r,
     main="Gráfica N°2: Distribución de la cantidad de todos los 
     costos de accidentes en oleoductos ocurridos en EE.UU.", 
     ylab="Cantidad",
     las = 2, 
     space = 0,
     axis.lty = 1.5,
     cex.names = 0.8,
     names.arg = TDFCostosR$MC,
     col="pink1",
     ylim = c(0, 1400))

mtext("Todos los Costos ($)", side = 1, line = 3.5, cex = 1)

- Histograma Frecuencia Absoluta (Escala Global)

barplot(TDFCostosR$ni_r,
     main="Gráfica N°3: Distribución de la cantidad de todos los costos de 
     accidentes en oleoductos, respecto al total registrado en EE.UU.", 
     ylab="Cantidad", 
     col="pink2",
     las = 2,
     space = 0,
     axis.lty = 1.5,
     cex.names = 0.8,
     names.arg = TDFCostosR$MC,
     ylim = c(0,length(VC_costos)))

mtext("Todos los Costos ($)", side = 1, line = 3.5, cex = 1)

3.1.2 Histogramas frecuencias relativas

- Histograma Frecuencia Relativa (Escala Local)

barplot(hi_r,space = 0,
        main = "Gráfica N°4: Distribución porcentual de todos los costos de 
        accidentes en oleoductos",
        col="pink3",
        ylab = "Porcentaje (%)", 
        las = 2,
        axis.lty = 1.5,
        cex.names = 0.8,
        names.arg =TDFCostosR$MC,
        ylim = c(0, 60))

mtext("Todos los Costos ($)", side = 1, line = 3.5, cex = 1)

- Histograma Frecuencia Relativa (Escala Global)

barplot(hi_r,space = 0,
        main="Gráfica  N°5: Distribución porcentual de todos los costos de
        accidentes en oleoductos, respecto al total registrado en EE.UU.",
        col="pink4",
        ylab = "Porcentaje (%)", 
        names.arg =TDFCostosR$MC,
        las = 2,
        cex.names = 0.8,
        axis.lty = 1.5,
        ylim = c(0,100))

mtext("Todos los Costos ($)", side = 1, line = 3.5, cex = 1)

3.2 Ojivas

3.2.1 Ojivas combinadas con la frecuencia absoluta acumulada

# Ojiva descendente 
LimInf_ext <- c(TDFCostosR$LimInf, max(TDFCostosR$LimSup))
Nidsc_ext  <- c(TDFCostosR$Nidsc, 0)

plot(LimInf_ext, Nidsc_ext,
       main = "Gráfica N°6: Ojivas combinadas de la distribución de la cantidad 
       de todos los costos involucrados en accidentes de oleoductos en EE.UU.",
       ylab = "Cantidad",
       xlab = "",  
       las = 2,
       col = "steelblue2",
       type = "b",
       xaxt = "n",
       cex.axis = 0.8,
       ylim = c(0, max(TDFCostosR$Niasc)))

mtext("Todos los Costos ($)", side = 1, line = 3.5, cex = 1)

# Etiquetas de marcas de clase en el eje X
axis(1, at = c(TDFCostosR$LimInf, max(TDFCostosR$LimSup)), 
     labels = c(TDFCostosR$LimInf, max(TDFCostosR$LimSup)),las=2,
     cex.axis = 0.7)

# Ojiva ascendente 
LimSup_ext <- c(min(TDFCostosR$LimInf), TDFCostosR$LimSup)   
Niasc_ext  <- c(0, TDFCostosR$Niasc)                        

lines(LimSup_ext, Niasc_ext, type = "b", col ="maroon1", pch = 1)

# Leyenda
legend("right",
       legend = c("Ojiva descendente", "Ojiva ascendente"),
       col = c("steelblue2", "maroon1"), 
       pch = 1, lty = 1, cex = 0.7)

3.2.2 Ojivas combinadas con la frecuencia relativa acumulada

# Ojiva descendente (%)
LimInf_ext <- c(TDFCostosR$LimInf, max(TDFCostosR$LimSup))
Hidsc_ext  <- c(TDFCostosR$Hidsc, 0)

plot(LimInf_ext, Hidsc_ext,
       main = "Gráfica N°7: Ojivas combinadas de la distribución porcentual 
       de todos los costos involucrados en accidentes de oleoductos en EE.UU.",
       xlab = "",  
       ylab = "Porcentaje (%)",
       las = 2,
       col = "turquoise4",
       type = "b",
       xaxt = "n",
       cex.axis = 0.8,
       ylim = c(0, max(TDFCostosR$Hiasc)))

mtext("Todos los Costos ($)", side = 1, line = 3.5, cex = 1)

# Etiquetas de marcas de clase en el eje X
axis(1, at = c(TDFCostosR$LimInf, max(TDFCostosR$LimSup)), 
     labels = c(TDFCostosR$LimInf, max(TDFCostosR$LimSup)), las = 2,
     cex.axis = 0.7)

# Ojiva ascendente (%)
LimSup_ext <- c(min(TDFCostosR$LimInf), TDFCostosR$LimSup)   
Hiasc_ext  <- c(0, TDFCostosR$Hiasc)    

lines(LimSup_ext, Hiasc_ext, col = "violetred1", type = "b")

# Leyenda
legend("right",
       legend = c("Ojiva descendente", "Ojiva ascendente"),
       col = c("turquoise4", "violetred1"), 
       pch = 1, lty = 1,cex = 0.7)

3.3 Diagrama de Caja y bigotes

boxplot(VC_costos, horizontal = TRUE, col = "pink",
        main = "Gráfica N°8: Distribución de todos los costos de 
        accidentes en oleoductos ocurridos en EE.UU.",
        xlab = "Todos los Costos")

4.Indicadores estadísticos


4.1 Indicadores de posición

- Tendencia Central

# Media
media <- mean(VC_costos)

# Mediana 
mediana <- median(VC_costos)

# Moda
Mo <- "[0,20000)"

- No Centrales

# Cuartiles
ri <- min(VC_costos)
rs <- max(VC_costos)
summary(VC_costos)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##       0    3904   15220   40727   46528  280122

4.2 Indicadores de dispersión

# Desviación estándar
desviacion_estandar <- sd(VC_costos)

# Coeficiente de variabilidad
coeficiente_variabilidad <- (desviacion_estandar / media) * 100

4.3 Indicadores de forma

library(e1071) 

# Coeficiente de asimetría
As <- skewness(VC_costos)

# Coeficiente de curtosis
curtosis <- kurtosis(VC_costos)

4.4 Tabla de indicadores

library(gt)

Variable <- c("Todos los Costos")
Tabla_indicadores_Costos <- data.frame(
  Variable,
  ri = round(ri, 3),
  rs = round(rs, 3),
  media = round(media, 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_Costos) <- c("Variable","Mínimo",
                                        "Máximo","x",
                                        "Me","Mo",
                                        "S","Cv (%)",
                                        "As","K")

tabla_indicadores_gt <- Tabla_indicadores_Costos %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N°3**"),
    subtitle = md("**Indicadores estadísticos de la variable Todos los Costos
                   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.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°3
Indicadores estadísticos de la variable Todos los Costos de accidentes ocurridos en EE.UU (2010-2017)
Variable Mínimo Máximo x Me Mo S Cv (%) As K
Todos los Costos 0 280122 40727.32 15220 [0,20000) 58936.11 144.709 2.065 3.72
Autor: Grupo 1

5.Valores atípicos


5.1 Identificación de valores atípicos

outliers <- boxplot.stats(VC_costos)$out 

num_outliers <- length(outliers) 

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

5.2 Tabla de Valores atípicos

Tabla_outliers_Costos <- data.frame(
  Outliers = num_outliers,
  Mínimo = minimooutliers,
  Máximo = maximooutliers
)

library(gt)
Tabla_outliers_Costos %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N°4**"),
    subtitle = md("**Valores atípicos de la variable Todos los Costos 
                  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°4
Valores atípicos de la variable Todos los Costos de accidentes ocurridos en EE.UU (2010-2017)
Outliers Mínimo Máximo
288 110600 280122
Autor: Grupo 1

6.Conclusión

La variable TodosCostos en dólares fluctúa entre 0 a 280.122 dólares, y sus valores giran en torno a 15.220 dólares, con una desviación estándar de 58936, siendo un conjunto de valores muy heterogéneo, donde los valores se acumulan fuertemente en la parte baja de la variable, con la existencia de 288 valores atípicos desde 110.600 hasta 280.122 dólares.

Por todo lo anterior, el comportamiento no resulta beneficioso, ya que evidencia la naturaleza inherente del riesgo en los accidentes de oleoductos, con exposición a pérdidas financieras significativas por eventos extremos.No obstante, la fuerte concentración de los costos en valores bajos indica que una proporción importante de los incidentes no genera impactos económicos elevados.