1. Configuración y Carga de Datos

Se carga el conjunto de datos de arrendamientos de hidrocarburos del estado de Kansas, EE.UU., registrados por el Kansas Geological Survey.

ruta_archivo <- file.choose()
datos_vale <- read_csv(ruta_archivo, show_col_types = FALSE)

cat("Dataset cargado correctamente.\n")
## Dataset cargado correctamente.
cat("Total de registros evaluados (filas):", nrow(datos_vale), "\n")
## Total de registros evaluados (filas): 47757

2. Extracción y Limpieza de la Variable

La variable OPERATOR_NAME (Nombre del Operador) identifica la empresa u operador responsable de cada arrendamiento. Se eliminan los registros sin valor (NA o vacíos). Para el análisis se presenta la distribución de frecuencias completa (todas las categorías), y un resumen gráfico de las 10 categorías más representativas.

x_raw <- datos_vale %>%
  filter(!is.na(OPERATOR_NAME), OPERATOR_NAME != "") %>%
  pull(OPERATOR_NAME)

n <- length(x_raw)

cat("Observaciones válidas:", n, "\n")
## Observaciones válidas: 47757
cat("Operadores distintos:", length(unique(x_raw)), "\n")
## Operadores distintos: 3362

3. Identificación de la Variable

Criterio Clasificación
Nombre Nombre del Operador
Nombre técnico OPERATOR_NAME
Tipo Cualitativa
Subtipo Nominal policotómica
Dominio Nombres de empresas/operadores registrados en Kansas
Rango Múltiples categorías
Unidad No aplica
Escala Nominal
Fuente Kansas Geological Survey – Kansas, EE.UU.

Justificación: La variable registra nombres de empresas u operadores sin orden natural entre ellos. Corresponde a una variable cualitativa nominal policotómica. Se analiza a través de la distribución de frecuencias completa de sus categorías.


4. Tabla de Distribución de Frecuencias

Se presenta la distribución de frecuencias completa de la variable Nombre del Operador, con las 3,362 categorías registradas en Kansas, EE.UU. (n total = 47,757). La tabla es interactiva: permite buscar un operador específico, ordenar por cualquier columna y ajustar el número de filas visibles, de modo que se conserva el 100% de la información sin omitir ninguna categoría.

freq_completa <- sort(table(x_raw), decreasing = TRUE)

categorias_todas <- names(freq_completa)
ni_todas          <- as.integer(freq_completa)
hi_pct_todas      <- ni_todas / n * 100

# Sin redondeo: se conserva el valor real de la Frecuencia Relativa tal como
# se calcula (ni/n*100), sin recortarlo a un número fijo de decimales.
tabla_completa <- data.frame(
  `Nombre del Operador` = categorias_todas,
  `Frecuencia (ni)`     = ni_todas,
  `Porcentaje (hi%)`    = hi_pct_todas,
  check.names = FALSE,
  stringsAsFactors = FALSE
)

datatable(
  tabla_completa,
  caption = paste0(
    "Cuadro N°1: Distribución de Frecuencias Completa — ",
    format(length(categorias_todas), big.mark = ","), " Operadores distintos, ",
    "arrendamientos de hidrocarburos del estado de Kansas, EE.UU., ",
    "período histórico disponible (n total = ", format(n, big.mark = ","), " registros válidos)."
  ),
  rownames = FALSE,
  filter   = "top",
  options  = list(
    pageLength = 10,
    lengthMenu = c(10, 25, 50, 100),
    order      = list(list(1, "desc")),
    scrollX    = TRUE
  )
) %>%
  formatStyle(columns = names(tabla_completa), fontSize = "90%") %>%
  formatStyle("Frecuencia (ni)", fontWeight = "bold")
# Fila de TOTAL (suma de todas las categorías): confirma que la Frecuencia
# Absoluta suma exactamente n y la Frecuencia Relativa suma 100.00%.
tabla_total <- data.frame(
  Categoria = "TOTAL",
  ni        = format(n, big.mark = ","),
  hi_pct    = sprintf("%.2f", sum(hi_pct_todas)),
  stringsAsFactors = FALSE
)

kable(
  tabla_total,
  col.names = c("", "Frecuencia (ni)", "Porcentaje (hi%)"),
  align     = c("l", "c", "c"),
  escape    = FALSE
) %>%
  kable_styling(
    bootstrap_options = c("condensed", "bordered"),
    full_width = TRUE, font_size = 12
  ) %>%
  row_spec(1, bold = TRUE, background = "#a9a9a9", color = "black") %>%
  footnote(general = "Autor: Araujo Valeska", general_title = "", footnote_as_chunk = TRUE)
Frecuencia (ni) Porcentaje (hi%)
TOTAL 47,757 100.00
Autor: Araujo Valeska

5. Representación Gráfica

Dado que la variable Nombre del Operador presenta 3,362 categorías distintas, representarlas todas en un gráfico de barras o circular resultaría en una visualización ilegible (etiquetas superpuestas, barras imperceptibles) y en un documento excesivamente extenso. Por esta razón, las gráficas a continuación se limitan a las 10 categorías con mayor frecuencia absoluta, que en conjunto concentran la mayor parte de los arrendamientos y permiten un resumen visual claro y comprensible. La información completa de las 3,362 categorías —sin ningún dato omitido— queda disponible en la tabla interactiva del Cuadro N°1.

top10      <- head(freq_completa, 10)
categorias <- names(top10)
ni         <- as.integer(top10)
hi_pct     <- ni / n * 100

