Modelo de Regresión Lineal


1.Preparación de datos


1.1 Carga de datos

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

1.2 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

1.3 Selección de Variables de Interés

LINB <- as.numeric(datos$LiberacionInvoluntariaBarriles)
RLB <- as.numeric(datos$RecuperacionLiquidoBarriles)

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

1.4 Depuración de Datos

Para garantizar la calidad del análisis, se aplicó un proceso de depuración de datos basado en el criterio del Rango Intercuartílico (IQR). Este método permite identificar y eliminar valores atípicos extremos, conservando únicamente observaciones válidas dentro de los límites estadísticamente aceptables.

Filtración por IQR

# ---LINB---
Q1_L <- quantile(datos_interes$LINB, 0.25, na.rm = TRUE)
Q3_L <- quantile(datos_interes$LINB, 0.75, na.rm = TRUE)
IQR_L <- Q3_L - Q1_L
L_min <- Q1_L - 1.5 * IQR_L
L_max <- Q3_L + 1.5 * IQR_L

# --- RLB ---
Q1_R <- quantile(datos_interes$RLB, 0.25, na.rm = TRUE)
Q3_R <- quantile(datos_interes$RLB, 0.75, na.rm = TRUE)
IQR_R <- Q3_R - Q1_R
R_min <- Q1_R - 1.5 * IQR_R
R_max <- Q3_R + 1.5 * IQR_R

# Filtrar directamente las variables
datos_limpios <- datos_interes %>% 
  filter(LINB >= L_min, LINB <= L_max,RLB >= R_min, RLB <= R_max)

2.Definición de Variables para el Modelo de Regresión


2.1 Selección de Variable Predictora y Variable Respuesta

x_var <- datos_limpios$LINB # independiente
y_var <- datos_limpios$RLB # dependiente

2.2 Filtracion de datos para la realizacion de la grafica

datosg <- datos_limpios %>%
    filter(LINB > 2, RLB > 2, LINB < 10, RLB < 10)

x_var <- datosg$LINB   
y_var <- datosg$RLB  

Verificamos los nuevos intervalos y el tamaño muestral

min<-min(x_var)
max<-max(x_var)
miny<-min(y_var)
maxy<-max(y_var)
n    <- nrow(datosg)

tabla_intervalos<-data.frame(min,max,miny,maxy,n)

colnames(tabla_intervalos)<-c("Min. X","Máx. X","Min. Y","Máx.Y","Tamaño muestral")


library(gt)

tabla_intervalos %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N°1**"),
    subtitle = md("**Resumen de la depuración de datos para el modelo de regresión lineal**")
  ) %>%
  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°1
Resumen de la depuración de datos para el modelo de regresión lineal
Min. X Máx. X Min. Y Máx.Y Tamaño muestral
2.1 9.76 2.05 9.76 315
Autor: Grupo 1

2.2 Diagrama de Dispersión

