# 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