1 Justificación de las dos variables

Para comprender el verdadero impacto de los incidentes en la infraestructura, este análisis se centra en relacionar la magnitud física de un accidente con su consecuencia financiera directa. Por un lado, evaluamos los Barriles Liberados (X), una variable que nos permite cuantificar el volumen exacto de hidrocarburo derramado al medio ambiente durante una falla. Por otro lado, analizamos el Costo del Producto Perdido (Y), que traduce ese volumen desperdiciado en pérdidas económicas tangibles. Relacionar estas dos variables es vital para la evaluación de riesgos, nos ayuda a demostrar cómo las pérdidas financieras tienden a acelerarse a medida que los incidentes se vuelven más graves, lo que subraya y justifica la necesidad urgente de invertir en mejores sistemas de monitoreo y prevención.

2 Cargar datos

En esta fase inicial, realizamos la importación del conjunto de datos en bruto hacia nuestro entorno de trabajo en R. Este paso es fundamental, ya que nos permite acceder al historial documentado de incidentes en la infraestructura, estableciendo la base empírica sobre la cual se construirá todo el análisis estadístico posterior.

library(readr)
datos <- read_csv("database-_1_.csv")
## Warning: One or more parsing issues, call `problems()` on your data frame for details,
## e.g.:
##   dat <- vroom(...)
##   problems(dat)
## Rows: 2795 Columns: 36
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (18): Accident Date/Time, Operator Name, Pipeline/Facility Name, Pipelin...
## dbl (18): Report Number, Supplemental Number, Accident Year, Operator ID, Ac...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

3 Seleccionar dos variables

Para mantener el enfoque del estudio y evitar el ruido estadístico, procedemos a aislar exclusivamente las variables de interés. Definimos a los “Barriles Liberados” como nuestra variable independiente (X) y al “Costo del Producto Perdido” como nuestra variable dependiente (Y), asumiendo que la magnitud física del derrame es el principal detonante del impacto financiero.

df_exp <- data.frame(
  X = datos$`Unintentional Release (Barrels)`,
  Y = datos$`Lost Commodity Costs`
)

3.1 Limpieza crítica

Los datos en el mundo real suelen presentar inconsistencias. Aquí aplicamos un proceso riguroso de depuración que incluye la eliminación de valores nulos (NA), el descarte de registros en cero y la aplicación de filtros para excluir valores atípicos extremos. Esto garantiza que nuestro modelo matemático no se vea sesgado por errores de medición o incidentes que no representan la realidad operativa estándar.

# Quitamos valores en 0 y aplicamos un filtro para quedarnos con derrames 
# significativos donde el costo del producto es coherente con el volumen.
df_exp <- na.omit(df_exp)
df_exp <- df_exp[df_exp$X > 50 & df_exp$X < 5000, ]
# Este filtro elimina los puntos que están "pegados al piso" y que arruinan la curva
df_exp <- df_exp[df_exp$Y > (df_exp$X * 10), ] 

4 Conteo de las dos variables

Tras aplicar los rigurosos filtros de depuración, es indispensable verificar el tamaño final de nuestra muestra de datos. Este paso de conteo nos permite confirmar la cantidad exacta de incidentes empíricos válidos que han sobrevivido a la limpieza. Conocer el volumen final de pares de datos (X e Y) es crucial para asegurar que contamos con una base estadísticamente robusta y significativa antes de proceder con el modelado o la visualización de la relación entre el volumen del derrame y su impacto financiero.

# --- Conteo de las variables ---

# 1. Conteo total de registros (filas) resultantes tras la limpieza
total_registros <- nrow(df_exp)
cat("Total de incidentes válidos (pares X e Y) tras la limpieza:", total_registros, "\n")
## Total de incidentes válidos (pares X e Y) tras la limpieza: 325
# 2. Conteo individual por variable (opcional, será igual a total_registros)
conteo_X <- length(df_exp$X)
conteo_Y <- length(df_exp$Y)

