CARGAR LIBRERÍAS Y DATOS

library(dplyr)
## Warning: package 'dplyr' was built under R version 4.5.2
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
setwd("D:/Data") 
datos <- read.csv("derrames_globales_.csv", header = TRUE, sep = ";", dec =".")

1 Preparación de variables

# Limpieza de caracteres (Puntos de miles y comas decimales si es necesario)
# Nota: Si tu CSV ya viene limpio, esta parte solo asegura que sean numéricos.
x_raw <- as.numeric(gsub(",", ".", gsub("\\.", "", datos$Maximo_liberacion_galones)))
y_raw <- as.numeric(gsub(",", ".", gsub("\\.", "", datos$Respuesta_actual_galones)))

# Crear dataframe inicial y omitir nulos
datos_raw <- data.frame(x = x_raw, y = y_raw)
datos_clean <- na.omit(datos_raw)

# Escalar variables (Standardization)
datos_finales <- data.frame(x = scale(datos_clean$x), 
                            y = scale(datos_clean$y))

2 Gráfica 1: Relación entre Máxima Liberación y respuesta actual

plot(datos_finales$x, datos_finales$y,
     col = rgb(0, 0, 1, 0.5), 
     pch = 16, cex = 0.8,
     main = "Relación entre Máxima Liberación y respuesta actual",
     xlab = "Máximo Liberación ",
     ylab = "Respuesta Actual ")

abline(v=0, h=0, col="gray", lty=2) # Líneas de referencia en la media

3 Conjetura de modelo Polinomial

\[ Y = \beta_0 + \beta_1 X + \beta_2 X^2 + \beta_3 X^3 \]

# Generar Modelo Polinómico de grado 3
# raw = TRUE usa los polinomios naturales, necesario para ver la ecuación clásica
modelo_poly <- lm(y ~ poly(x, 3, raw = TRUE), data = datos_finales)

# Resumen estadístico
res <- summary(modelo_poly)
res
## 
## Call:
## lm(formula = y ~ poly(x, 3, raw = TRUE), data = datos_finales)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -1.846 -0.020 -0.020 -0.020 32.190 
## 
## Coefficients:
##                           Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             -1.856e-02  9.815e-03  -1.891   0.0587 .  
## poly(x, 3, raw = TRUE)1  1.481e-01  3.696e-02   4.006 6.29e-05 ***
## poly(x, 3, raw = TRUE)2  2.928e-02  3.014e-03   9.713  < 2e-16 ***
## poly(x, 3, raw = TRUE)3 -2.832e-04  5.213e-05  -5.433 5.91e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5806 on 3546 degrees of freedom
## Multiple R-squared:  0.6632, Adjusted R-squared:  0.6629 
## F-statistic:  2327 on 3 and 3546 DF,  p-value: < 2.2e-16
# Extracción de Coeficientes
coef_poli <- coef(modelo_poly)
a <- coef_poli[1] # Intercepto (beta 0)
b <- coef_poli[2] # Coeficiente x (beta 1)
c <- coef_poli[3] # Coeficiente x^2 (beta 2)
d <- coef_poli[4] # Coeficiente x^3 (beta 3)

4 Gráfica 2: Relación entre Máxima Liberación y respuesta actual (Modelo)

# Secuencia para la curva suave
x_seq <- seq(min(datos_finales$x), max(datos_finales$x), length.out = 500)

# Predicción: a + bx + cx^2 + dx^3
y_pred <- a + b*x_seq + c*x_seq^2 + d*x_seq^3

plot(datos_finales$x, datos_finales$y,
     col = rgb(0, 0, 1, 0.5), 
     pch = 16, cex = 0.8,
     main = "Relación entre Máxima Liberación y respuesta actual (modelo)",
     xlab = "Máximo Liberación (Escalado)",
     ylab = "Respuesta Actual (Escalado)")

# Curva de regresión
lines(x_seq, y_pred, col = "red", lwd = 2)

5 Test de Pearson

pearson_r <- cor(datos_finales$x, datos_finales$y, method = "pearson")

cat("=== RESULTADO TEST DE PEARSON ===\n")
## === RESULTADO TEST DE PEARSON ===
cat("Coeficiente de Pearson (r):", round(pearson_r, 4), "\n")
## Coeficiente de Pearson (r): 0.7888
if(abs(pearson_r) > 0.7) {
  cat("INTERPRETACIÓN: Correlación Lineal Fuerte.\n")
} else if(abs(pearson_r) > 0.4) {
  cat("INTERPRETACIÓN: Correlación Lineal Moderada.\n")
} else {
  cat("INTERPRETACIÓN: Correlación Lineal Débil.\n")
}
## INTERPRETACIÓN: Correlación Lineal Fuerte.

6 Ecuación del modelo potencial

\[ Y = -0.0186 + 0.148 X + 0.0293 X^2 - 0.000283 X^3 \]

cat("\n=== ECUACIÓN FINAL (Unidades Escaladas) ===\n")
## 
## === ECUACIÓN FINAL (Unidades Escaladas) ===
cat("y =", format(a, scientific = TRUE, digits = 3),
    "+", format(b, scientific = TRUE, digits = 3), "* x",
    "+", format(c, scientific = TRUE, digits = 3), "* x^2",
    "+", format(d, scientific = TRUE, digits = 3), "* x^3\n")
## y = -1.86e-02 + 1.48e-01 * x + 2.93e-02 * x^2 + -2.83e-04 * x^3

7 Estimación de un punto

x_nueva <- 2.5 # 2.5 desviaciones estándar por encima de la media

y_pred_estimada <- a + b*x_nueva + c*x_nueva^2 + d*x_nueva^3

cat("\n=== PREDICCIÓN ===\n")
## 
## === PREDICCIÓN ===
cat("Si la liberación escalada (x) es =", x_nueva, "\n")
## Si la liberación escalada (x) es = 2.5
cat("La respuesta estimada escalada (y) es =", round(y_pred_estimada, 3), "\n")
## La respuesta estimada escalada (y) es = 0.53

Conclusiones

Entre la variable independiente máxima liberación (X) y la variable dependiente respuesta actual (Y) existe una relación matemática de tipo regresión polinomial de tercer grado. Esta relación se expresa mediante la fórmula del modelo:\(Y = -0.0186 + 0.148 X + 0.0293 X^2 - 0.000283 X^3\). Para una liberación 2.5 escalados, el modelo estima una respuesta de 0.53 galones escalados.