plot(x_var, y_var, col = 3, pch = 7,
     xlab = "Liberación Involuntaria de Barriles",
     ylab = "Recuperación de Líquido de Barriles",
     main = "Gráfica N°1: Diagrama de dispersión de la recuperación de líquido en función 
     de la liberación involuntaria en accidentes de oleoductos en EE.UU.")

3.Conjetura del modelo de regresión


modelorl <- lm(y_var ~ x_var)

3.1 Resumen del modelo

summary(modelorl)
## 
## Call:
## lm(formula = y_var ~ x_var)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.5641  0.0399  0.1217  0.1880  0.4830 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.12184    0.07430    1.64    0.102    
## x_var        0.93803    0.01469   63.87   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4946 on 313 degrees of freedom
## Multiple R-squared:  0.9287, Adjusted R-squared:  0.9285 
## F-statistic:  4079 on 1 and 313 DF,  p-value: < 2.2e-16

3.2 Gráfica del modelo

plot(x_var, y_var, col = 3, pch = 7,
     xlab = "Liberación Involuntaria de Barriles",
     ylab = "Recuperación de Líquido de Barriles",
     main = "Gráfica N°2:Modelo de regresión lineal entre la liberación involuntaria 
     y la recuperación de líquido de Barriles.")
abline(modelorl, 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  <- cor(x_var, y_var)*100

La correlación lineal entre ambas variables es : 96.371 %

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.

r2 <- ((r/100)^2)*100  
El porcentaje de la variación de la recuperación de líquido que es explicado por la liberación involuntaria es de: 92.87 %

3.4 Ecuación de la recta

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

\[y = mx + b\]

Donde:

  • \(\boldsymbol{m}\) representa la pendiente del modelo, es decir, el cambio esperado en \(y\) por cada unidad adicional de \(x\).
  • \(\boldsymbol{b}\) corresponde al intercepto, que indica el valor estimado de \(y\) cuando \(x\) es igual a cero.
b <- coef(modelorl)[1]

El intercepto es: 0.122

m  <- coef(modelorl)[2]
La pendiente es: 0.938

Por lo siguiente la ecuación de la recta obtenida es : y = 0.122 + 0.938 * x

3.5 Restricciones

La ecuación del modelo lineal obtenida de la recuperación de líquido en funcion de la liberación involuntaria en escenarios de pocos accidentes es :

\[y = 0.938 * x + 0.122\] Donde:

  • \(y\) representa la Recuperación de Líquido (barriles).
  • \(x\) representa la Liberación Involuntaria (barriles).

Este modelo presenta restricciones asociadas al rango de datos utilizados para su ajuste, ya que fue construido únicamente con observaciones que cumplen con los criterios:

  • \(2<\) Liberación involuntaria \(<10\)
  • \(2<\) Recuperación de Líquido \(<10\)

Por lo tanto, su validez se limita estrictamente a este intervalo. Cualquier predicción realizada fuera de dicho rango constituye una extrapolación, por lo que no describe de forma confiable el comportamiento real del sistema.

3.6 Tabla de resumen del modelo

VariableIn <- c("Liberación Involuntaria")
VariableDep <- c("Recuperación de líquido")
Tipo <- c("Independiente","Dependiente")
Ecuacion <- c(" y= 0.122 + 0.938*x")

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

colnames(Tabla_resumen) <- c("Variable Independiente",
                             "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 lineal de la perdida neta en función de la liberación involuntaria en barriles petroleros**")
  ) %>%
  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 lineal de la perdida neta en función de la liberación involuntaria en barriles petroleros
Variable Independiente Variable Dependiente Test Pearson Coeficiente de determinación Ecuación de la recta
Liberación Involuntaria Recuperación de líquido 96.37 92.87 y= 0.122 + 0.938*x
Autor: Grupo 1

4.Cálculo de estimaciones


  • ¿Cuál sería la recuperación de líquido estimada si la liberación involuntaria fuera de 5 barriles?
# Valor para predecir
x_pred <- 5

# Predicción del modelo
y_esperado <- m * x_pred + b

Respuesta : Para una liberación involuntaria de 5 barriles, la recuperación de líquido estimada es de 4.81 barriles.

5.Conclusión


El análisis realizado demuestra que existe una relación lineal fuerte y positiva entre la liberación involuntaria de barriles y la recuperación de líquido, respaldada por un coeficiente de correlación de 96.37%, lo cual indica que ambas variables evolucionan de manera consistente. El coeficiente de correlación (96.37%) evidencia una relación lineal fuerte y positiva. Asimismo, el coeficiente de determinación (R² = 92.87%) confirma que el 93% de la variabilidad en la recuperación se explica por la liberación involuntaria.

La ecuación estimada es : y = 0.122 + 0.938x muestra que, por cada barril liberado involuntariamente, la recuperación de líquido aumenta casi en la misma proporción, manteniendo coherencia con la relación positiva observada. Bajo este modelo, una liberación involuntaria de 5 barriles genera una recuperación de líquido estimada de 4.81 barriles. En conjunto, estos resultados demuestran que el modelo es sólido, confiable y adecuado para realizar estimaciones dentro del rango operativo de los datos.