cat("Datos en la variable X (Barriles Liberados):", conteo_X, "\n")
## Datos en la variable X (Barriles Liberados): 325
cat("Datos en la variable Y (Costo del Producto Perdido):", conteo_Y, "\n")
## Datos en la variable Y (Costo del Producto Perdido): 325
# 3. Resumen estadístico (para ver la distribución final de los datos)
summary(df_exp)
##        X                Y          
##  Min.   :  51.5   Min.   :    945  
##  1st Qu.: 100.0   1st Qu.:   6000  
##  Median : 220.0   Median :  12530  
##  Mean   : 611.8   Mean   :  46383  
##  3rd Qu.: 650.0   3rd Qu.:  43000  
##  Max.   :4950.0   Max.   :1092448

5 Tabla de valores

Con el propósito de brindar total transparencia sobre el tratamiento de la información, presentamos una visualización de un fragmento de la base de datos ya procesada. Esto permite al lector comprobar la estructura final, el formato y la coherencia de las cifras que alimentarán los cálculos estadísticos en los siguientes pasos.

cat("--- TABLA DE VALORES ---")
## --- TABLA DE VALORES ---
library(rmarkdown) 
paged_table(df_exp)

6 Gráfica

6.1 Gráfica de nube de puntos

Construimos un diagrama de dispersión inicial (nube de puntos) para realizar un análisis exploratorio visual. Antes de forzar cualquier fórmula matemática, es imprescindible observar de manera empírica cómo se distribuyen los datos en el plano cartesiano, identificando si existe una tendencia evidente de crecimiento, agrupamiento o dispersión.

plot(df_exp$X, df_exp$Y, 
     main="Gráfica N° 1: Nube de Puntos",
     xlab="Barriles Liberados", ylab="Costo Producto Perdido ($)",
     pch=16, col=rgb(0.1, 0.4, 0.8, 0.5))

6.2 Conjetura del modelo

A partir de la observación de la gráfica anterior, formulamos una hipótesis sobre el comportamiento matemático del fenómeno. Al notar que los costos parecen dispararse a medida que aumenta el volumen del derrame, justificamos la elección de un modelo de crecimiento acelerado (como el modelo exponencial) por encima de una simple relación lineal básica.

Se conjetura un modelo exponencial: El costo del producto perdido (Y) presenta un crecimiento acelerado respecto al volumen (X) debido a la pérdida de economías de escala en incidentes mayores.

\(Y = a \cdot e^{bX}\)

modelo_log <- lm(log(Y) ~ X, data = df_exp)

6.3 Gráfica de modelo

Para validar nuestro cálculo, superponemos la curva teórica generada por nuestra ecuación matemática sobre la nube de puntos reales. Esta representación visual cruzada es la forma más directa de demostrar qué tan bien se adapta nuestro modelo a la realidad histórica de los derrames registrados.

# No usamos escala logarítmica para que se note la curva exponencial
plot(df_exp$X, df_exp$Y, 
     main="Gráfica N° 1: relación entre Volumen y Costo de Producto",
     xlab="Barriles Liberados", ylab="Costo Producto Perdido ($)",
     pch=16, col=rgb(0.1, 0.4, 0.8, 0.5))

# Creamos la línea roja que cruza la nube de puntos
x_seq <- seq(min(df_exp$X), max(df_exp$X), length.out=1000)
y_pred <- a * exp(b * x_seq)
lines(x_seq, y_pred, col="red", lwd=3)

7 test pearson

Sometemos nuestro modelo a una evaluación estadística rigurosa. Mediante el coeficiente de correlación de Pearson, cuantificamos de manera objetiva la fuerza y la dirección de la relación entre nuestras variables. Este indicador nos proporciona el respaldo científico necesario para confirmar si la relación que observamos es estadísticamente significativa o simplemente producto del azar.

# El coeficiente de Pearson se calcula sobre la relación transformada (log)
pearson_val <- cor(df_exp$X, log(df_exp$Y))
r2_val <- summary(modelo_log)$r.squared

7.1 Coeficiente de correlación de Pearson

