1 Configuración y Carga de Datos

Para iniciar el procesamiento estadístico inferencial, se verifica la estructura global del conjunto de datos correspondientes a los bloques contractuales y arrendamientos de hidrocarburos en el estado de Kansas.

# Selección manual del archivo
datos <- read_csv(file.choose(), show_col_types = FALSE)
cat("dataset cargada correctamente.\n")
## dataset cargada correctamente.
cat("Total de registros evaluados (filas):", nrow(datos), "\n")
## Total de registros evaluados (filas): 47757

2 Extraer Variable

Se realiza el aislamiento de la variable cualitativa ordinal Etapa de Vida del Pozo (ETAPA_VIDA), clasificada en tres niveles: Nuevo, Maduro y Viejo, según los valores registrados en la columna LIFE_STAGE.

Clasificación en tres categorías ordinales:

datos <- datos %>%
  mutate(
    ETAPA_VIDA = case_when(
      LIFE_STAGE == "NEW"    ~ "Nuevo",
      LIFE_STAGE == "MATURE" ~ "Maduro",
      LIFE_STAGE == "OLD"    ~ "Viejo",
      TRUE                   ~ "No registrado"
    )
  ) %>%
  filter(ETAPA_VIDA != "No registrado")

3 Ordenamiento Lógico

Se establece el orden lógico de la variable cualitativa ordinal Etapa de Vida del Pozo, respetando la progresión natural del ciclo de vida de un pozo productor: desde su apertura hasta su etapa final de producción. Este ordenamiento es fundamental para garantizar una correcta interpretación estadística y visual de los resultados.

# Definir el orden lógico de las categorías (Nuevo → Maduro → Viejo)
orden_logico <- c("Nuevo", "Maduro", "Viejo")

# Aplicar factor ordenado a la variable ETAPA_VIDA
datos <- datos %>%
  mutate(
    ETAPA_VIDA = factor(ETAPA_VIDA, levels = orden_logico, ordered = TRUE)
  )

# Verificar que el orden fue aplicado correctamente
cat("Orden de categorías establecido:\n")
## Orden de categorías establecido:
cat(paste(levels(datos$ETAPA_VIDA), collapse = " → "), "\n")
## Nuevo → Maduro → Viejo
cat("\nDistribución por nivel:\n")
## 
## Distribución por nivel:
print(table(datos$ETAPA_VIDA))
## 
##  Nuevo Maduro  Viejo 
##  11615  20939  15203

4 Tabla de Distribución de Frecuencias

Se calcula la distribución de frecuencias absolutas (\(n_i\)) y porcentuales (\(h_i\%\)) para las tres categorías de la variable cualitativa ordinal, respetando la estructura de tres columnas estipulada por la cátedra.

# 1. Frecuencias absolutas
frecuencias_base <- datos %>%
  group_by(Etapa_Vida = ETAPA_VIDA, .drop = FALSE) %>%
  summarise(Frecuencia_ni = n(), .groups = "drop") %>%
  arrange(Etapa_Vida)

# 2. Porcentaje
tabla_final <- frecuencias_base %>%
  mutate(Porcentaje_hi = (Frecuencia_ni / sum(Frecuencia_ni)) * 100)

# 3. Fila TOTAL
total_fila <- data.frame(
  Etapa_Vida    = "TOTAL",
  Frecuencia_ni = sum(tabla_final$Frecuencia_ni),
  Porcentaje_hi = sum(tabla_final$Porcentaje_hi)
)

# 4. Formateo — se convierte a character para evitar conflicto de tipos
resultado <- bind_rows(
  tabla_final %>% mutate(Etapa_Vida    = as.character(Etapa_Vida),
                         Porcentaje_hi = sprintf("%.2f", Porcentaje_hi)),
  total_fila  %>% mutate(Porcentaje_hi = sprintf("%.2f", Porcentaje_hi))
)

