1. Configuración y Carga de Datos

Se efectúa la carga del conjunto de datos histórico correspondiente a pozos petroleros, de gas y otros pozos regulados registrados desde el año 1860. Esta base de datos estructurada constituye la fuente primaria de información para el análisis estadístico, permitiendo la identificación de las variables de perforación necesarias para el ajuste del modelo.

datos_originales <- readr::read_csv2(
  "Oil__Gas____Other_Regulated_Wells__Beginning_1860.csv",
  locale = readr::locale(encoding = "Latin1")
)

str(datos_originales)
## spc_tbl_ [47,407 × 55] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ API Well Number               : num [1:47407] 3.10e+15 3.10e+15 3.10e+15 3.10e+15 3.11e+15 ...
##  $ County Code                   : num [1:47407] 3 3 3 3 101 121 121 121 101 101 ...
##  $ API Hole Number               : num [1:47407] 2670 4599 4842 5419 26525 ...
##  $ Sidetrack                     : num [1:47407] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Completion                    : num [1:47407] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Well Name                     : chr [1:47407] "Francisco 1" "Francisco 1" "Guyer Devonian #10" "Regan 2142" ...
##  $ Company Name                  : chr [1:47407] "Van Gilder" "Christman Raymond L." "Pennzoil Products Co." "Iroquois Gas Corp." ...
##  $ Operator Number               : num [1:47407] 9279 9111 29 16 2261 ...
##  $ Well Type                     : chr [1:47407] "DW" "OW" "NL" "GD" ...
##  $ Map Symbol                    : chr [1:47407] "DP" "OW" "O" "GWP" ...
##  $ Well Status                   : chr [1:47407] "PA" "UN" "VP" "PA" ...
##  $ Status Date                   : chr [1:47407] NA NA NA NA ...
##  $ Permit Application Date       : chr [1:47407] NA NA NA NA ...
##  $ Permit Issued Date            : chr [1:47407] NA NA NA NA ...
##  $ Date Spudded                  : chr [1:47407] "03/11/1953" NA NA NA ...
##  $ Date of Total Depth           : chr [1:47407] NA NA NA NA ...
##  $ Completion Decade             : chr [1:47407] "1950s" NA NA NA ...
##  $ Completion Year               : chr [1:47407] "1953" NA NA NA ...
##  $ Completion Month              : chr [1:47407] "4" NA NA NA ...
##  $ Completion Day                : chr [1:47407] "10" NA NA NA ...
##  $ Date Well Plugged             : chr [1:47407] NA NA NA NA ...
##  $ Date Well Confidentiality Ends: chr [1:47407] NA NA NA NA ...
##  $ Confidentiality Code          : chr [1:47407] "Pre-1989 Well (N/A)" "Pre-1989 Well (N/A)" "Pre-1989 Well (N/A)" "Pre-1989 Well (N/A)" ...
##  $ Town                          : chr [1:47407] "Amity" "Amity" NA "Alma" ...
##  $ Quad                          : chr [1:47407] "Belmont" "Belmont" NA "Wellsville South" ...
##  $ Quad Section                  : chr [1:47407] "F" "F" NA "D" ...
##  $ Producing Field               : chr [1:47407] NA NA NA NA ...
##  $ Producing Formation           : chr [1:47407] NA NA NA NA ...
##  $ Financial Security            : logi [1:47407] FALSE FALSE FALSE FALSE TRUE TRUE ...
##  $ Slant                         : chr [1:47407] "Vertical" "Vertical" "Vertical" "Vertical" ...
##  $ County                        : chr [1:47407] "Allegany" "Allegany" NA "Allegany" ...
##  $ Region                        : num [1:47407] 9 9 9 9 8 9 9 9 8 8 ...
##  $ State Lease                   : chr [1:47407] NA NA NA NA ...
##  $ Proposed Depth, ft            : num [1:47407] 0 0 NA 0 1800 ...
##  $ Surface Longitude             : num [1:47407] -7.80e+16 -7.80e+16 NA -7.80e+16 -7.77e+16 ...
##  $ Surface Latitude              : num [1:47407] 4.22e+16 4.22e+16 NA 4.21e+05 4.21e+16 ...
##  $ Bottom Hole Longitude         : num [1:47407] -7.80e+16 -7.80e+16 NA -7.80e+16 -7.77e+16 ...
##  $ Bottom Hole Latitude          : num [1:47407] 4.22e+16 4.22e+16 NA 4.21e+05 4.21e+16 ...
##  $ True Vertical Depth, ft       : num [1:47407] 2006 0 0 0 1800 ...
##  $ Measured Depth, ft            : num [1:47407] 2006 0 0 0 1800 ...
##  $ Kickoff, ft                   : num [1:47407] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Drilled Depth, ft             : num [1:47407] 2006 0 0 0 1800 ...
##  $ Elevation, ft                 : num [1:47407] 1815 1520 NA 2100 2260 ...
##  $ Original Well Type            : chr [1:47407] "NL" "NL" "NL" "NL" ...
##  $ Permit Fee                    : num [1:47407] 0 0 0 0 860 475 0 725 0 0 ...
##  $ Objective Formation           : chr [1:47407] NA NA NA NA ...
##  $ Depth Fee                     : num [1:47407] 0 0 0 0 760 375 0 625 0 0 ...
##  $ Spacing                       : chr [1:47407] NA NA NA NA ...
##  $ Spacing Acres                 : num [1:47407] NA NA NA NA NA NA NA NA NA NA ...
##  $ Integration                   : chr [1:47407] NA NA NA NA ...
##  $ Hearing Date                  : chr [1:47407] NA NA NA NA ...
##  $ Date Last Modified            : chr [1:47407] "10/12/1995 0:00" "01/24/2003 03:53:37 PM" "12/27/2013 03:00:05 PM" "02/28/1995 12:00:00 AM" ...
##  $ DEC Database Link             : chr [1:47407] "http://extapps.dec.ny.gov/cfmx/extapps/GasOil/search/wells/index.cfm?api=31003026700000" "http://extapps.dec.ny.gov/cfmx/extapps/GasOil/search/wells/index.cfm?api=31003045990000" "http://extapps.dec.ny.gov/cfmx/extapps/GasOil/search/wells/index.cfm?api=31003048420000" "http://extapps.dec.ny.gov/cfmx/extapps/GasOil/search/wells/index.cfm?api=31003054190000" ...
##  $ Location 1                    : chr [1:47407] "(42.19713, -78.01913)" "(42.20221, -78.02615)" NA "(42.0702, -77.97909)" ...
##  $ Georeference                  : chr [1:47407] "POINT (-78.01913 42.19713)" "POINT (-78.02615 42.20221)" NA "POINT (-77.97909 42.0702)" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   `API Well Number` = col_number(),
##   ..   `County Code` = col_double(),
##   ..   `API Hole Number` = col_double(),
##   ..   Sidetrack = col_double(),
##   ..   Completion = col_double(),
##   ..   `Well Name` = col_character(),
##   ..   `Company Name` = col_character(),
##   ..   `Operator Number` = col_double(),
##   ..   `Well Type` = col_character(),
##   ..   `Map Symbol` = col_character(),
##   ..   `Well Status` = col_character(),
##   ..   `Status Date` = col_character(),
##   ..   `Permit Application Date` = col_character(),
##   ..   `Permit Issued Date` = col_character(),
##   ..   `Date Spudded` = col_character(),
##   ..   `Date of Total Depth` = col_character(),
##   ..   `Completion Decade` = col_character(),
##   ..   `Completion Year` = col_character(),
##   ..   `Completion Month` = col_character(),
##   ..   `Completion Day` = col_character(),
##   ..   `Date Well Plugged` = col_character(),
##   ..   `Date Well Confidentiality Ends` = col_character(),
##   ..   `Confidentiality Code` = col_character(),
##   ..   Town = col_character(),
##   ..   Quad = col_character(),
##   ..   `Quad Section` = col_character(),
##   ..   `Producing Field` = col_character(),
##   ..   `Producing Formation` = col_character(),
##   ..   `Financial Security` = col_logical(),
##   ..   Slant = col_character(),
##   ..   County = col_character(),
##   ..   Region = col_double(),
##   ..   `State Lease` = col_character(),
##   ..   `Proposed Depth, ft` = col_double(),
##   ..   `Surface Longitude` = col_double(),
##   ..   `Surface Latitude` = col_double(),
##   ..   `Bottom Hole Longitude` = col_double(),
##   ..   `Bottom Hole Latitude` = col_double(),
##   ..   `True Vertical Depth, ft` = col_double(),
##   ..   `Measured Depth, ft` = col_double(),
##   ..   `Kickoff, ft` = col_double(),
##   ..   `Drilled Depth, ft` = col_double(),
##   ..   `Elevation, ft` = col_double(),
##   ..   `Original Well Type` = col_character(),
##   ..   `Permit Fee` = col_double(),
##   ..   `Objective Formation` = col_character(),
##   ..   `Depth Fee` = col_double(),
##   ..   Spacing = col_character(),
##   ..   `Spacing Acres` = col_number(),
##   ..   Integration = col_character(),
##   ..   `Hearing Date` = col_character(),
##   ..   `Date Last Modified` = col_character(),
##   ..   `DEC Database Link` = col_character(),
##   ..   `Location 1` = col_character(),
##   ..   Georeference = col_character()
##   .. )
##  - attr(*, "problems")=<pointer: 0x000001e3881ff720>

