Análisis Descriptivo de la Clasificación Operativa de los Pozos Petrolíferos de Brasil

1 Introducción

El presente estudio describe la distribución de los pozos petrolíferos de Brasilsegún su clasificación operativa, con en datos oficiales de la Agencia Nacional del Petróleo, Gas Natural y Biocombustibles (ANP). Las categorías originales se consolidaron en cuatro grupos para facilitar la interpretación de las frecuencias y proporciones de cada tipo de pozo registrado.

2 Carga de datos

Se importa el conjunto de datos de pozos petroleros de Brasil y se verifica su estructura, tipos de variables y codificación.

3 Obtención de la frecuencia

Se extrae la variable de clasificación operativa y se contabiliza la frecuencia absoluta de cada categoría registrada.

TipoPozo  <- Datos$RECLASSIFICACAO
TDFTipoPozo <- as.data.frame(table(TipoPozo ))
TDFTipoPozo

##Agrupación Las subcategorías originales se consolidan en cuatro grupos operacionales mutuamente excluyentes para simplificar el análisis.

library(dplyr)

TDFTipoPozo$Grupo <- case_when(
  TDFTipoPozo$TipoPozo  %in% c(
    "PRODUTOR COMERCIAL DE GÁS NATURAL", "PRODUTOR COMERCIAL DE GÁS NATURAL E CONDENSADO",
    "PRODUTOR COMERCIAL DE PETRÓLEO", "PRODUTOR COMERCIAL DE PETRÓLEO E GÁS NATURAL",
    "PRODUTOR COMERCIAL DE PETRÓLEO, GÁS NATURAL E CONDENSADO",
    "PRODUTOR SUBCOMERCIAL DE GÁS NATURAL", "PRODUTOR SUBCOMERCIAL DE GÁS NATURAL E CONDENSADO",
    "PRODUTOR SUBCOMERCIAL DE PETRÓLEO", "PRODUTOR SUBCOMERCIAL DE PETRÓLEO E GÁS NATURAL",
    "PRODUTOR SUBCOMERCIAL DE PETRÓLEO, GÁS NATURAL E CONDENSADO",
    "DESCOBRIDOR DE CAMPO COM GÁS NATURAL", "DESCOBRIDOR DE CAMPO COM GÁS NATURAL E CONDENSADO",
    "DESCOBRIDOR DE CAMPO COM PETRÓLEO", "DESCOBRIDOR DE CAMPO COM PETRÓLEO E GÁS NATURAL",
    "DESCOBRIDOR DE CAMPO COM PETRÓLEO, GÁS NATURAL E CONDENSADO",
    "DESCOBRIDOR DE NOVA JAZIDA GÁS NATURAL", "DESCOBRIDOR DE NOVA JAZIDA GÁS NATURAL E CONDENSADO",
    "DESCOBRIDOR DE NOVA JAZIDA PETRÓLEO", "DESCOBRIDOR DE NOVA JAZIDA PETRÓLEO E GÁS NATURAL",
    "DESCOBRIDOR DE NOVA JAZIDA PETRÓLEO, GÁS NATURAL E CONDENSADO",
    "EXTENSÃO PARA GÁS NATURAL", "EXTENSÃO PARA GÁS NATURAL E CONDENSADO",
    "EXTENSÃO PARA PETRÓLEO", "EXTENSÃO PARA PETRÓLEO E GÁS NATURAL",
    "EXTENSÃO PARA PETRÓLEO, GÁS NATURAL E CONDENSADO",
    "PORTADOR DE GÁS NATURAL", "PORTADOR DE GÁS NATURAL E CONDENSADO",
    "PORTADOR DE PETRÓLEO", "PORTADOR DE PETRÓLEO E GÁS NATURAL",
    "PORTADOR DE PETRÓLEO, GÁS NATURAL E CONDENSADO"
  ) ~ "Pozos productivos",

  TDFTipoPozo$TipoPozo %in% c(
    "INJEÇÃO DE ÁGUA", "INJEÇÃO DE ÁGUA ADITIVADA", "INJEÇÃO DE CO2",
    "INJEÇÃO DE GÁS NATURAL", "INJEÇÃO DE QUALQUER OUTRO FLUIDO", "INJEÇÃO DE VAPOR"
  ) ~ "Inyección/Soporte",

  TDFTipoPozo$TipoPozo %in% c(
    "SECO COM INDÍCIOS DE GÁS NATURAL E CONDENSADO", "SECO COM INDÍCIOS DE PETRÓLEO",
    "SECO COM INDÍCIOS DE PETRÓLEO E GÁS NATURAL", "SECO COM INDÍCIOS GÁS NATURAL",
    "SECO SEM INDÍCIOS"
  ) ~ "Pozos secos",

  .default = "Pozos abandonados"
)

