El presente informe estadístico analiza la variable Término de Perforación de pozos petroleros de Brasil, aplicando técnicas descriptivas e inferenciales.
Dado que la variable abarca casi un siglo (1920–2018), trabajar con años individuales generaría demasiado ruido estadístico. Por ello, agrupamos los datos en décadas. Esto nos permite visualizar la tendencia estructural y facilita el cálculo de probabilidades.
library(dplyr)
library(magrittr)
library(ggplot2)
library(gt)
library(lubridate)
library(MASS)
# Carga y Procesamiento
Datos_Brutos <- read.csv("C:/Users/LEO/Documents/ESTA/tabela_de_pocos_janeiro_2018.csv", header = TRUE, sep = ",", dec = ".", fileEncoding = "UTF-8-BOM")
colnames(Datos_Brutos) <- gsub("ï..", "", colnames(Datos_Brutos))
Datos <- Datos_Brutos %>%
mutate(
Fecha_Obj = as.Date(TERMINO, format = "%d/%m/%Y"),
Anio = year(Fecha_Obj)
) %>%
filter(!is.na(Anio) & Anio >= 1920 & Anio <= 2020)
X <- Datos$Anio
# Tabla de Frecuencias por décadas
breaks_dec <- seq(1920, 2020, by = 10)
h_total <- hist(X, breaks = breaks_dec, plot = FALSE)
TDF_General <- data.frame(
Decada = paste(head(breaks_dec, -1), tail(breaks_dec, -1), sep = "-"),
ni = h_total$counts,
hi = round((h_total$counts / sum(h_total$counts)) * 100, 2)
)
totales_simplificados <- c("TOTAL", sum(TDF_General$ni), 100)
TDF_Inferencial <- TDF_General %>% mutate(across(everything(), as.character))
TDF_Show_Simple <- rbind(TDF_Inferencial, totales_simplificados)
TDF_Show_Simple %>%
gt() %>%
tab_header(title = md("TABLA DE FRECUENCIAS: INFERENCIA ESTADÍSTICA"), subtitle = md("Variable: **Término de Perforación**")) %>%
tab_source_note(source_note = "Fuente: Tabela de Poços 2018") %>%
cols_label(Decada = "Periodo (Década)", ni = "Frecuencia Absoluta (ni)", hi = "Frecuencia Relativa (hi%)") %>%
cols_align(align = "center", columns = everything()) %>%
tab_style(style = list(cell_fill(color = "#2E4053"), cell_text(color = "white", weight = "bold")), locations = cells_title(groups = c("title", "subtitle"))) %>%
tab_style(style = list(cell_fill(color = "#F2F3F4"), cell_text(weight = "bold", color = "#2E4053")), locations = cells_column_labels())
| TABLA DE FRECUENCIAS: INFERENCIA ESTADÍSTICA | ||
| Variable: Término de Perforación | ||
| Periodo (Década) | Frecuencia Absoluta (ni) | Frecuencia Relativa (hi%) |
|---|---|---|
| 1920-1930 | 2 | 0.01 |
| 1930-1940 | 11 | 0.04 |
| 1940-1950 | 216 | 0.78 |
| 1950-1960 | 1018 | 3.67 |
| 1960-1970 | 2419 | 8.72 |
| 1970-1980 | 2893 | 10.43 |
| 1980-1990 | 9375 | 33.81 |
| 1990-2000 | 3382 | 12.2 |
| 2000-2010 | 4586 | 16.54 |
| 2010-2020 | 3827 | 13.8 |
| TOTAL | 27729 | 100 |
| Fuente: Tabela de Poços 2018 | ||
A continuación, presentamos el histograma de frecuencias.
col_barras <- "#5D6D7E"
col_ejes <- "#2E4053"
par(mar = c(10, 5, 4, 2))
bp <- barplot(TDF_General$ni, main = "Gráfica N°1: Distribución de Fecha de Término",
cex.main = 0.9, ylab = "Cantidad de Pozos", col = col_barras, border = "white",
axes = FALSE, axisnames = FALSE)
axis(2, col = col_ejes, col.axis = col_ejes)
axis(1, at = bp, labels = TDF_General$Decada, col = col_ejes, col.axis = col_ejes, las = 2, cex.axis = 0.9)
title(xlab = "Década", line = 8)
grid(nx = NA, ny = NULL, col = "#D7DBDD", lty = "dotted")
box(bty = "l", col = col_ejes)
Analizamos si la finalización de perforación sigue una distribución en el periodo 1970-2000 por lustros.
col_barras <- "#5D6D7E"
col_ejes <- "#2E4053"
# Filtro ampliado para el periodo 1970 - 2000
X1 <- X[X >= 1970 & X < 2000]
# Cambiamos el corte (breaks) para que vaya desde 1970 hasta 2000 cada 5 años
hist(X1,
breaks = seq(1970, 2000, by = 5),
col = col_barras,
border = "white",
main = "Histograma Sección 1 (1970–1999, por lustros)",
xlab = "Año",
ylab = "Frecuencia",
xaxt = "n")
# Marcadores del eje X cada 5 años
axis(1, at = seq(1970, 2000, by = 5), labels = seq(1970, 2000, by = 5))
Calculamos el parámetro λ (lambda) para comparar con los datos reales.
X1 <- X[X >= 1970 & X < 2000]
breaks_s1 <- seq(1970, 2000, by = 5)
h1 <- hist(X1, breaks = breaks_s1, plot = FALSE)
# Lambda ajustado restando el nuevo año base (1970)
lambda1 <- mean(X1 - 1970)
# Evaluamos los 6 periodos resultantes (de 0 a 5)
Fe1 <- dpois(0:5, lambda1/5)
Fe1 <- Fe1 / sum(Fe1)
Fo1 <- h1$counts / sum(h1$counts)
# Gráfica comparativa con las 6 barras emparejadas por lustro
barplot(rbind(Fo1, Fe1),
beside = TRUE,
col = c("#5D6D7E", "#F2F3F4"),
border = "black",
names.arg = c("1970-74", "1975-79", "1980-84", "1985-89", "1990-94", "1995-99"),
main = "Gráfica N°2: Modelo de Probabilidad de Fecha de Término (1970–1999)",
xlab = "Lustros",
ylab = "Probabilidad")
legend("topright", legend = c("Real", "Modelo Poisson"), fill = c("#5D6D7E", "#F2F3F4"), bty = "n")
## Test de Pearson ##
plot(Fo1, Fe1, main = "Gráfica N°3: Correlación de Pearson — Sección 1", xlab = "Frecuencia Observada", ylab = "Frecuencia Esperada", pch = 19, col = col_barras)
abline(lm(Fe1 ~ Fo1 + 0), col = "red", lwd = 2)
cor1 <- cor(Fo1, Fe1) * 100
cor1
## [1] 86.72922
x2_1 <- sum((Fo1 - Fe1)^2 / Fe1)
x2_1
## [1] 0.08312226
vc1 <- qchisq(0.95, length(Fo1) - 1)
vc1
## [1] 11.0705
tabla_1 <- data.frame(
Modelo = "Poisson",
Pearson = round(cor1, 2),
Chi_Cuadrado = round(x2_1, 4),
Umbral = round(vc1, 4),
Decision = ifelse(x2_1 < vc1, "Modelo aceptado", "Modelo rechazado") # <- ¡AQUÍ SE CORRIGIÓ VC1!
)
gt(tabla_1) %>%
tab_header(title = md("**Tabla N°2: Resumen Bondad de Ajuste Sección 1 (Poisson)**")) %>%
tab_source_note(source_note = "Autor: Ashly Alzate") %>%
cols_align(align = "center", columns = everything()) %>%
tab_style(
style = list(cell_fill(color = "#2E4053"), cell_text(color = "white", weight = "bold")),
locations = cells_title()
) %>%
tab_style(
style = list(cell_fill(color = "#F2F3F4"), cell_text(weight = "bold", color = "#2E4053")),
locations = cells_column_labels()
) %>%
tab_options(
table.border.top.color = "#2E4053",
table.border.bottom.color = "#2E4053",
column_labels.border.bottom.color = "#2E4053",
data_row.padding = px(6))
| Tabla N°2: Resumen Bondad de Ajuste Sección 1 (Poisson) | ||||
| Modelo | Pearson | Chi_Cuadrado | Umbral | Decision |
|---|---|---|---|---|
| Poisson | 86.73 | 0.0831 | 11.0705 | Modelo aceptado |
| Autor: Ashly Alzate | ||||
¿Cuál fue la probabilidad calculada de que un pozo terminara sus operaciones antes de 1980 en este modelo?
prob_s1 <- ppois(1979 - 1920, lambda = lambda1)
cat("La probabilidad calculada es del", round(prob_s1 * 100, 2), "%")
## La probabilidad calculada es del 100 %
Analizamos la segunda etapa.
X2 <- X[X >= 2000 & X <= 2020]
breaks_lustros <- seq(2000, 2020, by = 5)
h2 <- hist(X2, breaks = breaks_lustros, col = col_barras, border = "white", main = "Histograma Sección 2", xlab = "Año", ylab = "Frecuencia")
Estimamos el parámetro \(\lambda\) para determinar las frecuencias teóricas y contrastar el ajuste del modelo con la actividad observada en este periodo.
lambda2 <- mean(X2 - 2000); Fe2 <- dpois(0:3, lambda2/5); Fe2 <- Fe2 / sum(Fe2)
Fo2 <- h2$counts / sum(h2$counts)
barplot(rbind(Fo2, Fe2), beside = TRUE, col = c(col_barras, "#F2F3F4"), names.arg = c("00-05", "05-10", "10-15", "15-20"), main = "Gráfica N°5: Modelo Poisson", ylab = "Probabilidad")
legend("topright", legend = c("Real", "Modelo Poisson"), fill = c(col_barras, "#F2F3F4"), bty = "n")
plot(Fo2, Fe2, main = "Gráfica N°6: Correlación de Pearson — Sección 2", xlab = "Frecuencia Observada", ylab = "Frecuencia Esperada", pch = 19, col = col_barras)
abline(lm(Fe2 ~ Fo2 + 0), col = "red", lwd = 2)
cor2 <- cor(Fo2, Fe2) * 100
cor2
## [1] 90.14342
x2_2 <- sum((Fo2 - Fe2)^2 / Fe2)
x2_2
## [1] 0.1325778
vc2 <- qchisq(0.95, length(Fo2) - 1)
vc2
## [1] 7.814728
tabla_2 <- data.frame(
Modelo = "Poisson",
Pearson = round(cor2, 2),
Chi_Cuadrado = round(x2_2, 4),
Umbral = round(vc2, 4),
Decision = ifelse(x2_2 < vc2, "Modelo aceptado", "Modelo rechazado")
)
gt(tabla_2) %>%
tab_header(title = md("**Tabla N°3: Resumen Bondad de Ajuste Sección 2 (Poisson)**")) %>%
tab_source_note(source_note = "Autor: Ashly Alzate") %>%
cols_align(align = "center", columns = everything()) %>%
tab_style(
style = list(cell_fill(color = "#2E4053"), cell_text(color = "white", weight = "bold")),
locations = cells_title()
) %>%
tab_style(
style = list(cell_fill(color = "#F2F3F4"), cell_text(weight = "bold", color = "#2E4053")),
locations = cells_column_labels()
) %>%
tab_options(
table.border.top.color = "#2E4053",
table.border.bottom.color = "#2E4053",
column_labels.border.bottom.color = "#2E4053",
data_row.padding = px(6))
| Tabla N°3: Resumen Bondad de Ajuste Sección 2 (Poisson) | ||||
| Modelo | Pearson | Chi_Cuadrado | Umbral | Decision |
|---|---|---|---|---|
| Poisson | 90.14 | 0.1326 | 7.8147 | Modelo aceptado |
| Autor: Ashly Alzate | ||||
¿Cuál fue la probabilidad calculada de que un pozo terminara sus operaciones antes de 2010 en este modelo?
prob_s2 <- ppois(1, lambda = lambda2/4)
cat("La probabilidad calculada es del", round(prob_s2 * 100, 2), "%")
## La probabilidad calculada es del 31.36 %
Los valores de la variable Término de Perforación fluctúan entre 1922 y 2018 y giran en torno a una tendencia estructural que concentra la mayor parte de las finalizaciones de operaciones en las décadas más recientes. Esto denota una dinámica de cierre y culminación de proyectos alineada con la evolución de la actividad exploratoria moderna.