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)
Datos_Brutos <- read.csv("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(INICIO, format = "%d/%m/%Y"), Anio = year(Fecha_Obj)) %>%
filter(!is.na(Anio) & Anio >= 1920 & Anio <= 2020)
X <- Datos$Anio
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_Show_Simple <- rbind(mutate(TDF_General, across(everything(), as.character)), totales_simplificados)
TDF_Show_Simple %>%
gt() %>%
tab_header(title = md("TABLA DE FRECUENCIAS: INFERENCIA ESTADÍSTICA"), subtitle = md("Variable: **Inicio 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: Inicio de Perforación | ||
| Periodo (Década) | Frecuencia Absoluta (ni) | Frecuencia Relativa (hi%) |
|---|---|---|
| 1920-1930 | 2 | 0.01 |
| 1930-1940 | 15 | 0.05 |
| 1940-1950 | 218 | 0.74 |
| 1950-1960 | 1047 | 3.54 |
| 1960-1970 | 2398 | 8.11 |
| 1970-1980 | 2932 | 9.91 |
| 1980-1990 | 9348 | 31.61 |
| 1990-2000 | 3654 | 12.36 |
| 2000-2010 | 6079 | 20.55 |
| 2010-2020 | 3882 | 13.13 |
| TOTAL | 29575 | 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 Inicio",
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 la actividad exploratoria entre 1920 y 1979 para determinar si la frecuencia de perforaciones mantuvo una tendencia estable o presentó variaciones significativas en este periodo.
par(mar = c(8, 5, 4, 2))
col_barras <- "#5D6D7E"
col_ejes <- "#2E4053"
X1 <- X[X >= 1920 & X < 1991]
breaks_s1 <- seq(1920, 1990, by = 10)
h1_data <- hist(X1, breaks = breaks_s1, plot = FALSE)
etiquetas_1 <- paste(head(breaks_s1, -1), tail(breaks_s1, -1), sep="-")
bp1 <- barplot(h1_data$counts,
names.arg = etiquetas_1,
col = col_barras,
border = "white",
main = "Gráfica: Distribución de Frecuencia (1920-1990)",
ylab = "Frecuencia",
las = 2,
cex.names = 0.8,
axes = FALSE)
axis(2, col = col_ejes, col.axis = col_ejes)
axis(1, at = bp1, labels = etiquetas_1, col = col_ejes, col.axis = col_ejes, las = 2, cex.axis = 0.8)
title(xlab = "Periodo (Década)", line = 6)
grid(nx = NA, ny = NULL, col = "#D7DBDD", lty = "dotted")
box(bty = "l", col = col_ejes)
X1 <- X[X >= 1920 & X < 1991]
h1 <- hist(X1, breaks = seq(1920, 1990, by = 10), plot = FALSE)
ajuste <- fitdistr(X1 - 1920, "negative binomial")
size_p <- ajuste$estimate["size"]
mu_p <- ajuste$estimate["mu"]
# Cálculo exacto basado en la distribución ajustada para cada barra del histograma
Fe1 <- dnbinom(0:(length(h1$counts) - 1), size = size_p, mu = mu_p)
Fe1 <- Fe1 / sum(Fe1)
Fo1 <- h1$counts / sum(h1$counts)
# Gráfica
barplot(rbind(Fo1, Fe1),
beside = TRUE,
col = c("#5D6D7E", "#F2F3F4"),
border = "black",
names.arg = paste0(seq(1920, 1980, by=10), "s"),
main = "Gráfica N°2: Comparativa Modelo Binomial Negativa",
ylab = "Probabilidad")
legend("topleft", legend = c("Real", "Modelo Binomial Negativa"), fill = c("#5D6D7E", "#F2F3F4"), bty = "n")
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 <- abs(cor(Fo1, Fe1)) * 100
x2_1 <- sum((Fo1 - Fe1)^2 / Fe1)
x2_1
## [1] 2.724907
vc1 <- qchisq(0.95, length(Fo1) - 2)
vc1
## [1] 11.0705
tabla_1 <- data.frame(
Modelo = "Binomial Negativa",
Pearson = round(cor1, 2),
Chi_Cuadrado = round(x2_1, 4),
Umbral = round(vc1, 4),
Decision = ifelse(x2_1 < vc1, "Modelo aceptado", "Modelo rechazado")
)
gt(tabla_1) %>%
tab_header(title = md("**Tabla N°2: Resumen Bondad de Ajuste Sección 1 (Binomial Negativa)**")) %>%
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 (Binomial Negativa) | ||||
| Modelo | Pearson | Chi_Cuadrado | Umbral | Decision |
|---|---|---|---|---|
| Binomial Negativa | 97.14 | 2.7249 | 11.0705 | Modelo aceptado |
| Autor: Ashly Alzate | ||||
Calculamos la probabilidad de que un pozo inicie antes de 1991 (60 años después de 1920)
mu_p <- ajuste$estimate["mu"]
prob_s1 <- pnbinom(1990 - 1920, size = size_p, mu = mu_p)
cat("La probabilidad calculada es del", round(prob_s1 * 100, 2), "%")
## La probabilidad calculada es del 87.52 %
Evaluamos el comportamiento de las perforaciones en la era moderna (2000–2020) para identificar patrones de crecimiento y establecer si la intensidad de la actividad fue constante.
X2 <- X[X >= 2000 & X <= 2020]
breaks_lustros <- seq(2000, 2020, by = 5)
h2_data <- hist(X2, breaks = breaks_lustros, plot = FALSE)
etiquetas_2 <- paste(head(breaks_lustros, -1), tail(breaks_lustros, -1), sep="-")
bp2 <- barplot(h2_data$counts,
names.arg = etiquetas_2,
col = col_barras,
border = "white",
main = "Gráfica: Distribución de Frecuencia (2000-2020)",
xlab = "Periodo (Lustro)",
ylab = "Frecuencia",
las = 1)
grid(nx = NA, ny = NULL, col = "#D7DBDD", lty = "dotted")
box(bty = "l", col = col_ejes)
Estimamos el parámetro \(\lambda\) para definir las frecuencias teóricas y contrastar el ajuste del modelo con la actividad observada en este periodo.
X2 <- X[X >= 2000 & X <= 2020]
breaks_lustros <- seq(2000, 2020, by = 5)
h2 <- hist(X2, breaks = breaks_lustros, plot = FALSE)
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")
cor2 <- cor(Fo2, Fe2) * 100
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,
xlim = c(0, max(Fo2) + 0.02),
ylim = c(0, max(Fe2) + 0.02))
abline(lm(Fe2 ~ Fo2 + 0), col = "red", lwd = 2)
x2_2 <- sum((Fo2 - Fe2)^2 / Fe2)
x2_2
## [1] 0.1180146
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 | 82.85 | 0.118 | 7.8147 | Modelo aceptado |
| Autor: Ashly Alzate | ||||
De cada 1,000 pozos perforados en la era moderna (2000–2020), ¿cuántos se estimó que iniciaron operaciones en el último lustro (2015–2020)?
p_ultimo <- ppois(20, lambda = lambda2) - ppois(15, lambda = lambda2)
p_ultimo
## [1] 0.01436936
cantidad_estimada <- round(p_ultimo * 100, 0)
El modelo Poisson estimó que, por cada 1,000 pozos de este periodo, aproximadamente 1 correspondieron al último lustro (2015–2020).
Los valores de la variable Inicio de Perforación fluctúan entre 1922 y 2018 y giran en torno a una media de 1990.64, con una desviación estándar de 16.21, con 96 valores atípicos, siendo un conjunto de datos homogéneo, cuyos valores se agrupan fuertemente en la parte alta de la variable. Por lo anterior, el comportamiento es beneficioso, al indicar una concentración sostenida y moderna de la actividad exploratoria.