Análisis de las Condiciones Operativas de los Pozos Petrolíferos en Brasil

Introducción

El presente análisis estudia la distribución de los estados operativos de los pozos petrolíferos en Brasil. A partir de los datos disponibles, se clasifican los pozos en categorías generales con el fin de analizar su frecuencia y representación porcentual. Posteriormente se utilizan tablas y gráficos para visualizar la estructura de la actividad petrolera según la condición operativa de cada pozo.

1 Librerias

La preparación del entorno analítico requiere la habilitación de librerías específicas. Se emplea dplyr para la manipulación, limpieza y recodificación eficiente de los datos, y gt para la estructuración y presentación de las tablas finales con un formato académico estandarizado.

library(dplyr)
library(gt)

2 Cargar Datos

El proceso inicia con la lectura de la base de datos matriz. Esta etapa garantiza la correcta importación de los registros originales, preservando la codificación y estructura necesarias para el análisis del estado operativo de los pozos.

3 Extrae la variable

Para enfocar el estudio estadístico, se aísla la variable referente a la situación o estado actual del pozo (SITUACAO). Esto permite generar una extracción directa y aislar los registros operativos para su posterior evaluación.

Status <- Datos$SITUACAO
TDFSituación <- as.data.frame(table(Status))
TDFSituación
View(TDFSituación)

4 Conteo

En esta fase se procesan las categorías originales. Primero, se imputan los valores vacíos indicándolos como “Sin registro” y se traducen las descripciones del portugués al español. Posteriormente, se realiza una agrupación estratégica en macro-categorías que simplifican y enriquecen la interpretación de las condiciones operativas de los pozos.

library(dplyr)
TDFSituación$Status[TDFSituación$Status == ""] <- "Sin registro"

TDFSituación$Status <- recode(TDFSituación$Status, 
"ABANDONADO AGUARDANDO ABANDONO DEFINITIVO/ARRASAMENTO" = "En proceso de cierre definitivo",
"ABANDONADO AGUARDANDO REINÍCIO DE PERFURAÇÃO" = "En espera de reinicio de perforación",
"ABANDONADO DEFINITIVAMENTE" = "Abandonado definitivamente", 
"ABANDONADO POR LOGÍSTICA EXPLORATÓRIA" = "Abandonado por logística",
"ABANDONADO/PARADO AGUARDANDO INTERVENÇÃO PARA AVALIAÇÃO, COMPLETAÇÃO OU RESTAURAÇÃO" = "Suspendido en espera de intervención",
"ARRASADO" = "Desmantelado",
"CEDIDO PARA PRODUÇÃO DE ÁGUA" = "Cedido para producción de agua",
"DE DESCARTE" = "Descartado",
"DEVOLVIDO" = "Devuelto",
"EM ABANDONO" = "En proceso de abandono", 
"EM INTERVENÇÃO PARA AVALIAÇÃO, COMPLETAÇÃO OU RESTAURAÇÃO" = "En intervención activa", 
"EM PERFURAÇÃO" = "En perforación", 
"EQUIPADO AGUARDANDO INÍCIO DE INJEÇÃO" = "Equipado esperando inyección", 
"EQUIPADO AGUARDANDO INÍCIO DE PRODUÇÃO" = "Equipado esperando producción", 
"INJETOR" = "Pozo inyector", 
"PRODUÇÃO DE AGUA PARA INJEÇÃO" = "Producción de agua para inyección",
"PRODUTOR" = "Pozo productor")  

# Agrupación 

TDFSituación <- TDFSituación %>%
  mutate(Condición = case_when(
    Status %in% c("En perforación", "Equipado esperando producción", "Equipado esperando inyección", "Pozo productor", "Pozo inyector", "Producción de agua para inyección") ~ "Activos y en Desarrollo",
    
    Status %in% c("En intervención activa", "Suspendido en espera de intervención", "En espera de reinicio de perforación", "Cedido para producción de agua", "Devuelto") ~ "Suspendidos o Inactivos",
    
    Status %in% c("En proceso de abandono", "En proceso de cierre definitivo", "Abandonado por logística") ~ "En Proceso de Abandono",
    
    Status %in% c("Abandonado definitivamente", "Desmantelado", "Descartado") ~ "Clausura Definitiva", TRUE ~ "Sin registro"
  ))

