1 Librerías

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

2 Carga de datos

setwd("C:/Users/majke/Downloads/Proyecto Estadistica/RMARKDOWN")
tryCatch({
  Datos_Brutos <- read_excel("tabela_de_pocos_janeiro_2018.xlsx")
}, error = function(e) {
  stop("Error al leer el archivo Excel. Verifica la ruta y el nombre.")
})

3 Selección de variables

Se analiza la relación causal entre la longitud total perforada y el avance neto vertical.

Se estableció la Profundidad de Perforación como variable independiente (X), ya que cuantifica el esfuerzo longitudinal total realizado por el equipo (Causa). La Profundidad Vertical actúa como variable dependiente (Y), pues representa el avance neto hacia el objetivo en el subsuelo (Efecto).

Esta relación modela la eficiencia direccional: a medida que la longitud del pozo aumenta, la ganancia de profundidad vertical tiende a desacelerarse debido a la inclinación necesaria para alcanzar objetivos desplazados horizontalmente, un comportamiento compatible con un modelo logarítmico.

  • Variable Independiente (X): Profundidad de Perforación (m)

  • Variable Dependiente (Y): Profundidad Vertical (m)

datos_raw <- Datos_Brutos %>%
  dplyr::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 > 80 & x_raw < 15000)

X_original <- datos_raw$x_raw
Y_original <- datos_raw$y_raw

4 Tabla de pares de valores

El tamaño muestral bruto de datos válidos es de 5501 observaciones.

TVP_original <- data.frame(X_original, Y_original)

kable(head(TVP_original, 5),
      col.names = c("Profundidad de Perforación (X)", "Profundidad Vertical (Y)"))
Profundidad de Perforación (X) Profundidad Vertical (Y)
4050 3145.40
6925 6900.00
3809 2936.99
4575 2934.18
4570 2952.55

5 Gráfica de dispersión

par(mar = c(5, 5, 4, 2))
plot(X_original, Y_original,
     main  = "Gráfica N°1: Dispersión Original\nProf. Vertical vs Prof. Perforación",
     cex.main = 0.9,
     xlab  = "Profundidad de Perforación (m)",
     ylab  = "Profundidad Vertical (m)",
     col   = rgb(0.18, 0.25, 0.31, 0.4),
     pch   = 16, cex = 0.6, frame.plot = FALSE)
grid(nx = NULL, ny = NULL, col = "#D7DBDD", lty = "dotted")

6 Tratamiento de los datos

La nube de puntos de la Gráfica N°1 muestra un límite superior recto muy marcado que corresponde a los pozos estrictamente verticales (donde \(Y \approx X\)). Debajo de esta línea, se observa la dispersión que representa los pozos direccionales, los cuales sufren una pérdida de ganancia vertical al extenderse. Para modelar la eficiencia direccional pura sin agrupar datos (sin binning), se aplican filtros físicos relacionales:

1. Filtro de atípicos evidentes: Se descarta el error de registro extremo (\(Y > 15000\)).

2. Recorte físico (Relacional): Se aísla la tendencia principal de desviación direccional exigiendo que la profundidad vertical represente entre el 35% y el 80% de la longitud perforada (\(0.35 \cdot X < Y < 0.80 \cdot X\)). Además, se descartan los primeros 1000 metros (\(X > 1000\)) para eliminar la zona de construcción superficial inicial.

datos_model <- datos_raw %>%
  filter(y_raw < 15000) %>%
  # Filtro físico y relacional para aislar pozos direccionales
  filter(x_raw > 1000 & y_raw < (x_raw * 0.75) & y_raw > (x_raw * 0.45)) 

X_final <- datos_model$x_raw
Y_final <- datos_model$y_raw

6.1 Nueva gráfica de dispersión

datos_model <- datos_raw %>%
  filter(y_raw < 15000) %>%
  # Filtro físico y relacional para aislar pozos direccionales
  filter(x_raw > 1000 & y_raw < (x_raw * 0.75) & y_raw > (x_raw * 0.45)) 