# 5. Tabla final con gt
resultado %>%
  rename(
    "Etapa de Vida"    = Etapa_Vida,
    "Frecuencia (ni)"  = Frecuencia_ni,
    "Porcentaje (hi%)" = Porcentaje_hi
  ) %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla N°1: Distribución de Frecuencias**"),
    subtitle = md("*Variable Cualitativa Ordinal: Etapa de Vida del Pozo*")
  ) %>%
  cols_label(
    "Etapa de Vida"    = md("**Etapa de Vida**"),
    "Frecuencia (ni)"  = md("**Frecuencia (ni)**"),
    "Porcentaje (hi%)" = md("**Porcentaje (hi%)**")
  ) %>%
  tab_style(
    style = list(
      cell_fill(color = "#2C2C2C"),
      cell_text(color = "white", weight = "bold")
    ),
    locations = cells_column_labels()
  ) %>%
  tab_style(
    style = cell_fill(color = "#F5F5F5"),
    locations = cells_body(rows = seq(1, nrow(resultado), by = 2))
  ) %>%
  tab_style(
    style = list(
      cell_fill(color = "#D6D6D6"),
      cell_text(weight = "bold")
    ),
    locations = cells_body(
      rows    = `Etapa de Vida` == "TOTAL",
      columns = everything()
    )
  ) %>%
  tab_source_note(source_note = md("*Autor: Fernando Almeida*")) %>%
  tab_options(
    table.width                = pct(60),
    heading.title.font.size    = px(16),
    heading.subtitle.font.size = px(12),
    table.font.size            = px(13),
    data_row.padding           = px(6)
  )
Tabla N°1: Distribución de Frecuencias
Variable Cualitativa Ordinal: Etapa de Vida del Pozo
Etapa de Vida Frecuencia (ni) Porcentaje (hi%)
Nuevo 11615 24.32
Maduro 20939 43.84
Viejo 15203 31.83
TOTAL 47757 100.00
Autor: Fernando Almeida

5 Representación Gráfica

Se presentan tres gráficas en escala de grises que permiten analizar visualmente la distribución de la variable cualitativa ordinal Etapa de Vida del Pozo.

5.1 Diagrama de Barras frecuencia absoluta

par(mar = c(8, 6, 5, 2))
barplot(tabla_final$Frecuencia_ni,
        main      = "",
        xlab      = "",
        ylab      = "",
        col       = c("gray30", "gray60", "gray85"),
        ylim      = c(0, max(tabla_final$Frecuencia_ni) * 1.15),
        names.arg = as.character(tabla_final$Etapa_Vida),
        cex.names = 0.9,
        las       = 2)

mtext("Frecuencia (ni)", side = 2, line = 4.5, cex = 1, font = 1)
mtext("Etapa de Vida", side = 1, line = 6, cex = 1)
mtext("Gráfica N°1: Distribución de Frecuencias Absolutas por Etapa de Vida del Pozo",
      side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)

5.2 Diagrama de Barras de porcentaje

par(mar = c(8, 6, 5, 2))
bp2 <- barplot(tabla_final$Porcentaje_hi,
               main      = "",
               xlab      = "",
               ylab      = "Porcentaje %",
               col       = c("gray30", "gray60", "gray85"),
               ylim      = c(0, max(tabla_final$Porcentaje_hi) * 1.2),
               names.arg = as.character(tabla_final$Etapa_Vida),
               cex.names = 0.9,
               las       = 2)

mtext("Etapa de Vida", side = 1, line = 6, cex = 1)
mtext("Gráfica N°2: Distribución Porcentual por Etapa de Vida del Pozo",
      side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)

text(x      = bp2,
     y      = tabla_final$Porcentaje_hi,
     labels = paste0(round(tabla_final$Porcentaje_hi, 2), "%"),
     pos    = 3, cex = 0.9, col = "black")

5.3 Gráfico circular porcentual

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

colores_grises <- c("gray30", "gray60", "gray85")

pie(tabla_final$Porcentaje_hi,
    main   = "",
    radius = 1,
    labels = paste0(round(tabla_final$Porcentaje_hi, 2), "%"),
    col    = colores_grises,
    cex    = 0.9)

mtext("Gráfica N°3: Distribución Porcentual por Etapa de Vida del Pozo",
      side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)

