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 =".")
x <- as.numeric(as.character(datos[, 20])) # Volumen Derramado
## Warning: NAs introducidos por coerción
y <- as.numeric(as.character(datos[, 17])) # Máximo Liberación
datos_raw <- data.frame(x = x, y = y)
datos_clean <- na.omit(datos_raw)
# Filtrar valores mayores a 0 para ambas variables
datos_finales <- subset(datos_clean, x > 0 & y > 0)
plot(datos_finales$x, datos_finales$y,
col = rgb(0, 0, 1, 0.5),
pch = 16, cex = 0.8,
main = "Relación entre Volumen Derramado y Máxima Liberación",
xlab = "Volumen Derramado (Galones)",
ylab = "Máxima Liberación Estimada (Galones)")
\[ Y = α \cdot X^{(β)} \]
# Ajuste del modelo lineal en escala logarítmica
modelo_pot <- lm(log(y) ~ log(x), data = datos_finales)
# Coeficientes
res <- summary(modelo_pot)
res
##
## Call:
## lm(formula = log(y) ~ log(x), data = datos_finales)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7.5070 -1.4222 -0.3867 0.8669 10.9007
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 7.028493 0.067755 103.73 <2e-16 ***
## log(x) 0.221128 0.008236 26.85 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.104 on 1344 degrees of freedom
## Multiple R-squared: 0.3491, Adjusted R-squared: 0.3486
## F-statistic: 720.8 on 1 and 1344 DF, p-value: < 2.2e-16
# Recuperación de parámetros originales
# El intercepto del modelo lineal es ln(a), por lo tanto a = exp(intercepto)
a <- exp(coef(modelo_pot)[1]) #aplha
b <- coef(modelo_pot)[2] #beta
# Secuencia para la línea de tendencia
x_seq <- seq(min(datos_finales$x), max(datos_finales$x), length.out = 500)
# Predicción usando la fórmula de potencia: Y = a * X^b
y_pred <- a * x_seq ^ b
plot(datos_finales$x, datos_finales$y,
col = rgb(0, 0, 1, 0.5),
pch = 16, cex = 0.8,
main = "Relación entre Volumen Derramado y Máxima Liberación",
xlab = "Volumen Derramado (Galones)",
ylab = "Máxima Liberación Estimada (Galones)")
# Línea de regresión
lines(x_seq, y_pred, col = "red", lwd = 2)
# Calculamos la correlación entre log(x) y log(y) para el modelo potencial
pearson_r <- cor(log(datos_finales$x), log(datos_finales$y), method = "pearson")
# Imprimimos el resultado
cat("=== RESULTADO TEST DE PEARSON (Log-Log) ===\n")
## === RESULTADO TEST DE PEARSON (Log-Log) ===
cat("Coeficiente de Pearson (R):", round(pearson_r, 4), "\n")
## Coeficiente de Pearson (R): 0.5908
if(abs(pearson_r) > 0.7) {
cat("INTERPRETACIÓN: Correlación Fuerte.\n")
} else if(abs(pearson_r) > 0.4) {
cat("INTERPRETACIÓN: Correlación Moderada.\n")
} else {
cat("INTERPRETACIÓN: Correlación Débil.\n")
}
## INTERPRETACIÓN: Correlación Moderada.
# Filtrar datos específicos para este intervalo
datos_intervalo <- subset(datos_finales, x >= 32100 & x <= 37100)
# Ajuste del modelo lineal en escala logarítmica
modelo_pot <- lm(log(y) ~ log(x), data = datos_intervalo)
# Coeficientes
res <- summary(modelo_pot)
res
##
## Call:
## lm(formula = log(y) ~ log(x), data = datos_intervalo)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.036701 0.003342 0.004121 0.004922 0.005250
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.2935 1.2220 -0.240 0.815
## log(x) 1.0277 0.1169 8.794 2.63e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.01223 on 11 degrees of freedom
## Multiple R-squared: 0.8755, Adjusted R-squared: 0.8641
## F-statistic: 77.33 on 1 and 11 DF, p-value: 2.628e-06
a <- exp(coef(modelo_pot)[1]) # alpha
b <- coef(modelo_pot)[2] # beta
# Secuencia para la línea de tendencia
x_seq <- seq(min(datos_intervalo$x), max(datos_intervalo$x), length.out = 500)
# Predicción usando la fórmula de potencia: Y = a * X^b
y_pred <- a * x_seq ^ b
plot(datos_intervalo$x, datos_intervalo$y,
col = rgb(0.5, 0, 0.5, 0.6),
pch = 16, cex = 1.2,
main = "Relación Volumen vs Máxima Liberación [32100 - 37100] gal",
xlab = "Volumen Derramado (Galones)",
ylab = "Máxima Liberación Estimada (Galones)")
# Línea de regresión
lines(x_seq, y_pred, col = "red", lwd = 3)
legend("bottomright", legend = "Modelo Potencial", col = "red", lwd = 3, bty = "n")
# Calculamos la correlación entre log(x) y log(y) solo para el intervalo
pearson_r <- cor(log(datos_intervalo$x), log(datos_intervalo$y), method = "pearson")
# Imprimimos el resultado
cat("=== RESULTADO TEST DE PEARSON (Log-Log) ===\n")
## === RESULTADO TEST DE PEARSON (Log-Log) ===
cat("Coeficiente de Pearson (R):", round(abs(pearson_r), 4), "\n")
## Coeficiente de Pearson (R): 0.9357
if(abs(pearson_r) >= 0.8) {
cat("INTERPRETACIÓN: Correlación Fuerte. Cumple con el umbral > 0.80.\n")
} else {
cat("INTERPRETACIÓN: Correlación Débil.\n")
}
## INTERPRETACIÓN: Correlación Fuerte. Cumple con el umbral > 0.80.
\[ Y = 0.7456 \cdot X^{(1.0277)} \]
cat("\n=== ECUACIÓN FINAL ===\n")
##
## === ECUACIÓN FINAL ===
cat(paste0("Y = ", round(a, 4), " * X ^ ", round(b, 4)), "\n")
## Y = 0.7456 * X ^ 1.0277
nuevo_volumen <- 35000
# Predicción manual usando los coeficientes
prediccion <- a * nuevo_volumen ^ b
cat("\n=== PREDICCIÓN ===\n")
##
## === PREDICCIÓN ===
cat("Para un volumen derramado de", nuevo_volumen, "galones (dentro del intervalo):\n")
## Para un volumen derramado de 35000 galones (dentro del intervalo):
cat("Máxima liberación estimada:", round(prediccion, 2), "galones\n")
## Máxima liberación estimada: 34856.07 galones
Conclusiones
Entre la variable independiente Volumen Derramado (X) y la variable dependiente Máxima Liberación (Y) existe una relación matemática de tipo regresión potencial, la cual describe cómo el riesgo máximo escala en función del volumen real derramado. Esta relación se expresa mediante la fórmula del modelo:$ Y = 0.7456 X^{(1.0277)}$ (donde el exponente β=1.0277) sujeta a las restricciones de incluir únicamente valores mayores a cero.Para un derrame de 35000 galones, el modelo estima una liberación máxima de 34856.07 galones.