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.
# 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) 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")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$ypar(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)Se plantea el modelo logarítmico: \[y = 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 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)
Bondad de Ajuste
cat(paste0("* **Coeficiente de Determinación ($R^2$):** ", round(r2_log, 4), " (", round(r2_log * 100, 2), "%)\n"))Ecuación Matemática
La ecuación resultante es: \[y = -11363.6985 + 1816.4494 \cdot \ln(x)\]
Se propone un modelo lineal simple para evaluar si es posible eliminar las restricciones matemáticas del logaritmo: \[y = m \cdot x + b\]
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)
Bondad de Ajuste
cat(paste0("* **Coeficiente de Determinación ($R^2$):** ", round(r2_lin, 4), " (", round(r2_lin * 100, 2), "%)\n"))Ecuación Matemática
La ecuación resultante es: \[y = 0.8311x + 151.0159\]
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 |
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).