legend(x      = 1.2,
       y      = 1,
       legend = as.character(tabla_final$Etapa_Vida),
       fill   = colores_grises,
       cex    = 0.85,
       title  = "Etapa de Vida",
       bty    = "n")

6 Indicadores Estadísticos

Para la variable cualitativa ordinal Etapa de Vida del Pozo, los indicadores de tendencia central aplicables son la moda y la mediana ordinal. La mediana se determina como la categoría que acumula el 50% de las observaciones, aprovechando el orden lógico de los niveles. La media, varianza y demás medidas de dispersión no aplican para este tipo de variable.

# Moda: categoría con mayor frecuencia
moda_etapa <- as.character(
  tabla_final$Etapa_Vida[which.max(tabla_final$Frecuencia_ni)]
)

# Mediana ordinal: categoría donde la frecuencia acumulada supera el 50%
mediana_etapa <- as.character(
  tabla_final$Etapa_Vida[which(cumsum(tabla_final$Frecuencia_ni) >= sum(tabla_final$Frecuencia_ni) / 2)[1]]
)

# Tabla de indicadores en formato largo (Indicador | Valor)
tabla_indicadores <- data.frame(
  Indicador = c(
    "Variable",
    "Tipo de variable",
    "Categorías (Rango)",
    "Moda (Mo)",
    "Mediana (Me)",
    "Media (X̄)",
    "Varianza (V)",
    "Desv. Estándar (Sd)",
    "Coef. Variación (CV%)",
    "Asimetría (As)",
    "Curtosis (K)"
  ),
  Valor = c(
    "Etapa de Vida del Pozo",
    "Cualitativa Ordinal",
    "Nuevo → Maduro → Viejo",
    moda_etapa,
    mediana_etapa,
    "—",
    "—",
    "—",
    "—",
    "—",
    "—"
  )
)

# Tabla GT de indicadores
tabla_indicadores %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla N°2: Indicadores Estadísticos**"),
    subtitle = md("*Variable Cualitativa Ordinal: Etapa de Vida del Pozo*")
  ) %>%
  cols_label(
    Indicador = md("**Indicador**"),
    Valor     = md("**Valor**")
  ) %>%
  tab_style(
    style = list(
      cell_fill(color = "#2C2C2C"),
      cell_text(color = "white", weight = "bold")
    ),
    locations = cells_column_labels()
  ) %>%
  tab_style(
    style = cell_fill(color = "#F5F5F5"),
    locations = cells_body(rows = seq(1, nrow(tabla_indicadores), by = 2))
  ) %>%
  tab_style(
    style = list(
      cell_fill(color = "#D6D6D6"),
      cell_text(weight = "bold")
    ),
    locations = cells_body(
      rows    = Indicador == "Moda (Mo)",
      columns = everything()
    )
  ) %>%
  tab_style(
    style = cell_text(style = "italic", color = "gray40"),
    locations = cells_body(
      rows    = Valor == "—",
      columns = Valor
    )
  ) %>%
  tab_source_note(source_note = md("*Autor: Fernando Almeida*")) %>%
  tab_options(
    table.width                = pct(60),
    heading.title.font.size    = px(16),
    heading.subtitle.font.size = px(12),
    table.font.size            = px(13),
    data_row.padding           = px(6)
  )
Tabla N°2: Indicadores Estadísticos
Variable Cualitativa Ordinal: Etapa de Vida del Pozo
Indicador Valor
Variable Etapa de Vida del Pozo
Tipo de variable Cualitativa Ordinal
Categorías (Rango) Nuevo → Maduro → Viejo
Moda (Mo) Maduro
Mediana (Me) Maduro
Media (X̄)
Varianza (V)
Desv. Estándar (Sd)
Coef. Variación (CV%)
Asimetría (As)
Curtosis (K)
Autor: Fernando Almeida

7 Conclusiones

La variable Etapa de Vida del Pozo fluctúa entre (Nuevo — Maduro — Viejo) sus valores giran en torno a la etapa maduro y presenta que su valor más frecuente es Maduro, con una participación del 43.84% en la muestra.


Autor: Fernando Almeida