INTRODUCCION
Este estudio analiza la evolución temporal de los pozos petrolíferos en Brasil. La Variable Año de Inicio de los pozos petrolíferos es de tipo ordinal, pero se convirtió en discreta al asignarle identificadores numéricos (Xi ) para facilitar el análisis probabilístico y la comparación con el modelo.
Carga de Paquetes
Importación del archivo
Filtrado de fechas
Datos <- Datos_Brutos %>%
mutate(
Fecha_Limpieza = trimws(as.character(INICIO)),
Fecha_Obj = if_else(
grepl("-", Fecha_Limpieza),
as.Date(Fecha_Limpieza, format = "%Y-%m-%d"),
as.Date(Fecha_Limpieza, format = "%d/%m/%Y")
),
Anio = year(Fecha_Obj)
) %>%
filter(!is.na(Anio) & Anio >= 1920 & Anio <= 2020)
X <- Datos$Anio
if(length(X) == 0) {
stop("¡ERROR! No hay datos válidos en la variable INICIO.")
}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 = "Autor: Ashly Alzate") %>%
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 |
| Autor: Ashly Alzate | ||
Diagrama de Barras (Escala Local)
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(6, 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)
# Creamos las etiquetas para todas las barras
etiquetas_decadas <- paste("Década", 1:length(h1_data$counts))
bp1 <- barplot(h1_data$counts,
col = col_barras,
border = "white",
main = "Gráfica: Distribución de Frecuencia (1920-1990)",
ylab = "Frecuencia",
axes = FALSE,
axisnames = FALSE)
axis(2, col = col_ejes, col.axis = col_ejes)
axis(1, at = bp1, labels = etiquetas_decadas, col = col_ejes, col.axis = col_ejes, las = 1, cex.axis = 0.8)
title(xlab = "Periodos Históricos", line = 3.5)
grid(nx = NA, ny = NULL, col = "#D7DBDD", lty = "dotted")
box(bty = "l", col = col_ejes)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("Periodo", 1:length(h2_data$counts))
bp2 <- barplot(h2_data$counts,
names.arg = etiquetas_2,
col = col_barras,
border = "white",
main = "Gráfica: Distribución de Frecuencia (2000-2020)",
xlab = "Periodos Históricos",
ylab = "Frecuencia",
las = 1)
grid(nx = NA, ny = NULL, col = "#D7DBDD", lty = "dotted")
box(bty = "l", col = col_ejes)# Agrupación 1
# Se conjetura que la variable de Inicio de Perforación, tratada aquí como una
# variable discreta bajo la primera sección temporal, se ajusta a un modelo de
# probabilidad geométrica. Esto se justifica porque su diagrama de barras muestra
# que la mayor cantidad de datos se concentra en el extremo derecho, y la probabilidad
# decae drásticamente a medida que nos
# movemos hacia la izquierda. Visualmente, representa el
# equivalente discreto de un decaimiento exponencial invertido en el eje temporal.
# Agrupación 2
# Se conjetura que la variable de Inicio de Perforación, tratada aquí como una
#variable discreta bajo la segunda sección temporal (era moderna), se ajusta a un
# modelo de probabilidad de Poisson. Esto se justifica porque su diagrama de barras
# muestra una distribución de frecuencias que va desde el año 2000 hacia el 2020
# de manera progresiva por lustros, reflejando eventos de conteo y tasas de
# ocurrencia estables por intervalos regulares de tiempo.#Agrupación 1
X1 <- X[X >= 1920 & X < 1991]
h1 <- hist(X1, breaks = seq(1920, 1990, by = 10), plot = FALSE)
counts_rev <- rev(h1$counts)
media_rev <- sum((0:(length(counts_rev) - 1)) * counts_rev) / sum(counts_rev)
prob_g <- 1 / (1 + media_rev)
k_vals <- 0:(length(h1$counts) - 1)
esp_raw <- dgeom(k_vals, prob = prob_g)
esp_counts <- length(X1) * esp_raw / sum(esp_raw)
Fo1 <- h1$counts / sum(h1$counts)
esp_raw_orig <- rev(esp_raw)
Fe1 <- esp_raw_orig / sum(esp_raw_orig)
esp_counts_orig <- rev(esp_counts)
#Agrupacion 2
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)matriz_prob <- rbind(Fo1, Fe1)
etiquetas_x <- paste("Década", 1:length(h1$counts))
par(mar = c(6, 5, 4, 2) + 0.1)
bp <- barplot(matriz_prob,
beside = TRUE,
col = c("#5D6D7E", "#F2F3F4"),
border = "black",
axes = FALSE,
ylim = c(0, 1),
main = "Gráfica N°2: Modelo Geométrico (Derecha a Izquierda)",
cex.main = 1.1,
xlab = NA,
ylab = NA)
title(ylab = "Probabilidad", line = 3.5, cex.lab = 1.1)
title(xlab = "Periodos Históricos", line = 4.5, cex.lab = 1.1)
axis(side = 2, at = seq(0, 1, by = 0.2), labels = c("0.0", "0.2", "0.4", "0.6", "0.8", "1.0"), las = 1, hadj = 1, tcl = -0.5)
text(x = colMeans(bp), y = - (1 * 0.04), labels = etiquetas_x, xpd = TRUE, cex = 0.85, srt = 25, adj = 1)
abline(h = 0)
legend("topleft", inset = c(0.02, 0.02),
legend = c("Real", "Modelo Geométrico"),
fill = c("#5D6D7E", "#F2F3F4"),
border = "black", bty = "n", cex = 1.0)etiquetas_periodos <- paste("Periodo", 1:length(Fo2))
par(mar = c(5, 5, 4, 2) + 0.1)
barplot(rbind(Fo2, Fe2),
beside = TRUE,
col = c(col_barras, "#F2F3F4"),
names.arg = etiquetas_periodos,
ylim = c(0, 1),
main = "Gráfica N°5: Modelo Poisson",
ylab = "Probabilidad",
xlab = "Periodos Históricos")
legend("topright", legend = c("Real", "Modelo Poisson"), fill = c(col_barras, "#F2F3F4"), bty = "n")Agrupacion 1
cor1 <- abs(cor(Fo1, Fe1)) * 100
par(mar = c(5, 5, 4, 2) + 0.1)
plot(Fo1, Fe1,
main = "Gráfica N°3: Correlación — Agrupación 1",
xlab = "Probabilidad Observada",
ylab = "Probabilidad Esperada",
xlim = c(0, max(Fo1) + 0.05),
ylim = c(0, max(Fe1) + 0.05),
pch = 19,
col = "#5D6D7E",
cex = 1.5,
axes = FALSE)
axis(side = 1, las = 1)
axis(side = 2, las = 1, hadj = 1)
box(which = "plot", lty = "solid", lwd = 1)
grid(nx = NULL, ny = NULL, col = "lightgray", lty = "dotted")
abline(lm(Fe1 ~ Fo1 + 0), col = "red", lwd = 2)Agrupación 2
cor2 <- cor(Fo2, Fe2) * 100
plot(Fo2, Fe2,
main = "Gráfica N°6: Correlación de Pearson — Sección 2",
xlab = "Probabilidad Observada",
ylab = "Probabilidad 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)# 1. Combinamos los datos en un solo data.frame
tabla_resumen <- data.frame(
Modelo = c("Geométrico", "Poisson"),
Pearson = round(c(cor1, cor2), 2),
Chi_Cuadrado = round(c(x2_1, x2_2), 4),
Umbral = round(c(vc1, vc2), 4),
Decision = c(ifelse(x2_1 < vc1, "Modelo aceptado", "Modelo rechazado"),
ifelse(x2_2 < vc2, "Modelo aceptado", "Modelo rechazado"))
)
# 2. Generamos la tabla única
gt(tabla_resumen) %>%
tab_header(title = md("**Tabla N°2: Resumen Comparativo de Bondad de Ajuste**")) %>%
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 Comparativo de Bondad de Ajuste | ||||
| Modelo | Pearson | Chi_Cuadrado | Umbral | Decision |
|---|---|---|---|---|
| Geométrico | 98.75 | 0.0568 | 11.0705 | Modelo aceptado |
| Poisson | 82.85 | 0.1180 | 7.8147 | Modelo aceptado |
| Autor: Ashly Alzate | ||||
¿Cuál es la probabilidad estimada de que un pozo inicie sus operaciones antes del año 1991 (es decir, en un intervalo menor a 60 años tomando como referencia el año base 1920)?
prob_s1 <- pgeom(1990 - 1920, prob = prob_g)
cat("La probabilidad calculada es del", round(prob_s1 * 100, 2), "%")## La probabilidad calculada es del 100 %
A partir de la tasa modelada en la era moderna (2000–2020), ¿cuántos pozos se esperaría que inicien operaciones específicamente en el último lustro (2015–2020) por cada 1,000 pozos perforados?
p_ultimo <- ppois(20, lambda = lambda2) - ppois(15, lambda = lambda2)
cat("La probabilidad calculada es del", round(p_ultimo * 100, 2), "%")## La probabilidad calculada es del 1.44 %
n <- length(X)
media_mu <- mean(X)
desv_s <- sd(X)
# Cálculo del intervalo de confianza al 95% para la media
error_margin <- qt(0.975, df = n - 1) * (desv_s / sqrt(n))
ic_inferior <- media_mu - error_margin
ic_superior <- media_mu + error_margin
cat("Intervalo de Confianza (95%): [", round(ic_superior, 0), "]")## Intervalo de Confianza (95%): [ 1991 ]
Debido a que la variable es discreta, aseguramos con un 95% de confianza que el verdadero parámetro poblacional se encuentra en 1991
Los valores de la variable Inicio de Perforación se pueden explicar mediante un modelo geométrico y poisson por secciones. Debido a que la variable es discreta, aseguramos con un 95% de confianza que el verdadero parámetro poblacional se encuentra en el año 1991, con una desviación estándar de 16.21. Además, se evidencia una alta concentración de pozos en los últimos periodos, lo que es consistente con una tendencia de crecimiento sostenido en la actividad exploratoria de petróleo en Brasil.