Modelo de Regresión Multiple


1.Carga de datos


setwd("/cloud/project/")
datos<-read.csv("DerramesEEUU.csv", header = TRUE, sep=";" , dec=",",na.strings ="-")

1.1 Carga de librerias necesarias

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(scatterplot3d)

2.Selección de Variables de Interés


LINB <- as.numeric(datos$LiberacionInvoluntariaBarriles)
PNB <- as.numeric(datos$PerdidaNetaBarriles)
CRE <- as.numeric(datos$CostosRespuestaEmergencia)

datos_interes <- data.frame(LINB,PNB,CRE)
datos_interes <- na.omit(datos_interes)

2.1 Depuración de Datos

Filtración por Percentiles

calcular_limites <- function(x) {
  lim_inf <- quantile(x, 0.01, na.rm = TRUE)
  lim_sup <- quantile(x, 0.99, na.rm = TRUE)
  return(list(inf = lim_inf, sup = lim_sup))
}

lim_LINB <- calcular_limites(datos_interes$LINB)
lim_PNB  <- calcular_limites(datos_interes$PNB)
lim_CRE  <- calcular_limites(datos_interes$CRE)

datos_filtrados <- datos_interes %>%
  filter(
    LINB >= lim_LINB$inf, LINB <= lim_LINB$sup,
    PNB  >= lim_PNB$inf,  PNB  <= lim_PNB$sup,
    CRE  >= lim_CRE$inf,  CRE  <= lim_CRE$sup
  )

2.2 Definición de Variables para el Modelo de Regresión

2.2.1 Selección de Variable Predictora y Variable Respuesta

# Variable dependiente
y <- datos_filtrados$LINB

# Variables independientes
x1 <- datos_filtrados$PNB
x2 <- datos_filtrados$CRE

3.Conjetura del modelo de regresión


modelo_mul <- lm(y ~ x1 + x2, data = datos_filtrados)

3.1 Resumen del modelo

summary(modelo_mul)
## 
## Call:
## lm(formula = y ~ x1 + x2, data = datos_filtrados)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -614.3  -25.6  -24.0  -21.4 3476.0 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 2.395e+01  3.508e+00   6.827 1.06e-11 ***
## x1          1.132e+00  1.543e-02  73.375  < 2e-16 ***
## x2          2.727e-04  1.671e-05  16.321  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 175.8 on 2695 degrees of freedom
## Multiple R-squared:  0.6958, Adjusted R-squared:  0.6956 
## F-statistic:  3083 on 2 and 2695 DF,  p-value: < 2.2e-16

3.2 Gráfica del modelo

graf <- scatterplot3d(
  x1, x2, y,
  main = "Regresión Múltiple: LINB ~ PNB + CRE (Filtro 1%-99%)",
  xlab = "Perdida Neta",
  ylab = "Costos Respuesta Emergencia",
  zlab = "Liberacion Involuntaria",
  angle = 120,
  color = "blue",
  pch = 19
)

graf$plane3d(modelo_mul, col = "red", lwd = 2)

3.3 Análisis de Correlación

3.3.1 Test de Pearson

El coeficiente de correlación de Pearson indica el grado de asociación lineal entre ambas variables. Un valor cercano a \(± 1\) representa una relación fuerte, mientras que valores cercanos a \(0\) indican una relación débil.

r <- sqrt(summary(modelo_mul)$r.squared)

La correlación múltiple del modelo es: 83.42 %

3.3.2 Coeficiente de determinación

El coeficiente de determinación es aquel que expresa la proporción de la variación total de la variable dependiente que es explicada por la variable independiente. Se interpreta como el grado de ajuste del modelo a los datos observados.

  • Coeficiente normal
r2 <- summary(modelo_mul)$r.squared
r2
## [1] 0.6958314
  • Coeficiente ajustado
r2_ajustado <- summary(modelo_mul)$adj.r.squared
r2_ajustado
## [1] 0.6956057
El porcentaje de la variación de la variable liberacion involuntaria explicado por la perdida neta y los costos de emergencia es de : 69.58 %

3.4 Ecuación del modelo

Para obtener la ecuación de la regresión mutiple, utilizamos los coeficientes estimados del modelo, los cuales permiten expresar la relación entre las variables mediante la siguiente forma general:

\[y = c+ a*x_{1} + b*x_{2}\]

