Modelo de Distribución de Probabilidades por Grupos Geológicos Finales

setwd("C:/Users/Usuario/Desktop/Nueva carpeta")
library(readxl)
library(dplyr)
library(gt)
datos <- read_excel("tabela_de_pocos_janeiro_2018.xlsx")

1 Carga de Datos

Se importan los datos originales de pozos petrolíferos y se verifica la estructura de las variables para garantizar su correcta lectura.

2 Tabla de distribución de frecuencia

Se construye la tabla de frecuencias absolutas de la variable Geología grupo final, identificando la presencia de cada unidad geológica.

3 Agrupación geológica

Las unidades geológicas se reclasifican en grupos mayores según su naturaleza geológica, reduciendo la dispersión categórica sin pérdida de información.

library(dplyr)
TDFGrupos_Finales$Grupo_Geologico <- ifelse(
  TDFGrupos_Finales$Geologia %in% c(
    "Apodi","Campos","Camamu","Espírito Santo","Sergipe","Lagoa Feia",
    "Macaé","Guaratiba","Almada","Humberto de Campos","Balsas",
    "Coruripe","Santo Amaro","Frade","Nativo","Perucaba","Areia Branca",
    "Canindé","Marimari","Estância","Massacará","Brotas"
  ), "Cuencas sedimentarias",

  ifelse(TDFGrupos_Finales$Geologia %in% c(
    "Bambuí","Itararé","Serra Grande","Paranoá","Macaúbas"
  ), "Formaciones",

  ifelse(TDFGrupos_Finales$Geologia %in% c(
    "Espinhaço"
  ), "Provincias",

  ifelse(TDFGrupos_Finales$Geologia %in% c(
    "Barra Nova","Camburi","Itamambuca","Ilhas","Piaçabuçu"
  ), "Ambientes costeros",

  ifelse(TDFGrupos_Finales$Geologia %in% c(
    "Purus","Tefé","Trombetas","Rio do Peixe","Rio Ivaí","Urupadi"
  ), "Sistemas fluviales",

  ifelse(TDFGrupos_Finales$Geologia %in% c(
    "Pará","Paraná"
  ), "Regiones administrativas",
  
  "Otros/Locales"
))))))

head(TDFGrupos_Finales)
##       Geologia  Freq       Grupo_Geologico
## 1              25521         Otros/Locales
## 2    Afligidos    17         Otros/Locales
## 3       Agulha     7         Otros/Locales
## 4       Almada     6 Cuencas sedimentarias
## 5        Apodi  1144 Cuencas sedimentarias
## 6 Areia Branca   272 Cuencas sedimentarias

4 Cálculo de frecuencias por grupo

Se calculan la frecuencia absoluta (ni) y la frecuencia relativa (hi) para cada grupo geológico, permitiendo el análisis comparativo.

TDFGrupos_Finales$Freq <- as.numeric(TDFGrupos_Finales$Freq)

TDFGrupos_Finales1 <- TDFGrupos_Finales %>%
  group_by(Grupo_Geologico) %>%
  summarise(
    ni = sum(Freq),
    hi = round(ni / sum(TDFGrupos_Finales$Freq) * 100, 2))

TDFGrupos_Finales1 <- as.data.frame(TDFGrupos_Finales1)
TDFGrupos_Finales1
##            Grupo_Geologico    ni    hi
## 1       Ambientes costeros   294  0.99
## 2    Cuencas sedimentarias  3601 12.18
## 3              Formaciones    35  0.12
## 4            Otros/Locales 25555 86.41
## 5               Provincias    13  0.04
## 6 Regiones administrativas     2  0.01
## 7       Sistemas fluviales    75  0.25

5 Construcción del cuadro con totales

Se incorpora una fila de totales para verificar la consistencia de los resultados y confirmar el 100 % de participación relativa.

TDFGrupos_Finales1$fi <- TDFGrupos_Finales1$ni / sum(TDFGrupos_Finales1$ni)
TDFGrupos_Finales1 <- TDFGrupos_Finales1 [, c("Grupo_Geologico", "ni", "hi","fi")]
total_ni <- sum(TDFGrupos_Finales1$ni) 
total_hi <- 100
total_fi <- sum(TDFGrupos_Finales1$fi) 

TDFGrupos_Finales1.1 <- rbind(TDFGrupos_Finales1, data.frame( Grupo_Geologico = "Total",
                                                          ni = total_ni,
                                                          hi = total_hi,
                                                          fi = total_fi))
print(TDFGrupos_Finales1.1)
##            Grupo_Geologico    ni     hi           fi
## 1       Ambientes costeros   294   0.99 9.940828e-03
## 2    Cuencas sedimentarias  3601  12.18 1.217582e-01
## 3              Formaciones    35   0.12 1.183432e-03
## 4            Otros/Locales 25555  86.41 8.640744e-01
## 5               Provincias    13   0.04 4.395604e-04
## 6 Regiones administrativas     2   0.01 6.762468e-05
## 7       Sistemas fluviales    75   0.25 2.535926e-03
## 8                    Total 29575 100.00 1.000000e+00

6 Presentación tabular con formato

Los resultados se presentan en una tabla estadística formateada, facilitando la lectura e interpretación de las frecuencias.