# Factor ordenado (del más favorable al menos)
niveles_ordinales <- c("Pozos productivos", "Inyección/Soporte",
                       "Pozos secos", "Pozos abandonados")

TDFTipoPozo$Grupo <- factor(TDFTipoPozo$Grupo,
                                   levels = niveles_ordinales, ordered = TRUE)

TDFTipoPozo <- TDFTipoPozo[order(TDFTipoPozo$Grupo), ]

4 Cálculo de frecuencias absolutas y relativas

Se calculan las frecuencias absolutas (ni) y relativas porcentuales (hi) por grupo operacional.

TDFTipoPozo$Freq <- as.numeric(as.character(TDFTipoPozo$Freq))

library(dplyr)

TDFReclasificación1 <- Datos$TDFTipoPozo
TDFReclasificación1 <- TDFTipoPozo %>%
  group_by(Grupo) %>%
  summarise( 
    ni = sum(Freq),

    hi = round(sum(Freq) / sum(TDFTipoPozo$Freq)*100, 5))

TDFReclasificación1 <- data.frame(TDFReclasificación1)

5 Construcción de la tabla de distribución

Se integran las frecuencias en una tabla con totales para verificar la coherencia del conjunto de datos.

TDFReclasificación1$fi <- TDFReclasificación1$ni / sum(TDFReclasificación1$ni)

TDFReclasificación1 <- TDFReclasificación1 [, c("Grupo", "ni", "hi", "fi")]

total_ni <- sum(TDFReclasificación1$ni) 
total_hi <- sum(TDFReclasificación1$hi)
total_fi <- sum(TDFReclasificación1$fi)


TDFReclasificación1.1 <- rbind(TDFReclasificación1, data.frame( Grupo = "Total",
                                                          ni = total_ni,
                                                          hi = total_hi,
                                                          fi = total_fi))
print(TDFReclasificación1.1)
##               Grupo    ni        hi         fi
## 1 Pozos productivos 18803  63.57735 0.63577346
## 2 Inyección/Soporte  1447   4.89265 0.04892646
## 3       Pozos secos  4816  16.28402 0.16284024
## 4 Pozos abandonados  4509  15.24598 0.15245985
## 5             Total 29575 100.00000 1.00000000

6 Presentación del cuadro estadístico

La tabla se formatea con gt para su presentación en el informe final.

