1 Configuración y Carga de Datos

library(readxl)
library(dplyr)
library(stringr)
library(gt)
library(e1071)
library(lubridate)
library(MASS)
library(knitr)

setwd("C:/Users/majke/Downloads/Proyecto Estadistica/RMARKDOWN")

archivo <- "tabela_de_pocos_janeiro_2018.xlsx"

tryCatch({
  Datos_Brutos <- read_excel(archivo)
}, error = function(e) {
  stop("Error al leer el archivo Excel. Verifica la ruta y el nombre.")
})

2 Extracción y Depuración de Variables

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, comportamiento que se ajusta idealmente a una Ley de Potencia.

  • Variable Independiente (X): Profundidad Vertical (agrupada cada 225 m)
  • Variable Dependiente (Y): Lámina de Agua Promedio (m)
datos_raw <- Datos_Brutos %>%
  dplyr::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)

2.1 Análisis Visual de Datos

Antes de aplicar el agrupamiento, se observa la dispersión original de los datos para justificar la necesidad del proceso de Binning.

par(mar = c(5, 5, 4, 2))
color_trans <- rgb(0.2, 0.6, 0.86, 0.4)

plot(
  datos_raw$x_raw, datos_raw$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")

3 Aplicación de Binning

Debido a la dispersión observada en la Gráfica N°1, se aplica Binning (cada 225 m) 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 (percentiles 5% – 95%)
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$y

4 Análisis Gráfico (Tendencia Potencial)

par(mar = c(5, 5, 4, 2))
plot(
  x, y,
  main  = "Gráfica N°2: Tendencia Geológica Marina (Agrupada 225 m)",
  xlab  = "Profundidad Vertical Objetivo (m)",
  ylab  = "Lámina de Agua Promedio (m)",
  col   = "#2E4053", pch = 16, cex = 1.2,
  frame.plot = FALSE
)
grid(nx = NULL, ny = NULL, col = "#D7DBDD", lty = "dotted")

5 Modelo Potencial

Se plantea el modelo: y = a · x^b

Linealización: ln(y) = ln(a) + b · ln(x)

modelo_pot <- lm(log(y) ~ log(x), data = datos_model)

ln_a <- coef(modelo_pot)[1]   # Intercepto en escala log
b_exp <- coef(modelo_pot)[2]  # Exponente
a_coef <- exp(ln_a)           # Coeficiente a en escala original

r  <- cor(log(datos_model$x), log(datos_model$y))  # Pearson en escala log
r2 <- summary(modelo_pot)$r.squared                 # R²

ecuacion_txt_simple <- paste0(
  "y = ", round(a_coef, 6), " * x^", round(b_exp, 5)
)
ecuacion_txt_latex <- paste0(
  "**y = ", round(a_coef, 6), " · x^", round(b_exp, 5), "**"
)

# Ejemplo de predicción para x = 3000 m
x_ejemplo <- 3000
y_est     <- a_coef * x_ejemplo^b_exp

5.1 Gráfica del Modelo con Intervalos de Confianza

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   = "#2E4053", 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,
                    newdata  = data.frame(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"])

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 = "#C0392B", lwd = 3)

legend(
  "topleft",
  legend = c("Datos (Promedios)", "Modelo Potencial", "I.C. 95%"),
  col    = c("#2E4053", "#C0392B", "gray"),
  pch    = c(16, NA, 15),
  lwd    = c(NA, 3, NA),
  pt.cex = c(1, NA, 2),
  bty    = "n"
)

6 Resultados y Ecuación

6.1 Bondad de Ajuste

  • Coeficiente de Determinación (R²): 0.6606 (66.06%)
  • Correlación del modelo linealizado (log): 0.8128

6.2 Ecuación Matemática

La ecuación resultante es: y = 8.63816 · x^0.59931

7 Tabla Resumen del Modelo

tabla <- data.frame(
  Variable     = c("Prof. Vertical", "Lámina de Agua"),
  Tipo         = c("Independiente (X)", "Dependiente (Y)"),
  R2           = c(round(r2, 4), "—"),
  Intercepto_a = c(sprintf("%.6f", a_coef), "—"),
  Exponente_b  = c(sprintf("%.5f", b_exp), "—"),
  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_label(
    Variable     = "Variable",
    Tipo         = "Tipo",
    R2           = "R²",
    Intercepto_a = "Coeficiente (a)",
    Exponente_b  = "Exponente (b)",
    Ecuacion     = "Ecuación"
  ) %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_style(
    style = list(
      cell_fill(color = "#2E4053"),
      cell_text(color = "white", weight = "bold")
    ),
    locations = cells_title(groups = c("title", "subtitle"))
  ) %>%
  tab_style(
    style = list(
      cell_fill(color = "#F2F3F4"),
      cell_text(weight = "bold", color = "#2E4053")
    ),
    locations = cells_column_labels()
  ) %>%
  tab_options(
    table.border.top.color            = "#2E4053",
    table.border.bottom.color         = "#2E4053",
    column_labels.border.bottom.color = "#2E4053",
    data_row.padding                  = px(8)
  )
RESUMEN DEL MODELO POTENCIAL
Parámetros y Bondad de Ajuste
Variable Tipo Coeficiente (a) Exponente (b) Ecuación
Prof. Vertical Independiente (X) 0.6606 8.638160 0.59931 y = 8.63816 * x^0.59931
Lámina de Agua Dependiente (Y)
Fuente: Grupo 3

8 Conclusiones

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² de 0.6606 (66.06%).

La ecuación matemática del modelo es: y = 8.63816 · x^0.59931

Por ejemplo, para una profundidad objetivo de 3000 m se estima un entorno marino (lámina de agua) de 1047.83 m.