X_final <- datos_model$x_raw
Y_final <- datos_model$y_raw

7 Conjetura

Al descartar los pozos verticales puros, la nube de puntos revela claramente una curvatura cóncava hacia abajo: a mayor longitud perforada, el incremento en la profundidad vertical se desacelera progresivamente. Esto justifica plenamente la aplicación de un modelo de regresión logarítmica.

8 Parámetros

Modelo logarítmico general: \[Y = a + b \cdot \ln(X)\]

Modelo logarítmico aplicado al estudio: \[Prof. Vertical = a + b \cdot \ln(Prof. Perforación)\]

Ajuste del modelo:

modelo_log <- lm(Y_final ~ log(X_final))

Parámetros:

param <- coef(modelo_log)

a_est <- param[1] # Intercepto (a)
a_est
## (Intercept) 
##   -10713.18
b_est <- param[2] # Pendiente logarítmica (b)
b_est
## log(X_final) 
##     1607.223

Ecuación logarítmica:

\[Y = -10713.1777 + 1607.2228 \cdot \ln(X)\]

Justificación del uso de la regresión lineal (lm) Aunque el modelo planteado presenta una relación logarítmica, se puede utilizar la función lm() porque el modelo puede linealizarse mediante una transformación directa de la variable independiente.

Modelo logarítmico general: \[Y = a + b \ln(X)\]

Aplicando la transformación: \[X_1 = \ln(X), \quad \beta_0 = a, \quad \beta_1 = b\]

Obtenemos un modelo lineal: \[Y = \beta_0 + \beta_1 X_1\]

Esta ecuación corresponde a una regresión lineal respecto a los parámetros, por lo que puede ser estimada utilizando:

lm(Y ~ log(X))

Finalmente, los coeficientes obtenidos permiten reconstruir el modelo logarítmico original.

9 Comparación de la realidad con el modelo

Se presenta el ajuste del modelo logarítmico superpuesto a la dispersión direccional filtrada, incluyendo el Intervalo de Confianza estadístico del 95%.

par(mar = c(5, 5, 4, 2))
plot(X_final, Y_final,
     main  = "Gráfica N°3: Modelo Logarítmico en Pozos Direccionales",
     cex.main = 0.9,
     xlab  = "Profundidad de Perforación (m)",
     ylab  = "Profundidad Vertical (m)",
     col   = "#2E4053", pch = 16, cex = 0.7, frame.plot = FALSE)
grid(nx = NULL, ny = NULL, col = "#D7DBDD", lty = "dotted")

x_seq    <- seq(min(X_final), max(X_final), length.out = 500)
pred_log <- predict(modelo_log, newdata = data.frame(X_final = x_seq), interval = "confidence", level = 0.95)

# Banda de error (I.C. 95%)
polygon(
  c(x_seq, rev(x_seq)),
  c(pred_log[, "lwr"], rev(pred_log[, "upr"])),
  col = rgb(0.5, 0.5, 0.5, 0.5), border = NA
)

# Curva logarítmica
lines(x_seq, pred_log[, "fit"], col = "#C0392B", lwd = 3)

legend("topleft",
       legend = c("Datos Reales", "Modelo Logarítmico", "I.C. 95%"),
       col    = c("#2E4053", "#C0392B", "gray"),
       pch    = c(16, NA, 15), lwd = c(NA, 3, NA),
       pt.cex = c(0.7, NA, 2), bty = "o", bg = "white")

10 Test de Bondad

# Correlación entre Y y el logaritmo de X
r_log <- cor(log(X_final), Y_final)
ecuacion_txt_simple <- paste0("Y = ", sprintf("%.4f", a_est), " + ", sprintf("%.4f", b_est), " * ln(X)")

tabla_resumen <- data.frame(
  Parametro = c(
    "Tipo de Regresión",
    "Ecuación del Modelo",
    "Correlación (r)",
    "Intercepto (a)",
    "Pendiente Logarítmica (b)"
  ),
  Valor = c(
    "Logarítmica (Linealizada)",
    ecuacion_txt_simple,
    paste0(round(r_log * 100, 2), " %"),
    sprintf("%.4f", a_est),
    sprintf("%.4f", b_est)
  )
)

