# VARIABLE CUALITATIVA NOMINAL: TIPO DE EXTRACCIÓN
# Proyecto: Producción de pozos de gas y petróleo no convencional
# Grupo – Carrera de Petróleos
# 2026

# =========================================================
# 1. CARGA Y PREPARACIÓN DE LOS DATOS
# =========================================================

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(readr)
library(gt)

# Lectura del archivo CSV

datos <- read_delim(
  "produccin-de-pozos-de-gas-y-petrleo-no-convencional.csv",
  delim = ";"
)
## Warning: One or more parsing issues, call `problems()` on your data frame for details,
## e.g.:
##   dat <- vroom(...)
##   problems(dat)
## Rows: 400759 Columns: 40
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr  (27): idempresa, prod_pet, prod_gas, prod_agua, tef, tipoextraccion, ti...
## dbl  (10): anio, mes, idpozo, iny_agua, iny_gas, iny_co2, iny_otro, vida_uti...
## lgl   (2): rectificado, habilitado
## dttm  (1): fechaingreso
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# =========================================================
# 2. CONSOLIDACIÓN DE LAS CATEGORÍAS DE EXTRACCIÓN
# =========================================================

datos <- datos %>%
  mutate(
    tipoextraccion_consol = case_when(
      
      tipoextraccion %in% c("Fracking", "Hidráulica") ~
        "Extracción hidráulica",
      
      tipoextraccion %in% c("Horizontal", "Perforación horizontal") ~
        "Perforación horizontal",
      
      tipoextraccion %in% c("Vertical", "Perforación vertical") ~
        "Perforación vertical",
      
      tipoextraccion %in% c("Mixta", "Combinada") ~
        "Extracción mixta",
      
      tipoextraccion %in% c("Otra", "Desconocida", "NA") ~
        "Otros tipos de extracción",
      
      TRUE ~ tipoextraccion
    )
  )

# =========================================================
# 3. TABLA DE DISTRIBUCIÓN DE FRECUENCIAS
# =========================================================

# 3.1. Cálculo de frecuencias

TDFExtraccion <- datos %>%
  filter(!is.na(tipoextraccion_consol)) %>%
  count(tipoextraccion_consol, name = "ni") %>%
  arrange(ni) %>%
  mutate(
    hi = (ni / sum(ni)) * 100
  )

# =========================================================
# 3.2. TABLA DE FRECUENCIAS
# =========================================================

TDFExtraccion_total <- TDFExtraccion %>%
  add_row(
    tipoextraccion_consol = "Total",
    ni = sum(TDFExtraccion$ni),
    hi = sum(TDFExtraccion$hi)
  )

TDFExtraccion_total
## # A tibble: 12 × 3
##    tipoextraccion_consol         ni        hi
##    <chr>                      <int>     <dbl>
##  1 Cavidad Progresiva             5   0.00125
##  2 Pistoneo (Swabbing)           13   0.00325
##  3 Otros Tipos de Extracción     92   0.0230 
##  4 Jet Pump                      98   0.0245 
##  5 Electrosumergible            247   0.0617 
##  6 Bombeo Hidráulico            334   0.0835 
##  7 Gas Lift                   13666   3.42   
##  8 Sin Sistema de Extracción  17589   4.40   
##  9 Bombeo Mecánico            43280  10.8    
## 10 Plunger Lift               66050  16.5    
## 11 Surgencia Natural         258784  64.7    
## 12 Total                     400158 100
# =========================================================
# 3.3. PRESENTACIÓN DE LA TABLA
# =========================================================

tabla_presentacion <- TDFExtraccion_total %>%
  mutate(
    hi = round(hi, 4)
  )

tabla_presentacion %>%
  gt() %>%
  tab_header(
    title = md("**Tabla Nro. 1**"),
    subtitle = md("Distribución de frecuencias de los tipos de extracción
                  utilizados en pozos de gas y petróleo no convencional")
  ) %>%
  cols_label(
    tipoextraccion_consol = "Tipo de extracción",
    ni = "Frecuencia absoluta (ni)",
    hi = "Frecuencia relativa (%)"
  ) %>%
  tab_source_note(
    source_note = md("Elaborado por: Grupo – Carrera de Petróleos")
  ) %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(rows = tipoextraccion_consol == "Total")
  )
Tabla Nro. 1
Distribución de frecuencias de los tipos de extracción utilizados en pozos de gas y petróleo no convencional
Tipo de extracción Frecuencia absoluta (ni) Frecuencia relativa (%)
Cavidad Progresiva 5 0.0012
Pistoneo (Swabbing) 13 0.0032
Otros Tipos de Extracción 92 0.0230
Jet Pump 98 0.0245
Electrosumergible 247 0.0617
Bombeo Hidráulico 334 0.0835
Gas Lift 13666 3.4152
Sin Sistema de Extracción 17589 4.3955
Bombeo Mecánico 43280 10.8157
Plunger Lift 66050 16.5060
Surgencia Natural 258784 64.6705
Total 400158 100.0000
Elaborado por: Grupo – Carrera de Petróleos
# =========================================================
# DATOS PARA GRÁFICOS
# =========================================================