head(TDFSituación$Status)
## [1] <NA>                                 En proceso de cierre definitivo     
## [3] En espera de reinicio de perforación Abandonado definitivamente          
## [5] Abandonado por logística             Suspendido en espera de intervención
## 19 Levels:  ... Pozo productor
TDFSituación$Condición <- factor(TDFSituación$Condición, 
                                 levels = c("Activos y en Desarrollo", 
                                            "Suspendidos o Inactivos", 
                                            "En Proceso de Abandono", 
                                            "Clausura Definitiva", 
                                            "Sin registro"), 
                                 ordered = TRUE)

5 Tabla de frecuencia

La información procesada se sintetiza en una tabla de distribución de frecuencias. Este cuadro detalla tanto el conteo absoluto (\(n_i\)) como las proporciones relativas porcentuales y fraccionarias (\(h_i\), \(f_i\)) de cada condición, ofreciendo un panorama cuantitativo del estatus de los pozos

TDFSituación$Freq <- as.numeric(as.character(TDFSituación$Freq))

TDFSituación1 <- Datos$TDFSituación
TDFSituación1 <- TDFSituación %>%
  group_by(Condición) %>%
  summarise( 
    ni = sum(Freq),
    hi = round(sum(Freq) / sum(TDFSituación$Freq)*100, 2))

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

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

TDFSituación1 <- TDFSituación1 [, c("Condición", "ni", "hi", "fi")]

total_ni <- sum(TDFSituación1$ni) 
total_hi <- sum(TDFSituación1$hi)
total_fi <- sum(TDFSituación1$fi)
TDFSituacióncompleta <- rbind(TDFSituación1, data.frame( Condición = "Total",
                                                          ni = total_ni,
                                                          hi = total_hi,
                                                          fi = total_fi))
print(TDFSituacióncompleta)
##                 Condición    ni     hi         fi
## 1 Activos y en Desarrollo 12827  43.37 0.43371090
## 2 Suspendidos o Inactivos  4674  15.80 0.15803888
## 3  En Proceso de Abandono  3847  13.01 0.13007608
## 4     Clausura Definitiva  7307  24.71 0.24706678
## 5            Sin registro   920   3.11 0.03110735
## 6                   Total 29575 100.00 1.00000000
gt(TDFSituacióncompleta) %>%
  tab_header( 
    title = md("**Cuadro No.1**"), 
    subtitle = "Situación 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(TDFSituacióncompleta))
  ) %>%
  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)
  )
Cuadro No.1
Situación de los pozos petrolíferos en Brasil
Condición ni
Frecuencia Relativa
Porcentual (%) Fracción
Activos y en Desarrollo 12827 43.37 0.4337
Suspendidos o Inactivos 4674 15.80 0.1580
En Proceso de Abandono 3847 13.01 0.1301
Clausura Definitiva 7307 24.71 0.2471
Sin registro 920 3.11 0.0311
Total 29575 100.00 1.0000

6 Gráficas

Las visualizaciones gráficas permiten interpretar de forma rápida e intuitiva la distribución de los estados operativos. A continuación, se presentan histogramas y diagramas de sectores que ilustran estas proporciones desde diferentes perspectivas métricas.

6.1 Diagrama de barras frecuencia absoluta local (ni)

Este diagrama de barras expone la cantidad exacta de pozos que pertenecen a cada condición operativa, ajustando la escala vertical al valor máximo observado localmente en la muestra.

TDFSituaciónfinal <- TDFSituacióncompleta[TDFSituacióncompleta$Condición != "Total", ]
par(mar = c(9, 4, 4, 2))
bp <- barplot(TDFSituaciónfinal$ni,
        main = "Gráfica N°1: Distribución en Cantidad de la Clasificación General",
        ylab = "Cantidad",
        col = "#2E4053", 
        xaxt = "n", 
        cex.axis = 0.8, cex.main = 0.9)

text(x = bp, y = -1500, 
     labels = TDFSituaciónfinal$Condición,
     srt = 45, adj = 1, xpd = TRUE, cex = 0.8)
mtext("Condición", side = 1, line = 6, cex = 1)

6.2 Diagrama de barras frecuencia absoluta global (ni)

Al expandir la escala del eje vertical (hasta 30,000 unidades), este gráfico permite apreciar la magnitud de cada categoría en relación con un contexto de volumen global estandarizado.

par(mar = c(9, 4, 4, 2))
bp <- barplot(TDFSituaciónfinal$ni,
        main = "Gráfica N°2: Distribución en Cantidad de la Clasificación General",
        ylab = "Cantidad",
        col = "#2E4053", 
        xaxt = "n", 
        yaxt = "n",
        cex.axis = 0.8, cex.main = 0.9, 
        ylim = c(0, 30000))