tabla_resumen %>%
  gt() %>%
  tab_header(
    title = md("**RESUMEN DEL MODELO LOGARÍTMICO**"),
    subtitle = md("**Parámetros y Bondad de Ajuste**")
  ) %>%
  tab_source_note(source_note = "Autor: Anahi Macias") %>%
  cols_label(
    Parametro = md("**Parámetro**"),
    Valor     = md("**Valor**")
  ) %>%
  cols_align(align = "left", columns = Parametro) %>%
  cols_align(align = "center", columns = Valor) %>%
  tab_style(
    style = list(cell_fill(color = "#2C3E50"), cell_text(color = "white", weight = "bold")),
    locations = cells_title(groups = "title")
  ) %>%
  tab_style(
    style = list(cell_fill(color = "#2C3E50"), cell_text(color = "white", weight = "bold", size = "small")),
    locations = cells_title(groups = "subtitle")
  ) %>%
  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",
    column_labels.border.bottom.color = "#2C3E50",
    data_row.padding = px(8)
  )
RESUMEN DEL MODELO LOGARÍTMICO
Parámetros y Bondad de Ajuste
Parámetro Valor
Tipo de Regresión Logarítmica (Linealizada)
Ecuación del Modelo Y = -10713.1777 + 1607.2228 * ln(X)
Correlación (r) 90.34 %
Intercepto (a) -10713.1777
Pendiente Logarítmica (b) 1607.2228
Autor: Anahi Macias

11 Restricciones

Dominios Físicos y Matemáticos: \[ D_X = {x \in \mathbb{R} : x > 0} \] \[ D_Y = {y \in \mathbb{R} : y > 0} \]

Pregunta: ¿Existe algún valor del dominio de X que, al sustituirse en el modelo matemático, genere un valor de Y fuera de su dominio?

Respuesta: Sí. El logaritmo natural restringe matemáticamente el dominio a x>0. Sin embargo, existe una restricción física fundamental: la profundidad vertical no puede ser negativa (y>0).

Igualando la ecuación del modelo a cero (0=a+b⋅ln(x)) y despejando x, descubrimos que el modelo intersecta el eje horizontal en:

\[ x=e^{-a/b} =e^{-(-10713.1777/1607.2228)} \approx 784.97\ \text{m} \]

Por lo tanto, cualquier profundidad de perforación menor a 784.97 marrojará una profundidad vertical negativa, lo cual es físicamente imposible. En consecuencia, el modelo solo es válido para profundidades de perforación que superen este umbral y aplica estrictamente a pozos de diseño direccional.

12 Estimación

# Pregunta de cantidad
x_cantidad <- 3000
y_cantidad <- a_est + b_est * log(x_cantidad)



par(mar = c(1, 1, 1, 1))

plot(0, 0,
     type = "n",
     xlim = c(0, 1),
     ylim = c(0, 1),
     axes = FALSE,
     xlab = "",
     ylab = "")

text(
  x = 0.5,
  y = 0.48,
  labels = paste(
    "Pregunta de cantidad\n\n",
    "¿Cuál es la profundidad vertical esperada cuando\n",
    "la longitud de perforación es de ", x_cantidad, " m?\n\n",
    "Resultado: ", round(y_cantidad, 2), " m\n\n",
 sep = ""
  ),
  cex = 1.15,
  col = "#2C3E50",
  font = 2
)

13 Conclusión

Tras separar los pozos direccionales de los estrictamente verticales mediante un filtrado relacional de la cuenca, se comprobó que entre la Profundidad de Perforación y la Profundidad Vertical existe una relación de tipo logarítmica, cuyo modelo es \[ Y=-10713.1777+1607.2228\,\ln(X) \]

Esta función representa matemáticamente la pérdida de eficiencia vertical intrínseca de la perforación desviada, demostrando que a mayor longitud de pozo, el avance vertical se desacelera. El modelo captura de forma sobresaliente esta tendencia geomecánica.