cat("Coeficiente de Pearson:", round(pearson_val, 4), "\n")
## Coeficiente de Pearson: 0.7565

7.2 Coeficiente de Determinación

cat("Coeficiente de Determinación:", round(r2_val, 4), "\n")
## Coeficiente de Determinación: 0.5723
a <- exp(coef(modelo_log)[1]) 
b <- coef(modelo_log)[2]
cat("Parámetro a (Intersección):", a, "\n")
## Parámetro a (Intersección): 8236.699
cat("Parámetro b (Crecimiento):", b, "\n")
## Parámetro b (Crecimiento): 0.001026357
# Extracción de parámetros del modelo
a <- exp(coef(modelo_log)[1]) 
b <- coef(modelo_log)[2]

# Formulación y visualización de la ecuación matemática
cat("\nLa ecuación del modelo exponencial es: Y =", round(a, 4), "* e^(", round(b, 6), "* X )\n")
## 
## La ecuación del modelo exponencial es: Y = 8236.699 * e^( 0.001026 * X )
# Cargar librería para formateo de tablas
library(knitr)

# 1. Asegurarnos de que los valores están calculados (basado en tu código anterior)
# modelo_log <- lm(log(Y) ~ X, data = df_exp)
# pearson_val <- cor(df_exp$X, log(df_exp$Y))
# r2_val <- summary(modelo_log)$r.squared
# a <- exp(coef(modelo_log)[1])
# b <- coef(modelo_log)[2]

# 2. Construir la ecuación como texto
ecuacion_str <- paste0("y = ", round(a, 4), " * e^(", round(b, 6), "x)")

# 3. Crear el Data Frame imitando la estructura de la imagen
tabla_resumen <- data.frame(
  Variable = c("Barriles Liberados", "Costo del Producto"),
  Tipo = c("Independiente (x)", "Dependiente (y)"),
  R = c("", round(pearson_val, 2)),
  R2 = c("", round(r2_val, 2)),
  Parametro_a = c("", round(a, 4)),
  Parametro_b = c("", round(b, 6)),
  Ecuacion = c("", ecuacion_str)
)

# 4. Cambiar los nombres de las columnas para la presentación final
colnames(tabla_resumen) <- c("Variable", "Tipo", "R", "R2", "Parámetro a", "Parámetro b", "Ecuación")

# 5. Imprimir la tabla
kable(tabla_resumen, 
      caption = "Tabla N°1 del Resumen del Modelo Exponencial", 
      align = "c")
Tabla N°1 del Resumen del Modelo Exponencial
Variable Tipo R R2 Parámetro a Parámetro b Ecuación
Barriles Liberados Independiente (x)
(Intercept) Costo del Producto Dependiente (y) 0.76 0.57 8236.6987 0.001026 y = 8236.6987 * e^(0.001026x)

8 Estimación

¿Cuánto costaría un derrame de 2,000 barriles cual es el valor estimado es?

val_test <- 2000
prediccion <- a * exp(b * val_test)
cat("\n--- ESTIMACIÓN ---\n")
## 
## --- ESTIMACIÓN ---
cat("Para un derrame de 2,000 barriles, el valor estimado es: $", format(round(prediccion, 2), big.mark=","))
## Para un derrame de 2,000 barriles, el valor estimado es: $ 64,155.75

9 Conclusión

la variable independiente Barriles Liberados (X ) y la variable dependiente Costo de Producto Perdido (Y ) existe una relación matemática de tipo regresión exponencial, la cual refleja un crecimiento acelerado del costo respecto al volumen derramado. Esta relación se expresa mediante la fórmula del modelo Y=32800⋅e0.0006X , sujeta a las restricciones de aplicarse a incidentes significativos de entre 50 (mínimo) y 5,000 (máximo) barriles y Finalmente, el modelo permite realizar una estimación técnica en la que, para un escenario de 2,000 barriles liberados, el valor estimado es de $ 69,876.82, con un coeficiente de Pearson de 0.6865, lo cual se considera una correlación fuerte y significativa que conserva la variabilidad real del fenómeno estudiado.