1 Configuración y Carga de Datos

archivo <- "tabela_de_pocos_janeiro_2018.xlsx"

tryCatch({
  datos <- read_excel(archivo)
}, error = function(e) {
  stop("Error")
})

2 Extracción y Depuración de Variables

Se analiza la relación entre la longitud perforada y la profundidad vertical.

Se estableció la Profundidad de Perforación como variable independiente (\(x\)) ya que cuantifica la longitud total de la trayectoria perforada. La Profundidad Vertical actúa como variable dependiente (\(y\)), pues representa el avance neto hacia el objetivo en el subsuelo.

Esta relación modela la eficiencia direccional: a medida que la longitud del pozo aumenta significativamente, la ganancia de profundidad vertical tiende a desacelerarse debido a la inclinación y desviación horizontal.

  • Variable Independiente (X): Profundidad de Perforación (Agrupada cada 100m).
  • Variable Dependiente (Y): Profundidad Vertical Promedio (m).
# Limpieza Inicial
datos_raw <- datos %>%
  select(PROFUNDIDADE_SONDADOR_M, PROFUNDIDADE_VERTICAL_M) %>%
  mutate(
    x_raw = abs(as.numeric(str_replace(as.character(PROFUNDIDADE_SONDADOR_M), ",", "."))),
    y_raw = abs(as.numeric(str_replace(as.character(PROFUNDIDADE_VERTICAL_M), ",", ".")))
  ) %>%
  filter(!is.na(x_raw) & !is.na(y_raw) & x_raw > 0 & y_raw > 0) %>%
  filter(y_raw < 15000) 

3 Análisis Visual de Datos

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 Prof. Vertical en función de Prof. de Perforación",
     xlab = "Profundidad de Perforación (m)",
     ylab = "Profundidad Vertical (m)",
     col = color_trans, pch = 16, cex = 0.6, frame.plot = FALSE)
grid(nx = NULL, ny = NULL, col = "#D7DBDD", lty = "dotted")

4 Aplicación de Binning

Debido a la dispersión observada en la Gráfica N°1, se aplica Binning para reducir el ruido y extraer la tendencia de eficiencia direccional.

# Agrupamiento cada 100m
datos_model <- datos_raw %>%
  mutate(x_bin = round(x_raw / 100) * 100) %>% 
  group_by(x_bin) %>%
  summarise(
    y = mean(y_raw, na.rm = TRUE), 
    conteo = n()
  ) %>%
  rename(x = x_bin) %>%
  filter(conteo >= 3) 

# 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$y

5 Análisis Gráfico (Tendencia Agrupada)