tabla_graficos <- tabla_presentacion %>%
  filter(tipoextraccion_consol != "Total") %>%
  arrange(ni)

# =========================================================
# 4. GRÁFICOS DE BARRAS
# =========================================================

# 4.1. Frecuencia absoluta

par(mar = c(12, 5, 4, 2))

barplot(
  tabla_graficos$ni,
  names.arg = tabla_graficos$tipoextraccion_consol,
  las = 2,
  col = "steelblue",
  main = "Gráfica 1: Frecuencia absoluta de los tipos
de extracción en pozos no convencionales",
  ylab = "Número de registros",
  xlab = "",
  cex.names = 0.75,
  cex.axis = 0.75
)

mtext(
  "Tipo de extracción",
  side = 1,
  line = 10
)

# =========================================================
# 4.2. Frecuencia relativa
# =========================================================

par(mar = c(12, 5, 4, 2))

barplot(
  tabla_graficos$hi,
  names.arg = tabla_graficos$tipoextraccion_consol,
  las = 2,
  col = "skyblue",
  main = "Gráfica 2: Frecuencia relativa de los tipos
de extracción en pozos no convencionales",
  ylab = "Porcentaje (%)",
  xlab = "",
  ylim = c(0, max(tabla_graficos$hi) + 5),
  cex.names = 0.75,
  cex.axis = 0.75
)

mtext(
  "Tipo de extracción",
  side = 1,
  line = 10
)

# =========================================================
par(mar = c(5, 4, 4, 10), xpd = TRUE)

colores <- c(
  "#1f78b4",
  "#33a02c",
  "#e31a1c",
  "#ff7f00",
  "#6a3d9a"
)

pie(
  tabla_graficos$hi,
  labels = NA,
  col = colores,
  main = "Gráfica 3: Distribución porcentual de los tipos
de extracción (diagrama circular)"
)

legend(
  x = 1,
  y = 0.5,
  legend = paste0(
    tabla_graficos$tipoextraccion_consol,
    " (", round(tabla_graficos$hi, 2), "%)"
  ),
  fill = colores,
  cex = 0.8,
  bty = "n"
)

par(xpd = FALSE)

# =========================================================
# 6. INDICADORES ESTADÍSTICOS
# =========================================================

# 6.1. Moda

indice_moda <- which.max(tabla_graficos$ni)

moda_categoria <- tabla_graficos$tipoextraccion_consol[indice_moda]

moda_ni <- tabla_graficos$ni[indice_moda]

moda_hi <- round(tabla_graficos$hi[indice_moda], 4)

# =========================================================
# 6.2. TABLA RESUMEN DE INDICADORES
# =========================================================

tabla_resumen <- data.frame(
  Variable = "Tipo de extracción",
  Indicador = "Moda",
  Resultado = paste0(
    moda_categoria,
    " (", moda_ni,
    " registros, ",
    moda_hi, "%)"
  )
)

tabla_resumen %>%
  gt() %>%
  tab_header(
    title = md("**Tabla Nro. 2**"),
    subtitle = md("Indicador estadístico del tipo de extracción
                  en pozos no convencionales")
  ) %>%
  cols_label(
    Variable = "Variable analizada",
    Indicador = "Indicador estadístico",
    Resultado = "Resultado"
  ) %>%
  tab_source_note(
    source_note = md("Elaborado por: Grupo – Carrera de Petróleos")
  ) %>%
  opt_all_caps() %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body()
  )
Tabla Nro. 2
Indicador estadístico del tipo de extracción en pozos no convencionales
Variable analizada Indicador estadístico Resultado
Tipo de extracción Moda Surgencia Natural (258784 registros, 64.6705%)
Elaborado por: Grupo – Carrera de Petróleos
# =========================================================
# 7. CONCLUSIÓN
# =========================================================

cat(
  "El análisis estadístico de la variable cualitativa nominal ",
  "'tipo de extracción' permitió identificar la categoría más ",
  "frecuente dentro de la base de datos analizada. La moda corresponde a ",
  moda_categoria,
  ", con un total de ", moda_ni,
  " registros, equivalentes al ",
  moda_hi,
  "% del total de observaciones."
)
## El análisis estadístico de la variable cualitativa nominal  'tipo de extracción' permitió identificar la categoría más  frecuente dentro de la base de datos analizada. La moda corresponde a  Surgencia Natural , con un total de  258784  registros, equivalentes al  64.6705 % del total de observaciones.