axis(side = 2, at = seq(0, 30000, by = 5000), las = 1, cex.axis = 0.8)
text(x = bp, y = -1500, 
     labels = TDFSituaciónfinal$Condición,
     srt = 45, adj = 1, xpd = TRUE, cex = 0.8)
mtext("Condición", side = 1, line = 6, cex = 1)

6.3 Diagrama de barras frecuencia relativa local (hi)

Se ilustra el peso porcentual de cada condición operativa de manera local, lo que facilita la comparación proporcional directa entre las distintas fases en las que se encuentran los pozos.

par(mar = c(9, 4, 4, 2))
bp <- barplot(TDFSituaciónfinal$hi,
        main = "Gráfica N°1: Distribución en Cantidad de las condiciones de los pozos petroliferos en Brasil",
        ylab = "Cantidad",
        col = "#2E4053", 
        xaxt = "n", 
        cex.axis = 0.8, cex.main = 0.9)

text(x = bp, y = -3, 
     labels = TDFSituaciónfinal$Condición,
     srt = 45, adj = 1, xpd = TRUE, cex = 0.8)
mtext("Condición", side = 1, line = 6, cex = 1)

6.4 Diagrama de barras frecuencia relativa global (hi)

Esta representación estandariza la vista porcentual sobre una escala fija del 0 al 100%, mostrando la participación relativa de cada categoría de manera uniforme frente al universo total analizado.

par(mar = c(9, 4, 4, 2))
bp <- barplot(TDFSituaciónfinal$hi,
        main = "Gráfica N°1: Distribución en Cantidad de las condiciones de los pozos petroliferos en Brasil",
        ylab = "Cantidad",
        col = "#2E4053", 
        xaxt = "n", 
        cex.axis = 0.8, cex.main = 0.9, 
        ylim = c(0, 100))

text(x = bp, y = -3, 
     labels = TDFSituaciónfinal$Condición,
     srt = 45, adj = 1, xpd = TRUE, cex = 0.8)
mtext("Condición", side = 1, line = 6, cex = 1)

6.5 Diagrama circular

Mediante sectores proporcionales, este gráfico ofrece una visión global e inmediata de cómo se distribuyen los pozos según su estatus, destacando visualmente los estados de mayor y menor incidencia.

pie(TDFSituaciónfinal$hi, 
    main = "Gráfica N°5: Distribución porcentual de las condiciones de los pozos petroliferos en Brasil", 
    radius = 0.8,
    labels = paste0(round(TDFSituaciónfinal$hi,2)),
    col = c("#2E4053", "#5D6D7E", "#E67E22", "#C0392B", "#D5D8DC"),
    cex.main = 0.8,
    init.angle = 360)

legend(x = -1.87, y =1,
       legend = TDFSituaciónfinal$Condición,
       fill = c("#2E4053", "#5D6D7E", "#E67E22", "#C0392B", "#D5D8DC"),
       cex = 0.7,
       title = "Condiciones de los pozos")

7 Indicadores Estadísticos

Al tratarse de una variable cualitativa nominal (condición operativa), las medidas métricas tradicionales de dispersión y tendencia central no son aplicables. El análisis se centra en la Moda, indicador principal que señala el estatus operativo más frecuente dentro de la muestra estudiada.

Conclusiones <- data.frame(
Variable = "Condiciones de los pozos",
`Rango [Min; Max]` = "N/A",
`Media (X̄)` = "N/A",
`Mediana (Me)` = "N/A",
`Moda (Mo)` = "Activos y en Desarrollo",
`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
)


gt(Conclusiones) %>%
tab_header(
title = md("**CONCLUSIONES Y ESTADÍSTICOS**"),
subtitle = "Resumen de Indicadores de las Condiciones de los pozoss 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 Condiciones de los pozoss 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
Condiciones de los pozos N/A N/A N/A Activos y en Desarrollo N/A N/A N/A N/A N/A N/A
Autor: Anahi Macias

8 Conclusión

Los valores de la variable Status giran en torno a una moda de Activos y en Desarrollo. Este comportamiento indica que gran parte de la actividad petrolera del país se encuentra en etapas de producción o desarrollo operativo, mientras que las fases de abandono o suspensión representan una proporción menor dentro del conjunto de datos analizado.