Donde:

  • \(\boldsymbol{c}\) es el intercepto
  • \(\boldsymbol{b}\) y \(\boldsymbol{c}\) son los coeficientes de la regresión
a <- modelo_mul$coefficients[2]

El coeficiente de x_1 1.132

b <- modelo_mul$coefficients[3] 

El coeficiente de x_2: 3e-04

c <- modelo_mul$coefficients[1] 

El intercepto es: 23.95

Por lo siguiente la ecuación de la recta obtenida es : y = 23.95 + 1.132 x1 + 3e-04 x2

3.5 Restricciones

La ecuación del modelo multiple es :

\[y = 23.95 + 1.132 *x_{1} + 3e-04 *x_{2}\] Donde:

  • \(y\) representa la Liberación Involuntaria (barriles).
  • \(x_{1}\) representa la Pérdida neta (barriles).
  • \(x_{2}\) representa los Costos de respuesta de Emergencia.

Todas las variables del modelo (Y: liberación involuntaria; X1: pérdida neta; X2: costos de emergencia) son cantidades no negativas, por lo que su dominio natural es [0, ∞). Dentro del rango de observación de los datos, no se generan predicciones fuera del dominio de la variable dependiente, y no se imponen restricciones adicionales al modelo.

3.6 Tabla de resumen del modelo

VariableIn <- c("Pérdida neta")
VariableIn2 <- c("Costos de respuesta de Emergencia")
VariableDep <- c("Liberación Involuntaria")
Ecuacion <- c(" y =  23.95  +  1.132 *x1 +  0.0003 *x2")

Tabla_resumen <- data.frame(
  VariableIn,VariableIn2,VariableDep,
  Correlación_Pearson = round(r, 2),
  Co_determinacion = round(r2*100, 2),
  Ecuacion
)

colnames(Tabla_resumen) <- c("Variable Ind.1",
                             "Variable Ind.2",
                             "Variable Dependiente",
                            "Test Pearson",
                            "Coeficiente de determinación",
                            "Ecuación de la recta")
library(gt)

Tabla_resumen %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N°2**"),
    subtitle = md("**Resumen del modelo de regresion multiple**")
  ) %>%
  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°2
Resumen del modelo de regresion multiple
Variable Ind.1 Variable Ind.2 Variable Dependiente Test Pearson Coeficiente de determinación Ecuación de la recta
Pérdida neta Costos de respuesta de Emergencia Liberación Involuntaria 0.83 69.58 y = 23.95 + 1.132 *x1 + 0.0003 *x2
Autor: Grupo 1

4.Estimaciones


  • ¿Cuál sería la liberacion de líquido si la perdida neta fuera de 500 barriles y los costos de respuesta de emergencia fueran de 1000?
# Valor para predecir
x1_pred <- 500
x2_pred <- 1000

# Predicción del modelo
y_esperado <- a * x1_pred + b * x2_pred + c

Respuesta : La liberación involuntaria esperada es 590.31 barriles.

5.Conclusión

El análisis realizado permitió identificar una relación lineal multivariable entre la Pérdida Neta de barriles (X₁), los Costos de Respuesta de Emergencia (X₂) y la Liberación Involuntaria de barriles (Y). El modelo obtenido se expresa mediante la siguiente ecuación:

\[ y=23.95+1.132x_1+0.0003x_2 \]

El coeficiente de correlación múltiple obtenido fue de 0.83, lo que indica una asociación positiva considerable entre la variable dependiente y las variables explicativas. Esto evidencia que tanto la pérdida neta como los costos de respuesta de emergencia influyen significativamente en el comportamiento de la liberación involuntaria.

Además, al realizar una proyección considerando una pérdida neta de 500 barriles y costos de respuesta de emergencia de 1.000 unidades monetarias, el modelo estima una liberación involuntaria aproximada de 590.31 barriles.

Estos resultados muestran que el incremento en las variables operativas genera un aumento directo en la liberación involuntaria. Entre ellas, la Pérdida Neta (X₁) representa el factor con mayor influencia dentro del modelo, lo cual resulta coherente con la dinámica operativa asociada a eventos de derrames petroleros. En consecuencia, el modelo constituye una herramienta útil para estimar escenarios operativos y apoyar la toma de decisiones orientadas a la prevención y mitigación de impactos.