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.
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.
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.
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.
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
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 |
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.
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)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)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)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)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")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 | ||||||||||
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.