2. Extracción y Depuración de Variables

Se extraen y depuran las dos variables continuas de interés para el análisis estadístico:

  • Variable independiente (X): measured_depth — Profundidad medida del pozo (Measured Depth), expresada en pies (ft). Representa la longitud total recorrida por la perforación siguiendo la trayectoria del pozo.

  • Variable dependiente (Y): tvd — Profundidad vertical verdadera (True Vertical Depth), expresada en pies (ft). Corresponde a la distancia vertical desde la superficie terrestre hasta el punto final del pozo.

Posteriormente, ambas variables se convierten al tipo de dato numérico y se eliminan los registros que presentan valores faltantes (NA), garantizando la calidad y consistencia de la información utilizada en el ajuste del modelo de regresión.

datos_modelo <- datos_originales %>%
  select(
    tvd = `True Vertical Depth, ft`,
    measured_depth = `Measured Depth, ft`
  ) %>%
  mutate(
    tvd = as.numeric(tvd),
    measured_depth = as.numeric(measured_depth)
  ) %>%
  drop_na()

# Creación del resumen estadístico transformado
resumen_stats <- summary(datos_modelo) %>%
  as.data.frame() %>%
  select(-Var1) %>%        # Elimina la columna Var1
  separate(Freq, into = c("Stat", "Valor"), sep = ":") %>%
  mutate(across(c(Stat, Valor), str_trim)) %>%
  filter(!is.na(Stat)) %>%
  pivot_wider(names_from = Var2, values_from = Valor)

