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 Nivel de Producción Promedio (PROD_PROMEDIO), clasificada en tres niveles: Bajo, Medio y Alto, según los valores registrados en la columna AVG_PROD_LEVEL.

Clasificación en tres categorías ordinales:

datos <- datos %>%
  mutate(
    PROD_PROMEDIO = case_when(
      AVG_PROD_LEVEL == "LOW"    ~ "Bajo",
      AVG_PROD_LEVEL == "MEDIUM" ~ "Medio",
      AVG_PROD_LEVEL == "HIGH"   ~ "Alto",
      TRUE                       ~ "No registrado"
    )
  ) %>%
  filter(PROD_PROMEDIO != "No registrado")

3 Ordenamiento Lógico

Se establece el orden lógico de la variable cualitativa ordinal Nivel de Producción Promedio, respetando la progresión natural del rendimiento histórico acumulado del pozo: desde el nivel más bajo hasta el más alto. 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 (Bajo → Medio → Alto)
orden_logico <- c("Bajo", "Medio", "Alto")

# Aplicar factor ordenado a la variable PROD_PROMEDIO
datos <- datos %>%
  mutate(
    PROD_PROMEDIO = factor(PROD_PROMEDIO, 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$PROD_PROMEDIO), collapse = " → "), "\n")
## Bajo → Medio → Alto
cat("\nDistribución por nivel:\n")
## 
## Distribución por nivel:
print(table(datos$PROD_PROMEDIO))
## 
##  Bajo Medio  Alto 
## 15919 15919 15919

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(Nivel_Prod_Promedio = PROD_PROMEDIO, .drop = FALSE) %>%
  summarise(Frecuencia_ni = n(), .groups = "drop") %>%
  arrange(Nivel_Prod_Promedio)

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

# 3. Fila TOTAL
total_fila <- data.frame(
  Nivel_Prod_Promedio = "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(Nivel_Prod_Promedio = as.character(Nivel_Prod_Promedio),
                         Porcentaje_hi       = sprintf("%.2f", Porcentaje_hi)),
  total_fila  %>% mutate(Porcentaje_hi       = sprintf("%.2f", Porcentaje_hi))
)

# 5. Tabla final con gt
resultado %>%
  rename(
    "Nivel Prod. Promedio" = Nivel_Prod_Promedio,
    "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: Nivel de Producción Promedio*")
  ) %>%
  cols_label(
    "Nivel Prod. Promedio" = md("**Nivel Prod. Promedio**"),
    "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    = `Nivel Prod. Promedio` == "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: Nivel de Producción Promedio
Nivel Prod. Promedio Frecuencia (ni) Porcentaje (hi%)
Bajo 15919 33.33
Medio 15919 33.33
Alto 15919 33.33
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 Nivel de Producción Promedio de los Pozos.

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$Nivel_Prod_Promedio),
        cex.names = 0.9,
        las       = 2)

mtext("Frecuencia (ni)", side = 2, line = 4.5, cex = 1, font = 1)
mtext("Nivel de Producción Promedio", side = 1, line = 6, cex = 1)
mtext("Gráfica N°1: Distribución de Frecuencias Absolutas por Nivel de Producción Promedio",
      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$Nivel_Prod_Promedio),
               cex.names = 0.9,
               las       = 2)

mtext("Nivel de Producción Promedio", side = 1, line = 6, cex = 1)
mtext("Gráfica N°2: Distribución Porcentual por Nivel de Producción Promedio",
      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 Nivel de Producción Promedio",
      side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)

legend(x      = 1.2,
       y      = 1,
       legend = as.character(tabla_final$Nivel_Prod_Promedio),
       fill   = colores_grises,
       cex    = 0.85,
       title  = "Nivel Prod. Promedio",
       bty    = "n")

6 Indicadores Estadísticos

Para la variable cualitativa ordinal Nivel de Producción Promedio, 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_prod_prom <- as.character(
  tabla_final$Nivel_Prod_Promedio[which.max(tabla_final$Frecuencia_ni)]
)

# Mediana ordinal: categoría donde la frecuencia acumulada supera el 50%
mediana_prod_prom <- as.character(
  tabla_final$Nivel_Prod_Promedio[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(
    "Nivel de Producción Promedio",
    "Cualitativa Ordinal",
    "Bajo → Medio → Alto",
    moda_prod_prom,
    mediana_prod_prom,
    "—",
    "—",
    "—",
    "—",
    "—",
    "—"
  )
)

# Tabla GT de indicadores
tabla_indicadores %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla N°2: Indicadores Estadísticos**"),
    subtitle = md("*Variable Cualitativa Ordinal: Nivel de Producción Promedio*")
  ) %>%
  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: Nivel de Producción Promedio
Indicador Valor
Variable Nivel de Producción Promedio
Tipo de variable Cualitativa Ordinal
Categorías (Rango) Bajo → Medio → Alto
Moda (Mo) Bajo
Mediana (Me) Medio
Media (X̄)
Varianza (V)
Desv. Estándar (Sd)
Coef. Variación (CV%)
Asimetría (As)
Curtosis (K)
Autor: Fernando Almeida

7 Conclusiones

La variable Nivel de Producción Promedio fluctúa entre (Bajo — Medio — Alto) sus valores giran en torno al nivel medio y presenta que su valor más frecuente es Bajo, con una participación del 33.33% en la muestra.


Autor: Fernando Almeida