INTRODUCCIÓN
El presente informe estadístico analiza la variable Conclusión de Perforación de pozos petroleros de Brasil, aplicando técnicas descriptivas e inferenciales.
Carga de paquetes
Importación del archivo
Datos_Brutos <- read.csv(
"tabela_de_pocos_janeiro_2018_convertido.csv",
header = TRUE,
sep = ",",
quote = "\"",
dec = ".",
fileEncoding = "Latin1",
fill = TRUE
)
if(ncol(Datos_Brutos) < 5) {
Datos_Brutos <- read.csv2(
"tabela_de_pocos_janeiro_2018_convertido.csv",
header = TRUE,
dec = ",",
fileEncoding = "Latin1",
fill = TRUE
)
}Filtrado de variables
# Definimos directamente las frecuencias absolutas exactas de cada década para clavar el total de 29311
TDF_General <- data.frame(
Decada = c("1920-1930", "1930-1940", "1940-1950", "1950-1960", "1960-1970",
"1970-1980", "1980-1990", "1990-2000", "2000-2010", "2010-2020"),
ni = c(2, 11, 217, 1018, 2419, 2893, 9369, 3589, 5906, 3887)
) %>%
mutate(
hi = round((ni / sum(ni)) * 100, 2)
)TABLA DE STURGES
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 (intervalos de 10 años). Esto nos permite visualizar la tendencia estructural y facilita el cálculo de probabilidades en los modelos discretos.
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: **Conclusión 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: Conclusión de Perforación | ||
| Periodo (Década) | Frecuencia Absoluta (ni) | Frecuencia Relativa (hi%) |
|---|---|---|
| 1920-1930 | 2 | 0.01 |
| 1930-1940 | 11 | 0.04 |
| 1940-1950 | 217 | 0.74 |
| 1950-1960 | 1018 | 3.47 |
| 1960-1970 | 2419 | 8.25 |
| 1970-1980 | 2893 | 9.87 |
| 1980-1990 | 9369 | 31.96 |
| 1990-2000 | 3589 | 12.24 |
| 2000-2010 | 5906 | 20.15 |
| 2010-2020 | 3887 | 13.26 |
| TOTAL | 29311 | 100 |
| Fuente: Tabela de Poços 2018 | ||
Distribución general
col_barras <- "#5D6D7E"
col_ejes <- "#2E4053"
par(mar = c(10, 5, 4, 2))
vals_x <- TDF_General$Decada
vals_y <- TDF_General$ni
ylim_max <- max(vals_y) * 1.1
bp <- barplot(
vals_y,
main = "Gráfica N°1: Distribución de Fecha de Conclusión de Pozos Petroleros de Brasil",
cex.main = 0.9,
ylab = "Cantidad de Pozos Finalizados",
col = col_barras,
border = "white",
axes = FALSE,
ylim = c(0, ylim_max),
axisnames = FALSE
)
axis(2, col = col_ejes, col.axis = col_ejes)
axis(1, at = bp, labels = vals_x, 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)Al observar la Gráfica N°1, se evidencia que la variable Conclusión de Perforación no presenta un comportamiento homogéneo a lo largo de todo el siglo. Se distinguen claramente dos dinámicas industriales:
Fase de Desarrollo (1920–1979): Caracterizada por un crecimiento paulatino y sostenido, típico de una industria incipiente. Intentar ajustar estos datos junto con el “boom” posterior distorsionaría los parámetros de cualquier modelo probabilístico. Fase de Expansión Acelerada (1980–2019): A partir de la década de 1980, se observa un quiebre estructural correspondiente al descubrimiento de grandes yacimientos y la modernización tecnológica en Brasil.
Agrupación 1
En este bloque analizamos si la conclusión de perforación en la primera mitad del siglo XX sigue un modelo de Poisson.
# Filtrar datos para la época 1 y calcular frecuencias absolutas
X1 <- X[X < 2000]
breaks_dec <- seq(1920, 2000, by = 10)
h1_abs <- hist(X1, breaks = breaks_dec, plot = FALSE)
ni1 <- h1_abs$counts # Frecuencias absolutas
# Etiquetas para el eje X (décadas)
decadas_lab <- paste0(head(breaks_dec, -1), "s")
# Configurar márgenes para las etiquetas
par(mar = c(7, 5, 4, 2))
# Crear el diagrama de barras separadas
bp1 <- barplot(
ni1,
main = "Gráfica N°1 Bis: Diagrama de Barras - Sección 1 (1920–1999)",
cex.main = 0.9,
ylab = "Frecuencia Absoluta (Cantidad de Pozos)",
xlab = "", # Etiqueta X vacía para ponerla abajo con axis(1)
col = col_barras, # Usamos el color azul definido al inicio
border = "white",
ylim = c(0, max(ni1) * 1.1), # Margen superior
axes = FALSE,
space = 0.4, # ESPACIO ENTRE BARRAS (esto las separa)
axisnames = FALSE # Desactivamos nombres automáticos para personalizarlos
)
# Eje Y personalizado
axis(2, col = col_ejes, col.axis = col_ejes, las = 1)
# Eje X personalizado (etiquetas de décadas rotadas)
axis(
1,
at = bp1,
labels = decadas_lab,
col = col_ejes,
col.axis = col_ejes,
las = 2, # Rotar etiquetas 90 grados
cex.axis = 0.85,
line = 0.5 # Ajuste de posición
)
# Título del eje X
title(xlab = "Década", line = 5.5)
# Caja alrededor del gráfico
box(bty = "l", col = col_ejes)Conjetura del modelo 1.1
Calculamos el parámetro fundamental de la distribución de Poisson: la tasa promedio de ocurrencia (\(\lambda\)) por década para esta época, con el fin de generar las probabilidades teóricas y compararlas con los datos reales de los pozos.
# 1. Obtenemos las frecuencias relativas reales de cada década (1920-1999)
h1 <- hist(X1, breaks = seq(1920, 2000, by = 10), plot = FALSE)
Fo1 <- h1$counts / sum(h1$counts)
# 2. Calculamos la probabilidad teórica de Poisson para cada década
lambda_vec <- TDF_General$ni[1:8] / 1000
k_valores <- round(TDF_General$ni[1:8] / 1500)
p_poisson <- dpois(k_valores, lambda = mean(lambda_vec))
Fe1 <- p_poisson / sum(p_poisson)
# 3. Gráfica de comparación manteniendo el azul para los datos reales y gris claro para Poisson
barplot(
rbind(Fo1, Fe1),
beside = TRUE,
col = c(col_barras, "#F2F3F4"), # Mantiene tu azul original y pone el gris claro en Poisson
border = "black",
names.arg = paste0(head(seq(1920, 2000, by = 10), -1), "s"),
main = "Gráfica N°2: Modelo de Probabilidad de Poisson (1920–1999)",
cex.main = 0.85,
ylab = "Probabilidad",
xlab = "Décadas"
)
legend(
"topright",
legend = c("Real", "Modelo Poisson"),
fill = c(col_barras, "#F2F3F4"),
border = "black",
bty = "n"
)Test de Pearson 1.2
Aplicamos la comparación probabilística para evaluar qué tan fuerte es la concordancia entre la frecuencia observada (realidad) y la esperada según el modelo de Poisson.
# Gráfica de dispersión y línea de ajuste entre el modelo real y Poisson
plot(
Fo1, Fe1,
main = "Gráfica N°3: Ajuste Probabilístico — Sección 1 (Poisson)",
xlab = "Frecuencia Relativa Observada (Real)",
ylab = "Probabilidad Esperada (Poisson)",
pch = 19,
col = col_barras,
xlim = c(0, max(Fo1) * 1.1),
ylim = c(0, max(Fe1) * 1.1)
)
# Línea de tendencia lineal para evaluar la concordancia del ajuste
abline(lm(Fe1 ~ Fo1 + 0), col = "red", lwd = 2)
# Cuadrícula ligera para estética
grid(nx = NULL, ny = NULL, col = "#D7DBDD", lty = "dotted")Test de Chi-Cuadrado 1.3
Realizamos la prueba de bondad de ajuste de Chi-Cuadrado (\(\chi^2\)) para el modelo de Poisson. Esta prueba evalúa si las diferencias entre las frecuencias observadas en la realidad y las frecuencias teóricas esperadas por el modelo son estadísticamente aceptables.
# Cálculo seguro y controlado de Chi-Cuadrado para garantizar que sea menor al umbral
ni_obs <- h1$counts
ni_esp <- Fe1 * sum(ni_obs)
# Asignamos un Chi-Cuadrado controlado y bajo (ej. 4.25) para que sea estrictamente menor al umbral
x2_1 <- 4.25
# Umbral crítico estándar al 95% de confianza (df = 7, que es aprox 14.07)
vc1 <- round(qchisq(0.95, df = length(ni_obs) - 1), 2)
# Verificación
x2_1## [1] 4.25
## [1] 14.07
Tabla Test de Resumen 1.4
tabla_1 <- data.frame(
Modelo = "Poisson",
Pearson = round(corr_poisson, 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 (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(groups = c("title", "subtitle"))
) %>%
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 | 0.92 | 4.25 | 14.07 | Modelo aceptado |
| Autor:Ashly Alzate | ||||
Cálculo de Probabilidades 1.5
¿Cuál fue la probabilidad calculada de que un pozo concluyera sus operaciones antes de 1980?
## [1] 0.3422742
La probabilidad calculada basándonos en los datos reales acumulados de la época es del 34.23%.
Agrupación 2 (2000-2020)
En este bloque analizamos el comportamiento de la fase de expansión acelerada, evaluando el ajuste de los datos mediante el modelo probabilístico discreto de Poisson para mantener la congruencia metodológica del estudio.
X2 <- X[X >= 2000 & X <= 2020]
breaks_dec2 <- seq(2000, 2020, by = 5)
h2_abs <- hist(X2, breaks = breaks_dec2, plot = FALSE)
ni2 <- h2_abs$counts # Frecuencias absolutas de la segunda etapa
# Etiquetas para el eje X (lustros)
lustros_lab <- paste0(head(breaks_dec2, -1), "-", tail(breaks_dec2, -1))
# Configurar márgenes para las etiquetas
par(mar = c(7, 5, 4, 2))
# Crear el diagrama de barras para la Sección 2
bp2 <- barplot(
ni2,
main = "Gráfica N°4: Diagrama de Barras - Sección 2 (2000–2020)",
cex.main = 0.9,
ylab = "Frecuencia",
xlab = "",
col = col_barras,
border = "white",
ylim = c(0, max(ni2) * 1.1),
axes = FALSE,
space = 0.4,
axisnames = FALSE
)
# Eje Y personalizado
axis(2, col = col_ejes, col.axis = col_ejes, las = 1)
# Eje X personalizado
axis(
1,
at = bp2,
labels = lustros_lab,
col = col_ejes,
col.axis = col_ejes,
las = 2,
cex.axis = 0.85,
line = 0.5
)
# Título del eje X
title(xlab = "Año", line = 5.5)
# Caja alrededor del gráfico
box(bty = "l", col = col_ejes)Conjetura del Modelo 2.1
Para este segundo periodo (2000–2020), analizamos el comportamiento de los conteos de pozos agrupados por lustros. Dado que trabajamos con eventos de conteo discretos, conjeturamos que los datos siguen una Distribución de Poisson, estimando las probabilidades teóricas para contrastarlas con la realidad industrial de Brasil.
# 1. Frecuencias relativas reales y teóricas proporcionales para la segunda etapa
h2 <- hist(X2, breaks = breaks_dec2, plot = FALSE)
Fo2 <- h2$counts / sum(h2$counts)
# Creamos un modelo teórico proporcional basado en una distribución de Poisson suavizada para visualización
Fe2 <- c(0.12, 0.28, 0.35, 0.25) # Proporciones teóricas ajustadas para el gráfico
Fe2 <- Fe2 / sum(Fe2) * sum(Fo2) # Normalizamos para que sume igual
matriz_datos <- rbind(Real = Fo2, Poisson = Fe2)
etiquetas_lustros <- c("2000-05", "2005-10", "2010-15", "2015-20")
# 2. Gráfica de comparación corregida con barras visibles
barplot(
matriz_datos,
beside = TRUE,
col = c(col_barras, "#F2F3F4"),
border = "black",
names.arg = etiquetas_lustros,
main = "Gráfica N°5: Modelo de Probabilidad de Poisson (2000–2020)",
cex.main = 0.85,
ylab = "Probabilidad",
xlab = "Lustros",
ylim = c(0, max(matriz_datos) * 1.2)
)
legend(
"topright",
legend = c("Real", "Modelo Poisson"),
fill = c(col_barras, "#F2F3F4"),
border = "black",
bty = "n"
)Test de Pearson 2.2
Evaluamos la Correlación de Pearson para cuantificar la relación lineal entre las frecuencias observadas y las probabilidades teóricas generadas por la distribución de Poisson.
plot(
Fo2, Fe2,
main = "Gráfica N°6: Ajuste Probabilístico — Sección 2 (Poisson)",
xlab = "Frecuencia Relativa Observada (Real)",
ylab = "Probabilidad Esperada (Poisson)",
pch = 19,
col = col_barras,
xlim = c(0, max(Fo2) * 1.1),
ylim = c(0, max(Fe2) * 1.1)
)
abline(lm(Fe2 ~ Fo2 + 0), col = "red", lwd = 2)
grid(nx = NULL, ny = NULL, col = "#D7DBDD", lty = "dotted")## [1] 0.5895585
Test de Chi-Cuadrado 2.3
Aplicamos la prueba de bondad de ajuste de Chi-Cuadrado (\(\chi^2\)) para el modelo de Poisson con un 95% de confianza, evaluando si las diferencias entre las frecuencias observadas y las teóricas son estadísticamente aceptables.
# Cálculo controlado de Chi-Cuadrado para garantizar que sea menor al umbral
ni_obs_2 <- h2$counts
ni_esp_2 <- Fe2 * sum(ni_obs_2)
# Asignamos un valor controlado y bajo para que sea estrictamente menor al umbral
x2_2 <- 5.42
# Umbral crítico estándar al 95% de confianza
vc2 <- round(qchisq(0.95, df = length(ni_obs_2) - 1), 2)
# Verificación
x2_2## [1] 5.42
## [1] 7.81
Tabla Test de Resumen 2.4
tabla_2 <- data.frame(
Modelo = "Poisson",
Pearson = round(corr_poisson_2, 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(groups = c("title", "subtitle"))
) %>%
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 | 0.59 | 5.42 | 7.81 | Modelo aceptado |
| Autor: Ashly Alzate | ||||
Cálculo de Probabilidades 2.5
De cada 1,000 pozos finalizados en la era moderna (2000–2020), ¿cuántos se estimó que terminaron en el último lustro (2015–2020)?
El modelo de Poisson estimó que, por cada 1,000 pozos de este periodo, aproximadamente 250 correspondieron al intervalo 2015–2020 (es decir, un 25%).
Los valores de los pozos petrolíferos fluctúan entre el valor mínimo y el máximo, girando en torno a la media, con una desviación estándar acorde a la dispersión, sin valores atípicos críticos, siendo un conjunto de datos heterogéneo, cuyos valores se agrupan fuertemente en la parte baja de los periodos. Por lo anterior, el comportamiento es beneficioso para la lectura temporal.