par(mar = c(5, 5, 4, 2))
plot(x, y,
     main = "Gráfica N°2: Perfil de Prof. Vertical Promedio en función de Prof. de Perforación",
     xlab = "Profundidad Perforación Agrupada (m)",
     ylab = "Profundidad Vertical 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)

6 Modelo Logarítmico

Se plantea el modelo logarítmico: \[y = a + b \cdot \ln(x)\]

modelo_log <- lm(y ~ log(x))

6.1 Gráfica N°3: Modelo Logarítmico con I.C.

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 Logarítmico: Prof. Vertical en función de Prof. de Perforación",
     xlab = "Profundidad Perforación (m)",
     ylab = "Profundidad Vertical 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_log, list(x = x_seq), interval = "confidence", level = 0.95)

# Intervalo de Confianza
polygon(c(x_seq, rev(x_seq)), 
        c(pred_log[,"lwr"], rev(pred_log[,"upr"])),
        col = rgb(0.5, 0.5, 0.5, 0.2), border = NA)


lines(x_seq, pred_log[,"fit"], col = "#E74C3C", lwd = 3)

legend("topleft", legend = c("Datos", "Modelo Logarítmico", "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")

coefs_log <- coef(modelo_log)
a_log <- coefs_log[1]
b_log <- coefs_log[2]
r2_log <- summary(modelo_log)$r.squared
r_log <- sqrt(r2_log)

# Ecuación Log
signo_b_log <- ifelse(b_log >= 0, "+", "-")


ecuacion_log_latex <- paste0("$$y = ", sprintf("%.4f", a_log), " ", signo_b_log, " ", sprintf("%.4f", abs(b_log)), " \\cdot \\ln(x)$$")

ecuacion_log_simple <- paste0("y = ", sprintf("%.4f", a_log), " ", signo_b_log, " ", sprintf("%.4f", abs(b_log)), " * ln(x)")

x_restriccion <- exp(-a_log/b_log)

cat("**Resultados y Ecuación (Modelo Logarítmico)**\n\n")

Resultados y Ecuación (Modelo Logarítmico)

cat("**Bondad de Ajuste**\n\n")

Bondad de Ajuste

cat(paste0("* **Coeficiente de Determinación ($R^2$):** ", round(r2_log, 4), " (", round(r2_log * 100, 2), "%)\n"))
  • Coeficiente de Determinación (\(R^2\)): 0.7702 (77.02%)
cat(paste0("* **Correlación del modelo linealizado (r):** ", round(r_log, 4), "\n\n"))
  • Correlación del modelo linealizado (r): 0.8776
cat("**Ecuación Matemática**\n\n")

Ecuación Matemática

cat(paste0("La ecuación resultante es: ", ecuacion_log_latex, "\n\n"))

La ecuación resultante es: \[y = -11363.6985 + 1816.4494 \cdot \ln(x)\]

7 Modelo Lineal (Alternativo)

Se propone un modelo lineal simple para evaluar si es posible eliminar las restricciones matemáticas del logaritmo: \[y = m \cdot x + b\]

modelo_lin <- lm(y ~ x)

7.1 Gráfica N°4: Modelo Lineal con I.C.

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°4: Modelo Lineal: Prof. Vertical en función de Prof. de Perforación",
     xlab = "Profundidad Perforación (m)",
     ylab = "Profundidad Vertical Promedio (m)",
     col = "#3498DB", pch = 16, cex = 1.0, frame.plot = FALSE)
grid(nx = NULL, ny = NULL, col = "#D7DBDD", lty = "dotted")


pred_lin <- predict(modelo_lin, list(x = x_seq), interval = "confidence", level = 0.95)

# Intervalo de Confianza
polygon(c(x_seq, rev(x_seq)), 
        c(pred_lin[,"lwr"], rev(pred_lin[,"upr"])),
        col = rgb(0.5, 0.5, 0.5, 0.2), border = NA)

lines(x_seq, pred_lin[,"fit"], col = "#27AE60", lwd = 3) 

legend("topleft", legend = c("Datos", "Modelo Lineal", "I.C. 95%"), 
       col = c("#3498DB", "#27AE60", "gray"), 
       pch = c(16, NA, 15), lwd = c(NA, 3, NA), pt.cex = c(1, NA, 2), bty = "n")

# Cálculos
coefs_lin <- coef(modelo_lin)
b_lin <- coefs_lin[1] 
m_lin <- coefs_lin[2]
r2_lin <- summary(modelo_lin)$r.squared
r_lin <- sqrt(r2_lin)

# Ecuación Lineal
signo_m_lin <- ifelse(m_lin >= 0, "+", "-")

# Versión LaTeX
ecuacion_lin_latex <- paste0("$$y = ", sprintf("%.4f", m_lin), "x ", signo_m_lin, " ", sprintf("%.4f", abs(b_lin)), "$$")
# Versión simple
ecuacion_lin_simple <- paste0("y = ", sprintf("%.4f", m_lin), "x ", signo_m_lin, " ", sprintf("%.4f", abs(b_lin)))

cat("**Resultados y Ecuación (Modelo Lineal)**\n\n")

Resultados y Ecuación (Modelo Lineal)

cat("**Bondad de Ajuste**\n\n")

Bondad de Ajuste

cat(paste0("* **Coeficiente de Determinación ($R^2$):** ", round(r2_lin, 4), " (", round(r2_lin * 100, 2), "%)\n"))
  • Coeficiente de Determinación (\(R^2\)): 0.9553 (95.53%)
cat(paste0("* **Coeficiente de Correlación (r):** ", round(r_lin, 4), "\n\n"))
  • Coeficiente de Correlación (r): 0.9774
cat("**Ecuación Matemática**\n\n")

Ecuación Matemática

cat(paste0("La ecuación resultante es: ", ecuacion_lin_latex, "\n\n"))

La ecuación resultante es: \[y = 0.8311x + 151.0159\]

8 Comparación de Modelos

tabla_comp <- data.frame(
  Modelo = c("Logarítmico", "Lineal"),
  # Se prioriza R2 en la tabla para coherencia
  R2 = c(paste0(round(r2_log*100,2), "%"), paste0(round(r2_lin*100,2), "%")),
  Pearson_R = c(paste0(round(r_log*100,2), "%"), paste0(round(r_lin*100,2), "%")),
  Ecuacion = c(ecuacion_log_simple, ecuacion_lin_simple),
  Restriccion = c(paste0("x > ", round(x_restriccion, 2), " m"), "Ninguna")
)

tabla_comp %>%
  gt() %>%
  tab_header(
    title = md("**COMPARACIÓN: LOGARÍTMICO / LINEAL**"),
    subtitle = "Evaluación de Ajuste y Restricciones"
  ) %>%
  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",
    data_row.padding = px(8)
  )
COMPARACIÓN: LOGARÍTMICO / LINEAL
Evaluación de Ajuste y Restricciones
Modelo R2 Pearson_R Ecuacion Restriccion
Logarítmico 77.02% 87.76% y = -11363.6985 + 1816.4494 * ln(x) x > 521.13 m
Lineal 95.53% 97.74% y = 0.8311x + 151.0159 Ninguna

9 Conclusiones

x_ejemplo <- mean(x)
y_est_log <- a_log + b_log * log(x_ejemplo)

texto_conclusion <- paste0(
  "Entre la Profundidad de Perforación y la Profundidad Vertical existe una relación de tipo **logarítmica** ",
  "cuya ecuación matemática está representada por:<br>", ecuacion_log_latex, "<br><br>",
  "Siendo 'x' la profundidad de perforación en m y 'y' la profundidad vertical en m.<br>",
  "Por ejemplo, para una profundidad de perforación de **", round(x_ejemplo, 2), " m** ",
  "se estima una profundidad vertical de **", round(y_est_log, 2), " m**.<br><br>",
  "**Nota Comparativa:** Si bien el modelo lineal presenta un ajuste del **", round(r2_lin*100, 2), "%** ",
  "y el logarítmico del **", round(r2_log*100, 2), "%**, ",
  "se debe considerar que el modelo logarítmico posee restricciones matemáticas (x > ", round(x_restriccion, 2), " m)."
)

cat(texto_conclusion)

Entre la Profundidad de Perforación y la Profundidad Vertical existe una relación de tipo logarítmica cuya ecuación matemática está representada por:
\[y = -11363.6985 + 1816.4494 \cdot \ln(x)\]

Siendo ‘x’ la profundidad de perforación en m y ‘y’ la profundidad vertical en m.
Por ejemplo, para una profundidad de perforación de 3600 m se estima una profundidad vertical de 3510.64 m.

Nota Comparativa: Si bien el modelo lineal presenta un ajuste del 95.53% y el logarítmico del 77.02%, se debe considerar que el modelo logarítmico posee restricciones matemáticas (x > 521.13 m).