resumen_stats %>%
  gt() %>%
  estilizar_tabla_imagen("Tabla N°1: Resumen Estadístico de las Variables Depuradas")
Tabla N°1: Resumen Estadístico de las Variables Depuradas
Stat tvd measured_depth
Min. 0 0
1st Qu. 0 0
Median 1253 1255
Mean 1429 1451
3rd Qu. 1943 1949
Max. 11953 15921
Autor: Jennifer Cordones

3. Análisis Gráfico Exploratorio

Se elabora un diagrama de dispersión inicial para evaluar visualmente el comportamiento, la dispersión y la tendencia geométrica de los datos de trayectoria de los pozos, permitiendo identificar de forma preliminar si existe una correspondencia directa entre ambas magnitudes antes de proceder con el modelamiento.

ggplot(datos_modelo, aes(x = measured_depth, y = tvd)) +
  geom_point(color = "steelblue", alpha = 0.5) +
  labs(
    title = "Gráfica N°1. Dispersión entre TVD y Measured Depth",
    x = "Measured Depth (ft)",
    y = "True Vertical Depth (ft)"
  ) +
  theme_minimal()

4. Conjetura del Modelo

A partir del patrón lineal identificado en la fase exploratoria y los fundamentos geométricos de la perforación de pozos, se plantea la hipótesis de una relación lineal directa. Se formula matemáticamente un modelo de regresión lineal simple mediante el método de mínimos cuadrados ordinarios para cuantificar la influencia de la longitud medida sobre la profundidad vertical verdadera.

modelo_lineal <- lm(
  tvd ~ measured_depth,
  data = datos_modelo
)

5. Gráfica del Modelo Lineal

