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>
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
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()
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
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()
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
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
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 \]
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"
)
| 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 |
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"
)
| Década.de.Perforación | Profundidad.Estimada..ft. |
|---|---|
| 1950 | 2253.98 |
| 1970 | 2404.14 |
| 1990 | 2430.00 |
| 2010 | 2331.54 |
| 2020 | 2235.70 |
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.