library(gt)
gt(TDFReclasificación1.1) %>%
  tab_header( 
    title = md("**Tabla N°1: DISTRIBUCIÓN DE FRECUENCIAS DE POZOS PETROLEROS DE BRASIL**"), 
    subtitle = "Reclasificación de pozos petroleros 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(TDFReclasificación1.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
Reclasificación de pozos petroleros en Brasil
Grupo ni
Frecuencia Relativa
Porcentual (%) Fracción
Pozos productivos 18803 63.58 0.6358
Inyección/Soporte 1447 4.89 0.0489
Pozos secos 4816 16.28 0.1628
Pozos abandonados 4509 15.25 0.1525
Total 29575 100.00 1.0000

7 Análisis Gráfico

7.1 Histograma de frecuencia absoluta local

Muestran la cantidad de pozos por grupo con escala ajustada.

TDFReclasificación2 <- TDFReclasificación1.1[TDFReclasificación1.1$Grupo != "Total", ]
par(mar = c(9, 4, 4, 2))
bp <- barplot(TDFReclasificación2$ni,
        main = "Gráfica N°1: Distribución de pozos por reclasificación",
        ylab = "Cantidad",
        col = "#2E4053", 
        xaxt = "n", 
        cex.axis = 0.8, cex.main = 0.9)

     text(x = bp, y = -3, 
     labels = TDFReclasificación2$Grupo,
     srt = 45, adj = 1.2, xpd = TRUE, cex = 0.8)
        mtext("Reclasificación", side = 1, line = 6, adj = 0.8)

7.2 Histograma de frecuencia absoluta global

Muestran la cantidad de pozos por grupo con escala fija.

par(mar = c(9, 4, 4, 2))
bp <- barplot(TDFReclasificación2$ni,
        main = "Gráfica N°2: Distribución de pozos por reclasificación",
        ylab = "Cantidad",
        col = "#2E4053", 
        xaxt = "n", 
        cex.axis = 0.8, cex.main = 0.9,
        ylim = c(0, 30000))

        text(x = bp, y = -3, 
     labels = TDFReclasificación2$Grupo,
     srt = 45, adj = 1.2, xpd = TRUE, cex = 0.8)
        mtext("Reclasificación", side = 1, line = 6, adj = 0.8) 

7.3 Histograma de frecuencia relativa local

Representan el porcentaje de participación de cada grupo con escala ajustada

par(mar = c(9, 4, 4, 2))
bp <- barplot(TDFReclasificación2$hi,
        main = "Gráfica N°3: Distribución porcentual de pozos por reclasificación",
        ylab = "Porcentaje",
        col = "#2E4053", 
        xaxt = "n", 
        cex.axis = 0.8, cex.main = 0.9)


text(x = bp, y = -3, 
     labels = TDFReclasificación2$Grupo,
     srt = 45, adj = 1.2, xpd = TRUE, cex = 0.8)
        mtext("Reclasificación", side = 1, line = 6, adj = 0.8)

7.4 Histograma de frecuencia relativa global

Representan el porcentaje de participación de cada grupo con escala fija hasta el 100 %.

par(mar = c(9, 4, 4, 2))
bp <- barplot(TDFReclasificación2$hi, 
        main = "Gráfica N°4: Distribución porcentual de pozos por reclasificación",
        ylab = "Porcentaje",
        col = "#2E4053", 
        xaxt = "n", 
        cex.axis = 0.8, cex.main = 0.9,
        ylim = c(0, 100))

text(x = bp, y = -3, 
     labels = TDFReclasificación2$Grupo,
     srt = 45, adj = 1.2, xpd = TRUE, cex = 0.8)

        mtext("Reclasificación", side = 1, line = 6,  adj = 0.8)

7.5 Diagrama circular

Ilustra la proporción de cada grupo respecto al total de pozos registrados.

pie(TDFReclasificación2$hi, 
    main = "Gráfica N°5: Distribución porcentual de la reclasificación de pozos en Brasil", 
    radius = 0.6,
    labels = paste0(round(TDFReclasificación2$hi,2)),
    col = c("#6C8A9B", "#E6E6E4", "#F9F5EF", "#FD6574"),
    cex = 1, cex.main = 1,
    init.angle = 270)
        
legend(x = -1.95, y =1,
       legend = TDFReclasificación2$Grupo,
       fill = c("#6C8A9B", "#E6E6E4", "#F9F5EF", "#FD6574"),
       cex = 0.6,
       title = "Reclasificación")

8 Resumen Estadístico

Conclusiones <- data.frame(
Variable = "Reclasificación de los pozos",
`Rango [Min; Max]` = "N/A",
`Media (X̄)` = "N/A",
`Mediana (Me)` = "N/A",
`Moda (Mo)` = "Pozos Productivos",
`Varianza (S²)` = "N/A",
`Desv. Est. (S)` = "N/A",
`C.V. (%)` = "N/A",
`Asimetría (As)` = "N/A",
`Curtosis (K)` = "N/A",
`Valores Atípicos` = "N/A",
check.names = FALSE)
library(gt)

gt(Conclusiones) %>%
tab_header(
title = md("**CONCLUSIONES Y ESTADÍSTICOS**"),
subtitle = "Resumen de Indicadores de las Reclasificaciones de los Pozos Petrolíferos en Brasil") %>%
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))
CONCLUSIONES Y ESTADÍSTICOS
Resumen de Indicadores de las Reclasificaciones de los Pozos Petrolíferos en Brasil
Variable Rango [Min; Max] Media (X̄) Mediana (Me) Moda (Mo) Varianza (S²) Desv. Est. (S) C.V. (%) Asimetría (As) Curtosis (K) Valores Atípicos
Reclasificación de los pozos N/A N/A N/A Pozos Productivos N/A N/A N/A N/A N/A N/A
Autor: Anahi Macias

8.1 Conclusiones

8.1.1 Análisis Descriptivo

La moda corresponde al grupo Pozos Productivos, lo que indica que la mayor proporción de pozos en Brasil se encuentra destinada directamente a la extracción de hidrocarburos, reflejando un enfoque predominante hacia la producción efectiva.