Se proyecta la recta de regresión lineal estimada sobre la nube de datos observados en el yacimiento. Esta representación gráfica incluye la banda sombreada asociada al intervalo de confianza al 95%, facilitando la evaluación visual de la precisión del ajuste y las desviaciones operacionales del pozo respecto a la tendencia central.

ggplot(datos_modelo, aes(x = measured_depth, y = tvd)) +
  geom_point(color = "gray50", alpha = 0.5) +
  geom_smooth(method = "lm", color = "red", se = TRUE) +
  labs(
    title = "Gráfica N°2. Ajuste del Modelo de Regresión Lineal",
    x = "Measured Depth (ft)",
    y = "True Vertical Depth (ft)"
  ) +
  theme_minimal()

6. Test de Bondad del Modelo

6.1 Correlación de Pearson

Se calcula el coeficiente de correlación de Pearson con el propósito de cuantificar matemáticamente la fuerza, consistencia y dirección de la asociación lineal existente entre la trayectoria medida y la profundidad vertical verdadera observada.

correlacion <- cor(datos_modelo$measured_depth, datos_modelo$tvd, method = "pearson")

data.frame(
  Indicador = c("Coeficiente de Correlación (r)", "Fuerza de la Relación", "Dirección"),
  Valor = c(round(correlacion, 6), "Muy Fuerte", "Positiva")
) %>%
  gt() %>%
  estilizar_tabla_imagen(
    titulo = "Tabla N°2: Coeficiente de Correlación de Pearson",
    subtitulo = "Evaluación de la asociación lineal básica"
  )
Tabla N°2: Coeficiente de Correlación de Pearson
Evaluación de la asociación lineal básica
Indicador Valor
Coeficiente de Correlación (r) 0.985801
Fuerza de la Relación Muy Fuerte
Dirección Positiva
Autor: Jennifer Cordones

6.2 Coeficiente de Determinación

Se analiza la variabilidad global explicada por el modelo ajustado y los estadísticos de contraste para contrastar la significancia general del proceso mediante la evaluación de hipótesis del análisis de varianza.

r_sum <- summary(modelo_lineal)
r2 <- r_sum$r.squared
r2_adj <- r_sum$adj.r.squared
f_stat <- r_sum$fstatistic[1]
p_val <- pf(f_stat, r_sum$fstatistic[2], r_sum$fstatistic[3], lower.tail = FALSE)

df_determinacion <- data.frame(
  Indicador = c("R² (determinación)", "R² Ajustado", "Variabilidad explicada (%)", 
                "Variabilidad residual (%)", "Estadístico F", "p-valor (F)", "Conclusión (α = 0.05)"),
  Valor = c(sprintf("%.6f", r2), sprintf("%.6f", r2_adj), 
            paste0(round(r2 * 100, 4), " %"), paste0(round((1 - r2) * 100, 4), " %"),
            sprintf("%.4f", f_stat), if(p_val < 2e-16) "<2e-16" else sprintf("%.4e", p_val),
            "SE RECHAZA H₀ — el modelo es globalmente significativo")
)

df_determinacion %>%
  gt() %>%
  estilizar_tabla_imagen(
    titulo = "Tabla N°3: Coeficiente de Determinación — Modelo Lineal",
    subtitulo = "H₀: β₁ = 0 vs H₁: al menos un β₁ ≠ 0"
  ) %>%
  # Resaltar la fila de la conclusión en un tono gris claro destacado, tal como en la imagen
  tab_style(
    style = list(
      cell_fill(color = "#EAEAEA"),
      cell_text(weight = "bold")
    ),
    locations = cells_body(rows = Indicador == "Conclusión (α = 0.05)")
  )
Tabla N°3: Coeficiente de Determinación — Modelo Lineal
H₀: β₁ = 0 vs H₁: al menos un β₁ ≠ 0
Indicador Valor
R² (determinación) 0.971803
R² Ajustado 0.971803
Variabilidad explicada (%) 97.1803 %
Variabilidad residual (%) 2.8197 %
Estadístico F 1632864.5294
p-valor (F) <2e-16
Conclusión (α = 0.05) SE RECHAZA H₀ — el modelo es globalmente significativo
Autor: Jennifer Cordones

7. Ecuación del Modelo

Se extraen los parámetros y coeficientes óptimos calculados para construir formalmente la ecuación matemática determinista del modelo. El intercepto denota el valor de partida proyectado en la vertical, mientras que la pendiente establece la tasa de cambio o incremento unitario en pies verticales esperados por cada pie de longitud de perforación total.

