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 FIELD_NAME (Nombre del Campo) identifica el campo petrolífero al que pertenece 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(FIELD_NAME), FIELD_NAME != "") %>%
  pull(FIELD_NAME)

n <- length(x_raw)

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

3. Identificación de la Variable

Criterio Clasificación
Nombre Nombre del Campo
Nombre técnico FIELD_NAME
Tipo Cualitativa
Subtipo Nominal policotómica
Dominio Nombres de campos petrolíferos 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 geográficos de campos 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 Campo, con las 5,962 categorías registradas en Kansas, EE.UU. (n total = 47,757). La tabla es interactiva: permite buscar un campo 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 Campo`  = 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 = ","), " Campos Petrolíferos 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")

Debido al elevado número de categorías (5,962 campos distintos), representarlas todas resultaría poco práctico tanto para la lectura de la tabla como para su análisis. Por ello, a partir de este punto se trabaja únicamente con el Top 10 por frecuencia absoluta, con el fin de facilitar la lectura e interpretación de los resultados. La tabla completa presentada arriba (Cuadro N°1) se conserva únicamente como referencia, con el 100% de la información disponible.

4.1 Top 10 de categorías con mayor frecuencia absoluta

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

tabla_top10 <- data.frame(
  `Nombre del Campo`   = categorias,
  `Frecuencia (ni)`    = ni,
  `Porcentaje (hi%)`   = round(hi_pct, 2),
  check.names = FALSE,
  stringsAsFactors = FALSE
)

kable(
  tabla_top10,
  caption = paste0(
    "Cuadro N°2: Top 10 Campos Petrolíferos con Mayor Frecuencia Absoluta — ",
    "arrendamientos de hidrocarburos del estado de Kansas, EE.UU. ",
    "(n total = ", format(n, big.mark = ","), " registros válidos)."
  ),
  align  = c("l", "c", "c"),
  escape = FALSE
) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed", "bordered"),
    full_width = TRUE, font_size = 12
  ) %>%
  row_spec(0, bold = TRUE, background = "#d3d3d3", color = "black") %>%
  footnote(general = "Autor: Araujo Valeska", general_title = "", footnote_as_chunk = TRUE)
Cuadro N°2: Top 10 Campos Petrolíferos con Mayor Frecuencia Absoluta — arrendamientos de hidrocarburos del estado de Kansas, EE.UU. (n total = 47,757 registros válidos).
Nombre del Campo Frecuencia (ni) Porcentaje (hi%)
UNKNOWN 4506 9.44
CHEROKEE BASIN COAL AREA 3736 7.82
HUGOTON GAS AREA 2708 5.67
Spivey-Grabs-Basil 826 1.73
PANOMA GAS AREA 754 1.58
PAOLA-RANTOUL 534 1.12
Cherry Creek Niobrara Gas Area 519 1.09
Chase-Silica 516 1.08
TRAPP 358 0.75
BRADSHAW GAS AREA 312 0.65
Autor: Araujo Valeska

5. Representación Gráfica

A partir del Top 10 de categorías con mayor frecuencia absoluta (Cuadro N°2) se construyen las siguientes gráficas, que permiten un resumen visual claro y comprensible de los campos con mayor participación. La información completa de las 5,962 categorías —sin ningún dato omitido— queda disponible en la tabla interactiva del Cuadro N°1.

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°2, 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 Campo",          side = 1, line = 8.5, cex = 1)
mtext(
  "Gráfica N°1: Diagrama de Barras — Frecuencia Absoluta\nTop 10 Campos Petrolíferos, 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°2 (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 Campo",   side = 1, line = 8.5, cex = 1)
mtext(
  "Gráfica N°2: Diagrama de Barras — Porcentaje\nTop 10 Campos Petrolíferos, 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  = "Campo (nᵢ)",
  bty    = "n"
)
mtext(
  "Gráfica N°3: Diagrama Circular — Distribución Porcentual\nTop 10 Campos Petrolíferos, 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 Campo",
    "Cualitativa Nominal Policotómica",
    paste0(format(n_categorias, big.mark = ","), " campos distintos"),
    moda_val,
    "—",
    "—",
    "—",
    "—",
    "—",
    "—",
    "—"
  ),
  stringsAsFactors = FALSE
)

tabla_indicadores %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla N°3: Indicadores Estadísticos**"),
    subtitle = md("*Variable Cualitativa Nominal: Nombre del Campo*")
  ) %>%
  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°3: Indicadores Estadísticos
Variable Cualitativa Nominal: Nombre del Campo
Indicador Valor
Variable Nombre del Campo
Tipo de variable Cualitativa Nominal Policotómica
Categorías (Rango) 5,962 campos distintos
Moda (Mo) UNKNOWN
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 Campo es una variable cualitativa nominal policotómica cuyas categorías corresponden a los 5,962 campos petrolíferos distintos registrados en Kansas. Su valor más frecuente (moda) es “UNKNOWN”, con una participación del 9.44% en la muestra, lo que evidencia la concentración de los arrendamientos de hidrocarburos en un número reducido de campos frente a la alta dispersión del resto de categorías.


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