Modelo de Probabilidad de la Clasificación de los Pozos Petrolíferos
La variable clasificación de los pozos petrolíferos se considera una variable cualitativa ordinal, ya que clasifica categorías no numéricas que pueden organizarse mediante un orden jerárquico basado en su frecuencia de ocurrencia. Este orden permite asignar identificadores numéricos (Xi) que representan una secuencia lógica entre las categorías, facilitando el análisis probabilístico y la comparación entre los valores observados y los estimados por el modelo geométrico.
Se importan los datos de los pozos petrolíferos y se verifica su estructura.
Se extrae la variable CATEGORIA y se construye una tabla inicial de frecuencias.
Clasificación_G <-Datos$CATEGORIA
TDFClasificación_G <- as.data.frame(table(Clasificación_G))
TDFClasificación_G
## Clasificación_G Freq
## 1 Desenvolvimento 18276
## 2 Especial 1965
## 3 Estratigráfico 327
## 4 Extensão 2302
## 5 Injeção 1644
## 6 Jazida Mais Profunda 144
## 7 Jazida Mais Rasa 35
## 8 Pioneiro 4059
## 9 Pioneiro Adjacente 823
Se traducen las categorías originales del portugués al español para facilitar su interpretación.
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
TDFClasificación_G$Clasificación_G <- recode(TDFClasificación_G$Clasificación_G,
"Desenvolvimento" = "Desarrollo",
"Especial" = "Especial",
"Estratigráfico" = "Estratigráfico",
"Extensão" = "Extensión",
"Injeção" = "Inyección",
"Jazida Mais Profunda" = "Yacimiento más profundo",
"Jazida Mais Rasa" = "Yacimiento más somero",
"Pioneiro" = "Pionero",
"Pioneiro Adjacente" = "Pionero adyacente"
)
head(TDFClasificación_G)
## Clasificación_G Freq
## 1 Desarrollo 18276
## 2 Especial 1965
## 3 Estratigráfico 327
## 4 Extensión 2302
## 5 Inyección 1644
## 6 Yacimiento más profundo 144
Las categorías se agrupan en clases generales para simplificar el análisis estadístico.
TDFClasificación_G$Clasificación <- ifelse(TDFClasificación_G$Clasificación_G %in% c("Desarrollo","Extensión"),
"Desarrollo de Campo",
ifelse(TDFClasificación_G$Clasificación_G %in% c("Pionero","Pionero adyacente"),"Descubrimiento",
ifelse(TDFClasificación_G$Clasificación_G %in% c("Especial","Inyección"),"Operación",
ifelse(TDFClasificación_G$Clasificación_G %in% c("Estratigráfico", "Yacimiento más somero", "Yacimiento más profundo"), "Tipo de yacimiento","Otros"))))
head(TDFClasificación_G$Clasificación)
## [1] "Desarrollo de Campo" "Operación" "Tipo de yacimiento"
## [4] "Desarrollo de Campo" "Operación" "Tipo de yacimiento"
Se calcula la frecuencia absoluta (ni) y la frecuencia relativa porcentual (hi) de cada clasificación.
TDFClasificación_G$Freq <- as.numeric(as.character(TDFClasificación_G$Freq))
library(dplyr)
TDFClasificación_G1 <- TDFClasificación_G %>%
group_by(Clasificación) %>%
summarise(
ni = sum(Freq),
hi = round(sum(Freq) / sum(TDFClasificación_G$Freq)*100, 5))
TDFClasificación_G1 <- data.frame(TDFClasificación_G1)
Se incorporan los totales generales de la distribución.
TDFClasificación_G1 <- TDFClasificación_G1 [, c("Clasificación", "ni", "hi")]
total_ni <- sum(TDFClasificación_G1$ni)
total_hi <- sum(TDFClasificación_G1$hi)
TDFClasificación_G1.1 <- rbind(TDFClasificación_G1, data.frame( Clasificación = "Total",
ni = total_ni,
hi = total_hi))
print(TDFClasificación_G1.1)
## Clasificación ni hi
## 1 Desarrollo de Campo 20578 69.57904
## 2 Descubrimiento 4882 16.50719
## 3 Operación 3609 12.20287
## 4 Tipo de yacimiento 506 1.71090
## 5 Total 29575 100.00000
La tabla de frecuencias se presenta con formato para facilitar su lectura.
library(gt)
gt(TDFClasificación_G1.1) %>%
tab_header(
title = md("**DISTRIBUCIÓN DE FRECUENCIAS DE POZOS PETROLEROS DE BRASIL**"),
subtitle = "Distibución de pozos petroliferos en las regiones de Brasil") %>%
fmt_number(
columns = hi,
decimals = 2) %>%
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))
| DISTRIBUCIÓN DE FRECUENCIAS DE POZOS PETROLEROS DE BRASIL | ||
| Distibución de pozos petroliferos en las regiones de Brasil | ||
| Clasificación | ni | hi |
|---|---|---|
| Desarrollo de Campo | 20578 | 69.58 |
| Descubrimiento | 4882 | 16.51 |
| Operación | 3609 | 12.20 |
| Tipo de yacimiento | 506 | 1.71 |
| Total | 29575 | 100.00 |
Se representa gráficamente la cantidad de pozos por clasificación.
TDFClasificación_G2 <- TDFClasificación_G1.1[TDFClasificación_G1.1$Clasificación != "Total", ]
barplot(TDFClasificación_G2$ni,
main = "Gráfica N°1: Distribución en Cantidad de la Clasificación General de los pozos petroliferos",
ylab = "Cantidad",
col = "#2E4053", names.arg = TDFClasificación_G2$Clasificación,
las = 2, cex.names = 0.7, cex.axis = 0.8, cex.main = 0.9)
mtext("Clasificación General", side = 1, line = 7, adj = 0.4, cex = 1)
Se propone un modelo de probabilidad geométrico para aproximar la distribución observada.
library(tidyr)
library(ggplot2)
# Crear variable ID
TDFClasificación_G2 <- TDFClasificación_G2 %>%
arrange(desc(ni))
TDFClasificación_G2$ID <- 1:nrow(TDFClasificación_G2)
# Estimación del parámetro p
media_observada <- sum(TDFClasificación_G2$ID * TDFClasificación_G2$ni) / sum(TDFClasificación_G2$ni)
p_estimado <- 1 / media_observada
# Probabilidades del modelo geométrico
prob_geom <- p_estimado * (1 - p_estimado)^(TDFClasificación_G2$ID - 1)
# Normalización
prob_geom <- prob_geom / sum(prob_geom)
TDFClasificación_G2$hi_modelo <- prob_geom * 100
# Preparar datos para gráfico
df_comparativo_hi <- pivot_longer(
TDFClasificación_G2,
cols = c("hi", "hi_modelo"),
names_to = "Origen",
values_to = "Valor"
)
df_comparativo_hi$Origen <- ifelse(df_comparativo_hi$Origen == "hi", "Realidad", "Modelo")
# Gráfica comparativa
ggplot(df_comparativo_hi, aes(x = Clasificación, y = Valor, fill = Origen)) +
geom_bar(stat = "identity", position = "dodge", color = "black") +
scale_fill_manual(values = c("Modelo" = "skyblue", "Realidad" = "#2E4053")) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
labs(
title = "Modelo de probabilidad geométrico de la Clasificación de Pozos",
subtitle = paste("p estimado =", round(p_estimado,4)),
x = "Clasificación",
y = "Probabilidad (%)",
fill = "Origen"
)
Se calcula la correlación de Pearson entre las probabilidades observadas y las estimadas por el modelo.
Fo_Geo <- TDFClasificación_G2$hi
Fe_Geo <- TDFClasificación_G2$hi_modelo
plot(Fo_Geo, Fe_Geo,
main = "Gráfica N°5: Correlación del Modelo Observado y Esperado de la Clasificación de los Pozos Petrolíferos",
cex.main = 0.78,
xlab = "Frecuencia Observada (hi)",
ylab = "Frecuencia Esperada",
pch = 19, col = "#2E4053")
abline(lm(Fe_Geo ~ Fo_Geo), col = "red", lwd = 2)
# Cálculo de la Correlación de Pearson
Correlacion_Geo <- cor(Fo_Geo, Fe_Geo) * 100
Correlacion_Geo
## [1] 98.98376
Se aplica la prueba Chi-Cuadrado para evaluar el ajuste del modelo geométrico a los datos.
# Se normaliza la muestra a N=100 utilizando las frecuencias relativas (hi).
Fo_Norm <- TDFClasificación_G2$hi
Fe_Norm <- TDFClasificación_G2$hi_modelo
# Cálculo del estadístico con muestra normalizada
x2_Norm <- sum(((Fo_Norm - Fe_Norm)^2) / Fe_Norm)
# Grados de libertad
gl_Norm <- length(Fo_Norm) - 2
# Valor crítico con 95% de confianza
vc_Norm <- qchisq(0.95, gl_Norm)
# Resultados
cat("Chi-Cuadrado Normalizado:", round(x2_Norm, 4), "\n")
## Chi-Cuadrado Normalizado: 5.5158
cat("Valor Crítico:", round(vc_Norm, 4), "\n")
## Valor Crítico: 5.9915
cat("¿El modelo geométrico es aceptado?:", x2_Norm < vc_Norm, "\n")
## ¿El modelo geométrico es aceptado?: TRUE
Debido al gran tamaño de la muestra, el test Chi-Cuadrado tradicional resulta muy sensible. Por ello se utilizó una versión normalizada con frecuencias relativas (N = 100) para evaluar el ajuste del modelo.
Se presenta un resumen de los resultados de los tests de ajuste del modelo.
tabla_resumen_C <- data.frame(
Variable = "Clasificación General",
Pearson = round(Correlacion_Geo, 2),
Chi2 = round(x2_Norm, 2),
Umbral = round(vc_Norm, 2),
Resultado = x2_Norm < vc_Norm
)
tabla_resumen_C %>%
gt() %>%
cols_label(
Variable = ("Variable"),
Pearson = "Test Pearson (%)",
Chi2 = ("Chi Cuadrado"),
Umbral = "Umbral de Aceptación",
Resultado = "Resultado"
) %>%
tab_header(
title = md("**Tabla N°4: Resumen del Test de Bondad al Modelo de Probabilidad**")) %>%
tab_source_note(
source_note = "Autor: Anahi Macias") %>%
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°4: Resumen del Test de Bondad al Modelo de Probabilidad | ||||
| Variable | Test Pearson (%) | Chi Cuadrado | Umbral de Aceptación | Resultado |
|---|---|---|---|---|
| Clasificación General | 98.98 | 5.52 | 5.99 | TRUE |
| Autor: Anahi Macias | ||||
¿Cuál es la probabilidad de que un pozo petrolífero seleccionado al azar pertenezca a la categoría Desarrollo de campo?
prob_desarrollo <- TDFClasificación_G2$hi[TDFClasificación_G2$Clasificación == "Desarrollo de Campo"]
prob_desarrollo
## [1] 69.57904
La probabilidad estimada indica que aproximadamente 69.57% de los pozos pertenecen a la categoría Desarrollo de Campo, siendo la clasificación más frecuente..
¿Cuántos pozos petrolíferos pertenecen a la categoría con mayor frecuencia en la clasificación general?
max_pozos <- max(TDFClasificación_G2$ni)
categoria_max <- TDFClasificación_G2$Clasificación[TDFClasificación_G2$ni == max_pozos]
categoria_max
## [1] "Desarrollo de Campo"
max_pozos
## [1] 20578
En la base de datos analizada, aproximadamente 20578 pozos pertenecen a la categoría Desarrollo de Campo, siendo la clasificación con mayor frecuencia.
La variable clasificación de los pozos petrolíferos muestra un comportamiento aproximado a un modelo de probabilidad geométrico, determinado a partir de la estimación del parámetro 𝑝 y evaluado mediante pruebas estadísticas de ajuste. Este modelo permite estimar probabilidades para cada categoría, facilitando el análisis de la distribución de los pozos y la interpretación de su comportamiento dentro del proceso petrolero.