Se definió la Profundidad Vertical como variable independiente (\(x\)) dado que representa la ubicación estructural del yacimiento objetivo en el subsuelo.
La Lámina de Agua actúa como variable dependiente (\(y\)), pues refleja el entorno marino suprayacente correspondiente a esa estructura.
Esta relación modela la correspondencia geológica de la cuenca: en los campos petroleros analizados (típicos del Presal brasileño), existe una tendencia no lineal donde los objetivos geológicos más profundos se encuentran correlacionados con un incremento acelerado en la profundidad del mar (talud continental y aguas ultra-profundas), comportamiento que se ajusta idealmente a una Ley de Potencia.
# Limpieza Inicial
datos_raw <- datos %>%
select(PROFUNDIDADE_VERTICAL_M, LAMINA_D_AGUA_M) %>%
mutate(
x_raw = abs(as.numeric(str_replace(as.character(PROFUNDIDADE_VERTICAL_M), ",", "."))),
y_raw = abs(as.numeric(str_replace(as.character(LAMINA_D_AGUA_M), ",", ".")))
) %>%
filter(!is.na(x_raw) & !is.na(y_raw) & x_raw > 0 & y_raw > 80) %>%
filter(x_raw < 15000) Antes de aplicar el agrupamiento, se observa la dispersión original de los datos para justificar la necesidad del proceso de Binning.
datos_plot <- datos_raw %>% filter(x_raw < 15000)
par(mar = c(5, 5, 4, 2))
color_trans <- rgb(0.2, 0.6, 0.86, 0.4)
plot(datos_plot$x_raw, datos_plot$y_raw,
main = "Gráfica N°1: Dispersión de Lámina de Agua en función de Prof. Vertical",
xlab = "Profundidad Vertical (m)",
ylab = "Lámina de Agua (m)",
col = color_trans, pch = 16, cex = 0.6, frame.plot = FALSE)
grid(nx = NULL, ny = NULL, col = "#D7DBDD", lty = "dotted")Debido a la dispersión observada en la Gráfica N°1, se aplica Binning (cada 225m) para reducir el ruido y extraer la tendencia geológica.
datos_model <- datos_raw %>%
mutate(x_bin = round(x_raw / 225) * 225) %>%
group_by(x_bin) %>%
summarise(
y = mean(y_raw, na.rm = TRUE),
conteo = n()
) %>%
rename(x = x_bin) %>%
filter(conteo >= 3) %>%
filter(x > 0 & y > 0)
# Limpieza de Outliers
lim_y <- quantile(datos_model$y, c(0.05, 0.95))
datos_model <- datos_model %>%
filter(y >= lim_y[1] & y <= lim_y[2])
x <- datos_model$x
y <- datos_model$ypar(mar = c(5, 5, 4, 2))
plot(x, y,
main = "Gráfica N°2: Tendencia Geológica Marina (Agrupada 225m)",
xlab = "Profundidad Vertical Objetivo (m)",
ylab = "Lámina de Agua Promedio (m)",
col = "#3498DB", pch = 16, cex = 1.2, frame.plot = FALSE)
grid(nx = NULL, ny = NULL, col = "#D7DBDD", lty = "dotted")
axis(1); axis(2)Se plantea el modelo: \[y = a \cdot x^b\] Linealización: \(\ln(y) = \ln(a) + b \cdot \ln(x)\)
Se presenta el ajuste del modelo incluyendo la banda de incertidumbre estadística (Intervalo de Confianza del 95%).
par(mar = c(5, 5, 4, 2))
plot(x, y,
main = "Gráfica N°3: Modelo Potencial: Lámina de Agua en función de Prof. Vertical",
xlab = "Profundidad Vertical Objetivo (m)",
ylab = "Lámina de Agua Promedio (m)",
col = "#3498DB", pch = 16, cex = 1.0, frame.plot = FALSE)
grid(nx = NULL, ny = NULL, col = "#D7DBDD", lty = "dotted")
x_seq <- seq(min(x), max(x), length.out = 500)
pred_log <- predict(modelo_pot, list(x = x_seq), interval = "confidence", level = 0.95)
y_pred_fit <- exp(pred_log[, "fit"])
y_pred_lwr <- exp(pred_log[, "lwr"])
y_pred_upr <- exp(pred_log[, "upr"])
# Intervalo de Confianza
polygon(c(x_seq, rev(x_seq)),
c(y_pred_lwr, rev(y_pred_upr)),
col = rgb(0.5, 0.5, 0.5, 0.2), border = NA)
lines(x_seq, y_pred_fit, col = "#E74C3C", lwd = 3)
legend("topleft", legend = c("Datos (Promedios)", "Modelo Potencial", "I.C. 95%"),
col = c("#3498DB", "#E74C3C", "gray"),
pch = c(16, NA, 15), lwd = c(NA, 3, NA), pt.cex = c(1, NA, 2), bty = "n")tabla <- data.frame(
Variable = c("Prof. Vertical", "Lámina de Agua"),
Tipo = c("Independiente (X)", "Dependiente (Y)"),
R2 = c(paste0(round(r2, 4)), ""),
Intercepto_a = c(sprintf("%.6f", a), ""),
Exponente_b = c(sprintf("%.5f", b), ""),
Ecuacion = c(ecuacion_txt_simple, "")
)
tabla %>%
gt() %>%
tab_header(
title = md("**RESUMEN DEL MODELO POTENCIAL**"),
subtitle = "Parámetros y Bondad de Ajuste"
) %>%
tab_source_note(source_note = "Fuente: Grupo 3") %>%
cols_align(align = "center", columns = everything()) %>%
tab_style(
style = list(cell_fill(color = "#2C3E50"), cell_text(color = "white", weight = "bold")),
locations = cells_title()
) %>%
tab_style(
style = list(cell_fill(color = "#ECF0F1"), cell_text(weight = "bold", color = "#2C3E50")),
locations = cells_column_labels()
) %>%
tab_options(
table.border.top.color = "#2C3E50",
table.border.bottom.color = "#2C3E50",
data_row.padding = px(8)
)| RESUMEN DEL MODELO POTENCIAL | |||||
| Parámetros y Bondad de Ajuste | |||||
| Variable | Tipo | R2 | Intercepto_a | Exponente_b | Ecuacion |
|---|---|---|---|---|---|
| Prof. Vertical | Independiente (X) | 0.6606 | 8.638160 | 0.59931 | y = 8.638160 * x ^ 0.59931 |
| Lámina de Agua | Dependiente (Y) | ||||
| Fuente: Grupo 3 | |||||
texto_conclusion <- paste0(
"Entre la profundidad vertical del yacimiento y la lámina de agua existe una fuerte relación de tipo **potencial**, ",
"explicada por un coeficiente de determinación **$R^2$ de ", round(r2, 4), "**.<br><br>",
"La ecuación matemática del modelo es:<br>", ecuacion_txt_latex, "<br><br>",
"Por ejemplo, para una profundidad objetivo de **", round(x_ejemplo, 2), " m** ",
"se estima un entorno marino (lámina de agua) de **", round(y_est, 2), " m**."
)
cat(texto_conclusion)Entre la profundidad vertical del yacimiento y la lámina de agua
existe una fuerte relación de tipo potencial, explicada
por un coeficiente de determinación \(R^2\) de 0.6606.
La
ecuación matemática del modelo es:
\[y =
8.638160 \cdot x^{0.59931}\]
Por ejemplo, para una
profundidad objetivo de 3834 m se estima un entorno
marino (lámina de agua) de 1213.77 m.