coeficientes <- coef(modelo_lineal)
intercepto <- coeficientes[1]
pendiente <- coeficientes[2]

data.frame(
  Componente = c("Intercepto (β₀)", "Pendiente (β₁)"),
  Valor_Estimado = c(round(intercepto, 4), round(pendiente, 4)),
  Interpretacion = c("Valor estimado de TVD si Measured Depth es 0", 
                     "Cambio incremental en TVD por cada pie de Measured Depth")
) %>%
  gt() %>%
  estilizar_tabla_imagen("Tabla N°4: Parámetros de la Ecuación")
Tabla N°4: Parámetros de la Ecuación
Componente Valor_Estimado Interpretacion
Intercepto (β₀) 70.837 Valor estimado de TVD si Measured Depth es 0
Pendiente (β₁) 0.936 Cambio incremental en TVD por cada pie de Measured Depth
Autor: Jennifer Cordones

8. Resumen del Modelo

Se expone el desglose analítico riguroso de la regresión, detallando los errores estándar, estadísticos de contraste t de Student y niveles críticos de significancia (p-valores) para cada parámetro estimado, lo cual valida formalmente la certidumbre estadística del ajuste.

resumen_coef <- as.data.frame(summary(modelo_lineal)$coefficients)
resumen_coef$Variable <- rownames(resumen_coef)
resumen_coef <- resumen_coef %>% select(Variable, everything())

resumen_coef %>%
  gt() %>%
  estilizar_tabla_imagen("Tabla N°5: Resumen Analítico de los Coeficientes del Modelo") %>%
  cols_label(
    Variable = "Variable",
    Estimate = "Estimación",
    `Std. Error` = "Error Estándar",
    `t value` = "Estadístico t",
    `Pr(>|t|)` = "p-valor"
  )
Tabla N°5: Resumen Analítico de los Coeficientes del Modelo
Variable Estimación Error Estándar Estadístico t p-valor
(Intercept) 70.8370327 1.5670531484 45.20398 0
measured_depth 0.9360197 0.0007325038 1277.83588 0
Autor: Jennifer Cordones

9. Estimaciones

Se realizan estimaciones puntuales de la profundidad vertical verdadera esperada para distintos escenarios de profundidad medida en el desarrollo del pozo, empleando el modelo lineal ajustado, e incorporando un intervalo de confianza al 95% para establecer los rangos probabilísticos de la predicción.

nuevos_valores <- data.frame(measured_depth = c(5000, 7500, 10000))
predicciones <- predict(modelo_lineal, newdata = nuevos_valores, interval = "confidence")
tabla_estimaciones <- cbind(nuevos_valores, predicciones)

tabla_estimaciones %>%
  gt() %>%
  estilizar_tabla_imagen("Tabla N°6: Estimaciones de TVD con Intervalos de Confianza (95%)") %>%
  cols_label(
    measured_depth = "Measured Depth (ft)",
    fit = "Predicción TVD (ft)",
    lwr = "Límite Inferior (lwr)",
    upr = "Límite Superior (upr)"
  ) %>%
  fmt_number(columns = everything(), decimals = 2)
Tabla N°6: Estimaciones de TVD con Intervalos de Confianza (95%)
Measured Depth (ft) Predicción TVD (ft) Límite Inferior (lwr) Límite Superior (upr)
5,000.00 4,750.94 4,745.36 4,756.51
7,500.00 7,090.98 7,082.01 7,099.96
10,000.00 9,431.03 9,418.55 9,443.51
Autor: Jennifer Cordones

10. Conclusiones

Entre la Profundidad Medida (Measured Depth, ft) y la Profundidad Vertical Verdadera (True Vertical Depth, ft) existe una relación lineal positiva fuerte, con un coeficiente de correlación de r = 0.9858.

El modelo presenta un coeficiente de determinación \(R^2 = 0.9718\), lo que indica que el 97.18 % de la variabilidad de la Profundidad Vertical Verdadera es explicada por la Profundidad Medida.

La ecuación del modelo es:

\[TVD = 70.837 + 0.936 \times Measured\ Depth\]

En consecuencia, el modelo de regresión lineal proporciona un ajuste adecuado para describir y estimar la relación entre ambas variables.