1. Configuración y Carga de Datos

En esta sección se prepara el entorno de trabajo y se carga el conjunto de datos correspondiente a los pozos petroleros. Posteriormente se verifica su estructura para confirmar que las variables requeridas se encuentran disponibles para el análisis.

# Cargar el conjunto de datos

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

# Visualizar estructura

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: 0x000001fd3f6f6f10>

2. Extracción y Depuración de Variables

Para el modelo polinómico se utiliza como variable independiente (X) la Década de Perforación (Completion Decade) y como variable dependiente (Y) la Profundidad Perforada (Drilled Depth, ft). Posteriormente se eliminan los registros con valores faltantes y aquellos cuya profundidad es menor o igual a cero.

datos_modelo <- datos_originales %>%
  transmute(
    X = as.numeric(gsub("s", "", `Completion Decade`)),
    Y = as.numeric(`Drilled Depth, ft`)
  ) %>%
  drop_na() %>%
  filter(X >= 1860, Y > 0)

head(datos_modelo)
## # A tibble: 6 × 2
##       X     Y
##   <dbl> <dbl>
## 1  1950  2006
## 2  2010  1800
## 3  1990  1445
## 4  1980  2135
## 5  1980  2070
## 6  1900   927

3. Análisis Gráfico Exploratorio

El gráfico de dispersión permite observar la relación entre la década de perforación y la profundidad perforada, identificando posibles tendencias y comportamientos no lineales.

ggplot(datos_modelo, aes(x = X, y = Y)) +
  geom_point(
    color = "#2c3e50",
    alpha = 0.20
  ) +
  labs(
    title = "Gráfica N.° 1. Década de Perforación vs Profundidad Perforada",
    x = "Década de Perforación",
    y = "Profundidad Perforada (ft)"
  ) +
  theme_minimal()

4. Conjetura del Modelo

Se plantea un modelo de regresión polinómica de segundo grado para describir la relación entre las variables.

\[ \hat{Y}=\beta_0+\beta_1X+\beta_2X^2 \]

donde:

modelo_poli <- lm(
  Y ~ poly(X, 2, raw = TRUE),
  data = datos_modelo
)

summary(modelo_poli)
## 
## Call:
## lm(formula = Y ~ poly(X, 2, raw = TRUE), data = datos_modelo)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2422.6  -930.0  -368.6   870.3  9763.7 
## 
## Coefficients:
##                           Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             -6.093e+05  3.738e+04  -16.30   <2e-16 ***
## poly(X, 2, raw = TRUE)1  6.166e+02  3.808e+01   16.19   <2e-16 ***
## poly(X, 2, raw = TRUE)2 -1.554e-01  9.697e-03  -16.02   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1284 on 22002 degrees of freedom
## Multiple R-squared:  0.02838,    Adjusted R-squared:  0.02829 
## F-statistic: 321.3 on 2 and 22002 DF,  p-value: < 2.2e-16

5. Gráfica del Modelo Polinómico

En esta sección se representa la curva de regresión polinómica sobre el conjunto de datos para evaluar visualmente el ajuste obtenido.

ggplot(datos_modelo, aes(x = X, y = Y)) +
  geom_point(
    alpha = 0.15,
    color = "gray60"
  ) +
  geom_smooth(
    method = "lm",
    formula = y ~ poly(x,2),
    color = "#d35400",
    linewidth = 1.2
  ) +
  labs(
    title = "Gráfica N.° 2. Ajuste del Modelo de Regresión Polinómica",
    x = "Década de Perforación",
    y = "Profundidad Perforada (ft)"
  ) +
  theme_minimal()

6. Bondad del Modelo

6.1 Coeficiente de Correlación de Pearson

Se calcula el coeficiente de correlación de Pearson para medir la intensidad de la relación lineal entre la década de perforación y la profundidad perforada.

cor_p <- cor(
  datos_modelo$X,
  datos_modelo$Y
)

cat(
  "Coeficiente de correlación de Pearson =",
  round(cor_p,4)
)
## Coeficiente de correlación de Pearson = 0.1305

6.2 Coeficiente de Determinación (R²)

El coeficiente de determinación indica la proporción de la variabilidad de la profundidad perforada que es explicada por el modelo polinómico.

r2 <- summary(modelo_poli)$r.squared