library(gt)
gt(TDFGrupos_Finales1.1) %>%
  tab_header( 
    title = md("**Tabla N°1: DISTRIBUCIÓN DE FRECUENCIAS DE POZOS PETROLEROS DE BRASIL**"), 
    subtitle = "Distibución de grupos geológicos de los pozos petrolíferos en  Brasil") %>%  
    tab_spanner(
    label   = md("**Frecuencia Relativa**"),
    columns = c(hi, fi)
  ) %>%
    cols_label(
    ni = md("**ni**"),
    hi = md("Porcentual (%)"),
    fi = md("Fracción")
  ) %>%
  fmt_number(columns = hi, decimals = 2) %>%
  fmt_number(columns = fi, decimals = 4) %>%
  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_style(
    style     = list(cell_fill(color = "#2E4053"),
                     cell_text(color = "white", weight = "bold")),
    locations = cells_column_spanners()
  ) %>%
  tab_style(
    style     = list(cell_fill(color = "#D5D8DC"),
                     cell_text(weight = "bold", color = "#2E4053")),
    locations = cells_body(rows = nrow(TDFGrupos_Finales1.1))
  ) %>%
  tab_options(
    table.border.top.color          = "#2E4053",
    table.border.bottom.color       = "#2E4053",
    column_labels.border.bottom.color = "#2E4053",
    data_row.padding                = px(6),
    table.font.size                 = px(13)
  )
Tabla N°1: DISTRIBUCIÓN DE FRECUENCIAS DE POZOS PETROLEROS DE BRASIL
Distibución de grupos geológicos de los pozos petrolíferos en Brasil
Grupo_Geologico ni
Frecuencia Relativa
Porcentual (%) Fracción
Ambientes costeros 294 0.99 0.0099
Cuencas sedimentarias 3601 12.18 0.1218
Formaciones 35 0.12 0.0012
Otros/Locales 25555 86.41 0.8641
Provincias 13 0.04 0.0004
Regiones administrativas 2 0.01 0.0001
Sistemas fluviales 75 0.25 0.0025
Total 29575 100.00 1.0000

6.1 Histograma de frecuencia absoluta local

Representa la cantidad de pozos en cada grupo geológico sin considerar el total nacional.

TDFGrupos_Finales2 <- TDFGrupos_Finales1.1[TDFGrupos_Finales1.1$Grupo_Geologico != "Total", ]
par(mar = c(9, 4, 4, 2))
barplot(TDFGrupos_Finales2$ni,
        main = "Gráfica N°1: Distribución en orden de cantidad de pozos petrolíferos por grupo geológico",
        ylab = "Cantidad",
        col = "#263238", names.arg = TDFGrupos_Finales2$Grupo_Geologico,
        las = 2, cex.names = 0.8, cex.axis = 0.8, cex.main = 1)
mtext("Grupo", side = 1, line = 7)

6.2 Histograma de frecuencia relativa local

Expresa la participación porcentual de cada grupo en el conjunto analizado.

par(mar = c(9, 4, 4, 2))
barplot(TDFGrupos_Finales2$hi,
        main = "Gráfica N°2: Distribución porcentual de pozos petrolíferos por grupo geológico",
        ylab = "Porcentaje",
        col = "#263238", names.arg = TDFGrupos_Finales2$Grupo_Geologico,
        las = 2, cex.names = 0.8, cex.axis = 0.8, cex.main = 1)
        mtext("Grupo", side = 1, line = 7)

7 Modelo de Probabilidad

P_GRUPOFINAL <- TDFGrupos_Finales2$ni / sum(TDFGrupos_Finales2$ni)

par(mar = c(9, 4, 4, 2))
barplot(P_GRUPOFINAL,
        main = "Gráfica N°3: Distribución de Probabilidad según el Grupo Geológico",
        ylab = "Probabilidad",
        col = "#2E4053", names.arg = TDFGrupos_Finales2$Grupo_Geologico,
        las = 2, cex.names = 0.8, cex.axis = 0.8, cex.main = 1)
mtext("Grupo", side = 1, line = 8, adj = 0.5, cex = 1.2)

7.1 Probabilidad

¿Cuál es la probalidad de qué el Grupo Geológico sea Ambiente costero?

x <- round(
  (TDFGrupos_Finales2$ni[TDFGrupos_Finales2$Grupo_Geologico == "Ambientes costeros"] /
   sum(TDFGrupos_Finales2$ni)) * 100, 1)

print(paste("La probabilidad es de:", x, "%"))
## [1] "La probabilidad es de: 1 %"

La probabilidad de que un pozo petrolero pertenezca al grupo geológico “Ambientes costeros” es del 1 %, lo que indica una baja frecuencia dentro del total de pozos analizados.

¿Cuántos pozos petroleros pueden poseer un Grupo Geológico de tipo Ambiente costero?

p <- x / 100

n <- 1000

cantidad_esperada <- n * p
Operador_objetivo <- "Ambiente costero"

cat("Para n =", n, "pozos, la cantidad esperada de Grupo Geológico de Ambiente costero es,", Operador_objetivo, "=", round(cantidad_esperada, 2), "\n")
## Para n = 1000 pozos, la cantidad esperada de Grupo Geológico de Ambiente costero es, Ambiente costero = 10

Con una probabilidad estimada, se espera que de 1000 pozos petroleros aproximadamente 10 presenten un grupo geológico de tipo Ambiente costero.