Modelo de Probabilidad de los Campos de producción de los pozos petrolíferos en Brasil

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

1 Cargar datos

Se importan los datos y se valida su estructura para el análisis estadístico.

2 Tabla de distribución de frecuencia

Se obtiene la frecuencia absoluta de los pozos según su campo de producción.

3 Agrupación de los campos petroleros

Se agrupan los campos en categorías generales según patrones presentes en su denominación.

sum(table(TDFCampo$Campos))
## [1] 542

4 Cálculo de frecuencia

Los campos se agrupan en categorías productivas según criterios semánticos del nombre.

TDFCampo$Freq <- as.numeric(as.character(TDFCampo$Freq))
library(dplyr)
TDFCampos <- Datos$TDFCampo
TDFCampos <- TDFCampo %>%
  group_by(Campo) %>%
  summarise( 
    ni = sum(Freq),
    hi = round(sum(Freq) / sum(TDFCampo$Freq)*100, 4))

TDFCampos <- data.frame(TDFCampos)

5 Construcción del cuadro de resultados

Se presenta el cuadro resumen con los totales de frecuencia absoluta y relativa.

TDFCampos <- TDFCampos [, c("Campo", "ni", "hi")]
TDFCampos$fi <- TDFCampos$ni / sum(TDFCampos$ni)
total_ni <- sum(TDFCampos$ni) 
total_hi <- sum(TDFCampos$hi)
total_fi <- sum(TDFCampos$fi)
TDFCampos1 <- rbind(TDFCampos, data.frame( Campo = "Total",
                                                ni = total_ni,
                                                hi = total_hi,
                                                fi = total_fi))
print(TDFCampos1)
##                     Campo    ni       hi          fi
## 1        Campos fluviales   790   2.6712 0.026711750
## 2        Campos insulares   130   0.4396 0.004395604
## 3        Campos lacustres   292   0.9873 0.009873204
## 4          Campos marinos  3904  13.2003 0.132003381
## 5 Extensiones geograficas   531   1.7954 0.017954353
## 6            Otros campos 23928  80.9062 0.809061708
## 7                   Total 29575 100.0000 1.000000000

6 Presentación tabular con formato

Se genera una tabla formal utilizando el paquete gt.

library(gt)
gt(TDFCampos1) %>%
  tab_header( 
    title = md("**Tabla N°1: DISTRIBUCIÓN DE FRECUENCIAS DE POZOS PETROLEROS DE BRASIL**"), 
    subtitle = "Campos de Producción de los Pozos Petrolíferos") %>%  
    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(TDFCampos1))
  ) %>%
  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
Campos de Producción de los Pozos Petrolíferos
Campo ni
Frecuencia Relativa
Porcentual (%) Fracción
Campos fluviales 790 2.67 0.0267
Campos insulares 130 0.44 0.0044
Campos lacustres 292 0.99 0.0099
Campos marinos 3904 13.20 0.1320
Extensiones geograficas 531 1.80 0.0180
Otros campos 23928 80.91 0.8091
Total 29575 100.00 1.0000

7 Gráficas

7.1 Histograma de frecuencia absoluta local

Se muestra la distribución en cantidad de campos petroleros por grupo a nivel local.

TDFCampos1 <- TDFCampos1[TDFCampos1$Campo != "Total", ]
par(mar = c(9, 4, 4, 2))
barplot(TDFCampos1$ni,
        main = "Gráfica N°1: Distribución en cantidad de campos petroleros por grupo",
        ylab = "Cantidad",
        col = "#2E4053", names.arg = TDFCampos1$Campo,
        las = 2, cex.names = 0.8, cex.axis = 0.8, cex.main = 1)
mtext("Campos", side = 1, line = 7)

7.2 Histograma de frecuencia relativa local

Se muestra la distribución porcentual de campos petroleros por grupo a nivel local.

par(mar = c(9, 4, 4, 2))
barplot(TDFCampos1$hi,
        main = "Gráfica N°3: Distribución porcentual de campos petroleros por grupo",
        ylab = "Porcentaje",
        col = "#2E4053", names.arg = TDFCampos1$Campo,
        las = 2, cex.names = 0.8, cex.axis = 0.8, cex.main = 1)
mtext("Campos", side = 1, line = 7)

8 Modelo de probabilidad

Se construye la distribución de probabilidad empírica de los campos petroleros.

P_Campos <- TDFCampos1$ni / sum(TDFCampos1$ni)

par(mar = c(9, 4, 4, 2))
barplot(P_Campos,
        main = "Gráfica N°3: Distribución de Probabilidad de los campos petroleros por grupo",
        ylab = "Probabilidad",
        col = "#2E4053", names.arg = TDFCampos1$Campo,
        las = 2, cex.names = 0.8, cex.axis = 0.8, cex.main = 1)
mtext("Campos", side = 1, line = 7)

8.1 Probabilidad

¿Cuál es la probabilidad de que un pozo petrolero seleccionado aleatoriamente pertenezca a un campo marino?

x <- round(
  (TDFCampos1$ni[TDFCampos1$Campo == "Campos marinos"] /
   sum(TDFCampos1$ni)) * 100, 1)

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

La probabilidad calculada indica que aproximadamente el 13,2 % de los pozos petroleros pertenecen a campos marinos, lo que evidencia una presencia relevante, aunque no mayoritaria, dentro de la producción petrolera brasileña.

Si se seleccionan 1000 pozos petroleros, ¿cuántos se espera que pertenezcan a campos marinos?

p <- x / 100

n <- 1000

cantidad_esperada <- n * p
Bloque_objetivo <- "Campos marinos"

cat("Para n =", n, "Pozos, cantidad esperada en", Bloque_objetivo, "=", round(cantidad_esperada, 2), "\n")
## Para n = 1000 Pozos, cantidad esperada en Campos marinos = 132

De acuerdo con el modelo probabilístico, para un total de 1000 pozos, se espera que 132 pozos corresponda a campos marinos, manteniendo la distribución observada en los datos reales