cat(
  "Coeficiente de determinación (R²) =",
  round(r2,4)
)
## Coeficiente de determinación (R²) = 0.0284

7. Ecuación del Modelo

A partir de los coeficientes estimados se obtiene la ecuación de regresión polinómica, la cual permite estimar la profundidad perforada en función de la década de perforación.

coeficientes <- coef(modelo_poli)

cat("Intercepto =", round(coeficientes[1], 4), "\n")
## Intercepto = -609301.6
cat("β₁ =", round(coeficientes[2], 4), "\n")
## β₁ = 616.6206
cat("β₂ =", round(coeficientes[3], 6), "\n")
## β₂ = -0.155386
cat("\n")
cat(
  "Modelo estimado:\nŶ =",
  round(coeficientes[1],4),
  "+",
  round(coeficientes[2],4),
  "* X +",
  round(coeficientes[3],6),
  "* X²"
)
## Modelo estimado:
## Ŷ = -609301.6 + 616.6206 * X + -0.155386 * X²

La ecuación general del modelo es:

\[ \hat{Y}=\beta_0+\beta_1X+\beta_2X^2 \]

8. Resumen del Modelo

A continuación se presentan los coeficientes estimados del modelo polinómico, junto con sus errores estándar, estadísticos de prueba y valores p, permitiendo evaluar la significancia estadística de cada parámetro.

tabla_coeficientes <- summary(modelo_poli) %>%
  tidy() %>%
  mutate(
    term = c(
      "β₀ (Intercepto)",
      "β₁ (Década de Perforación)",
      "β₂ (Década²)"
    )
  ) %>%
  rename(
    Coeficiente = term,
    Estimación = estimate,
    `Error Estándar` = std.error,
    `Estadístico t` = statistic,
    `p-valor` = p.value
  )

tabla_coeficientes %>%
  kable(
    digits = 4,
    caption = "Tabla N.° 1. Coeficientes del Modelo de Regresión Polinómica",
    format = "html"
  ) %>%
  kable_styling(
    bootstrap_options = c("striped","hover","condensed"),
    full_width = FALSE
  ) %>%
  row_spec(
    0,
    bold = TRUE,
    color = "white",
    background = "#2c3e50"
  )
Tabla N.° 1. Coeficientes del Modelo de Regresión Polinómica
Coeficiente Estimación Error Estándar Estadístico t p-valor
β₀ (Intercepto) -609301.6311 37382.2617 -16.2992 0
β₁ (Década de Perforación) 616.6206 38.0808 16.1924 0
β₂ (Década²) -0.1554 0.0097 -16.0243 0

9. Estimaciones

Con la ecuación obtenida se realizan estimaciones de la profundidad perforada para distintas décadas de perforación.

nuevos_escenarios <- data.frame(
  X = c(1950, 1970, 1990, 2010, 2020)
)

predicciones <- predict(
  modelo_poli,
  nuevos_escenarios
)

tabla_predicciones <- data.frame(
  `Década de Perforación` = nuevos_escenarios$X,
  `Profundidad Estimada (ft)` = round(predicciones,2)
)

tabla_predicciones %>%
  kable(
    caption = "Tabla N.° 2. Estimaciones del Modelo Polinómico",
    format = "html"
  ) %>%
  kable_styling(
    bootstrap_options = c("striped","bordered"),
    full_width = FALSE
  ) %>%
  row_spec(
    0,
    bold = TRUE,
    color = "white",
    background = "#16a085"
  )
Tabla N.° 2. Estimaciones del Modelo Polinómico
Década.de.Perforación Profundidad.Estimada..ft.
1950 2253.98
1970 2404.14
1990 2430.00
2010 2331.54
2020 2235.70

10. Conclusiones

El modelo de regresión polinómica de segundo grado permitió analizar la relación entre la Década de Perforación y la Profundidad Perforada de los pozos registrados en el conjunto de datos.

El coeficiente de determinación (R²) indica el porcentaje de la variabilidad de la profundidad perforada que es explicado por el modelo, mientras que el coeficiente de correlación de Pearson muestra la intensidad de la asociación entre ambas variables.

Finalmente, la ecuación obtenida constituye una herramienta útil para realizar estimaciones de la profundidad perforada esperada para diferentes décadas de perforación, describiendo la tendencia histórica observada en los datos.