1 Introducción y Metodología

El presente informe estadístico analiza la variable Término de Perforación de pozos petroleros de Brasil, aplicando técnicas descriptivas e inferenciales.

2 Tabla de Distribución de Frecuencia

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

3 Gráficas

3.1 Diagrama de Barras (Escala Local)

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)

4 Agrupación 1

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))

4.1 Conjetura del Modelo

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

4.2 Test de Chi-Cuadrado

x2_1 <- sum((Fo1 - Fe1)^2 / Fe1)
x2_1
## [1] 0.08312226
vc1  <- qchisq(0.95, length(Fo1) - 1)
vc1
## [1] 11.0705

4.3 Tabla Resumen de Test

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

4.4 Cálculo de Probabilidades (Sección 1)

¿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 %

5 Agrupación 2

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")

5.1 Conjetura del Modelo

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")

5.2 Test de Pearson

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

5.3 Test de Chi-Cuadrado

x2_2 <- sum((Fo2 - Fe2)^2 / Fe2)
x2_2
## [1] 0.1325778
vc2  <- qchisq(0.95, length(Fo2) - 1)
vc2
## [1] 7.814728

5.4 Tabla Resumen de Test

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

5.5 Cálculo de Probabilidades

¿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 %

6 Conclusiones

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.