5.1 Gráfica N°1 — Diagrama de Barras (Frecuencia Absoluta — Top 10)

# Se reutiliza el mismo Top 10 ya ordenado por frecuencia (categorias/ni)
# calculado en el Cuadro N°1, para garantizar idéntico orden entre tabla y gráfica.
top10_ord <- setNames(ni, categorias)
colores_g <- gray(seq(0.30, 0.80, length.out = length(top10_ord)))

par(mar = c(10, 6, 7, 2))
bp <- barplot(
  as.numeric(top10_ord),
  names.arg = names(top10_ord),
  col       = colores_g,
  border    = "black",
  ylim      = c(0, max(as.numeric(top10_ord)) * 1.18),
  xlab      = "", ylab = "", main = "", las = 2, cex.names = 0.7
)
text(bp, as.numeric(top10_ord) + max(as.numeric(top10_ord)) * 0.02,
     labels = format(as.numeric(top10_ord), big.mark = ","), cex = 0.8)
mtext("Frecuencia Absoluta (nᵢ)", side = 2, line = 4.5, cex = 1)
mtext("Nombre del Operador",       side = 1, line = 8.5, cex = 1)
mtext(
  "Gráfica N°1: Diagrama de Barras — Frecuencia Absoluta\nTop 10 Operadores, Kansas, EE.UU.",
  side = 3, line = 3.5, cex = 0.9, font = 2
)

5.2 Gráfica N°2 — Diagrama de Barras (Porcentaje — Top 10)

# Mismo orden y categorías que el Cuadro N°1 (hi_pct ya viene alineado con categorias)
pct_ord <- setNames(hi_pct, categorias)

par(mar = c(10, 6, 7, 2))
bp2 <- barplot(
  as.numeric(pct_ord),
  names.arg = names(pct_ord),
  col       = colores_g,
  border    = "black",
  ylim      = c(0, max(as.numeric(pct_ord)) * 1.18),
  xlab      = "", ylab = "", main = "", las = 2, cex.names = 0.7
)
text(bp2, as.numeric(pct_ord) + max(as.numeric(pct_ord)) * 0.02,
     labels = paste0(round(as.numeric(pct_ord), 2), "%"), cex = 0.8)
mtext("Porcentaje (hᵢ %)",  side = 2, line = 4.5, cex = 1)
mtext("Nombre del Operador", side = 1, line = 8.5, cex = 1)
mtext(
  "Gráfica N°2: Diagrama de Barras — Porcentaje\nTop 10 Operadores, Kansas, EE.UU.",
  side = 3, line = 3.5, cex = 0.9, font = 2
)

5.3 Gráfica N°3 — Diagrama Circular (Distribución Porcentual — Top 10)

# Mismo orden y categorías que el Cuadro N°1
pct_circ <- setNames(hi_pct, categorias)
grises_c <- gray(seq(0.15, 0.85, length.out = length(pct_circ)))

par(mar = c(2, 2, 6, 12), xpd = TRUE)
pie(
  as.numeric(pct_circ),
  labels  = paste0(round(as.numeric(pct_circ), 2), "%"),
  col     = grises_c,
  border  = "black",
  main    = "",
  radius  = 1,
  cex     = 0.85
)
legend(
  x      = 1.2,
  y      = 1,
  legend = paste0(categorias, " (", format(ni, big.mark = ","), ")"),
  fill   = grises_c,
  cex    = 0.7,
  title  = "Operador (nᵢ)",
  bty    = "n"
)
mtext(
  "Gráfica N°3: Diagrama Circular — Distribución Porcentual\nTop 10 Operadores, Kansas, EE.UU.",
  side = 3, line = 3.5, cex = 0.9, font = 2
)


6. Tabla de Indicadores

moda_val     <- names(sort(table(x_raw), decreasing = TRUE))[1]
moda_n       <- max(table(x_raw))
n_categorias <- length(unique(x_raw))

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(
    "Nombre del Operador",
    "Cualitativa Nominal Policotómica",
    paste0(format(n_categorias, big.mark = ","), " operadores distintos"),
    moda_val,
    "—",
    "—",
    "—",
    "—",
    "—",
    "—",
    "—"
  ),
  stringsAsFactors = FALSE
)

tabla_indicadores %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla N°2: Indicadores Estadísticos**"),
    subtitle = md("*Variable Cualitativa Nominal: Nombre del Operador*")
  ) %>%
  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: Araujo Valeska*")) %>%
  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 Nominal: Nombre del Operador
Indicador Valor
Variable Nombre del Operador
Tipo de variable Cualitativa Nominal Policotómica
Categorías (Rango) 3,362 operadores distintos
Moda (Mo) River Rock Operating, LLC
Mediana (Me)
Media (X̄)
Varianza (V)
Desv. Estándar (Sd)
Coef. Variación (CV%)
Asimetría (As)
Curtosis (K)
Autor: Araujo Valeska

7. Conclusión

La variable Nombre del Operador es una variable cualitativa nominal policotómica cuyas categorías corresponden a los 3,362 operadores distintos registrados en Kansas. Su valor más frecuente (moda) es “River Rock Operating, LLC”, con una participación del 4.36% en la muestra, lo que evidencia la concentración de los arrendamientos de hidrocarburos en un número reducido de operadores frente a la alta dispersión del resto de categorías.


Autor: Araujo Valeska | Análisis Estadístico — Kansas Hydrocarbon Leases Dataset