# REGRESIÓN POLINÓMICA: Recuperación de Petróleo Crudo vs. Liberación de Petróleo Crudo
# Carga de datos
# setwd("~/") # Descomentar y ajustar si tu archivo no está en el directorio de trabajo actual
datos <- read.csv("DATOS.csv",
header = TRUE, sep = ";", dec = ".")
# Extraer variables
x_liberacion <- datos$Liberacion_petroleo_crudo_edicion
y_recuperacion <- datos$Edicion_recuperacion_petroleo_crudo
# --- Limpieza de datos (manejo de NA y valores cero) ---
df_lib_rec <- data.frame(x_orig = x_liberacion, y_orig = y_recuperacion)
df_lib_rec_clean <- na.omit(df_lib_rec) # Eliminar filas con valores NA
# Filtrar valores iguales a cero en ambas columnas (Liberación y Recuperación)
df_lib_rec_clean <- df_lib_rec_clean[df_lib_rec_clean$x_orig != 0 & df_lib_rec_clean$y_orig != 0, ]
x_clean <- df_lib_rec_clean$x_orig
y_clean <- df_lib_rec_clean$y_orig
# --- Modelo de Regresión Polinómica ---
regresionPolinomica <- lm(y_clean ~ x_clean + I(x_clean^2))
summary(regresionPolinomica)
##
## Call:
## lm(formula = y_clean ~ x_clean + I(x_clean^2))
##
## Residuals:
## Min 1Q Median 3Q Max
## -21133.8 -54.4 21.2 130.3 10615.2
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -4.371e+00 1.780e+01 -0.246 0.806
## x_clean 7.998e-01 4.919e-03 162.588 <2e-16 ***
## I(x_clean^2) 3.286e-07 9.592e-09 34.255 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1021 on 4149 degrees of freedom
## Multiple R-squared: 0.9867, Adjusted R-squared: 0.9867
## F-statistic: 1.54e+05 on 2 and 4149 DF, p-value: < 2.2e-16
# Gráfica de regresión
plot(x_clean, y_clean, col = 4, pch = 7,
main = "Gráfica: Regresión Polinómica",
xlab = "Liberación de petróleo crudo (BBL)",
ylab = "Recuperación de petróleo crudo (BBL)",
xlim = c(0, 100000), # Ajuste automático del límite superior del eje X
ylim = c(0, 100000)) # Ajuste automático del límite superior del eje Y
# Agregar curva de regresión
x_ordenado <- sort(x_clean)
y_predicho_curva <- predict(regresionPolinomica, newdata = data.frame(x_clean = x_ordenado))
lines(x_ordenado, y_predicho_curva, col = "red", lwd = 2) # Dibuja la línea de predicción

# Test de bondad
r2_polinomica <- summary(regresionPolinomica)$r.squared * 100
cat("\nCoeficiente de Determinación (R^2) Polinómico:", r2_polinomica, "%\n")
##
## Coeficiente de Determinación (R^2) Polinómico: 98.67102 %
# Coeficientes del modelo
beta0 <- regresionPolinomica$coefficients[1]
beta1 <- regresionPolinomica$coefficients[2]
beta2 <- regresionPolinomica$coefficients[3]
#La ecuacion de nuestro modelo de regresion polinomica da como resultado: y=0.000000708x^2+0.591x+40.4
#Donde y = Volumen de petróleo crudo recuperado (BBL) y x = Volumen de petróleo crudo liberado (BBL).\n")
# Aplicación del Modelo: Si x (Liberación) es 100 BBL, y=?
x <- 100 # Definimos un valor de ejemplo para la liberación
y = 0.000000329 * x^2 + 0.8 * x - 4.37
y
## [1] 75.63329
## CONCLUSIÓN
cat("La ecuación del modelo de regresión es:\n")
## La ecuación del modelo de regresión es:
cat("y =", format(beta0, scientific = TRUE, digits = 3),
"+", format(beta1, scientific = TRUE, digits = 3), "* x",
"+", format(beta2, scientific = TRUE, digits = 3), "* x^2\n")
## y = -4.37e+00 + 8e-01 * x + 3.29e-07 * x^2
#El coeficiente de determinación (R^2) de" 98.67% indica que este modelo polinómico explica una muy alta proporción de la variabilidad en la recuperación del petróleo.
#Este modelo proporciona una representación más flexible y, por lo tanto, potencialmente más precisa de cómo la recuperación de petróleo se relaciona con la cantidad liberada a través de diferentes magnitudes de derrames