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 KID (Identificador del Pozo) es el código numérico que identifica de forma única cada pozo dentro del conjunto de datos; funciona como llave primaria de registro, no como una magnitud susceptible de operaciones aritméticas. Se eliminan los registros sin valor (NA o vacíos).

x_raw <- datos_vale %>%
  filter(!is.na(KID)) %>%
  pull(KID)

n <- length(x_raw)

cat("Observaciones válidas:", n, "\n")
## Observaciones válidas: 47757
cat("Identificadores distintos:", length(unique(x_raw)), "\n")
## Identificadores distintos: 47757
cat("¿Todos los valores son únicos? ", length(unique(x_raw)) == n, "\n")
## ¿Todos los valores son únicos?  TRUE

3. Identificación de la Variable

Criterio Clasificación
Nombre Identificador del Pozo
Nombre técnico KID
Tipo Cualitativa
Subtipo Nominal (identificador único)
Dominio D = { x | x ∈ ℤ, x > 0 }
Rango R = { x ∈ ℤ | 1,001,103,061 ≤ x ≤ 1,057,025,403 }
Unidad No aplica
Escala Nominal
Fuente Kansas Geological Survey – Kansas, EE.UU.

Justificación: KID es un código numérico asignado arbitrariamente para diferenciar cada registro; no representa una cantidad, no admite orden natural ni operaciones aritméticas con sentido, y cada valor aparece exactamente una vez. Corresponde a una variable cualitativa nominal, pero a diferencia de una nominal policotómica típica (como Nombre del Campo), no posee categorías repetidas sobre las cuales construir una distribución de frecuencias: su análisis se limita a confirmar unicidad y describir el rango de valores que ocupa.


4. Verificación de Unicidad y Rango

Al ser un identificador, una tabla de distribución de frecuencias tradicional no aporta información (cada categoría tendría frecuencia absoluta ni = 1 y frecuencia relativa hi = 0.0021%). En su lugar, se verifica la unicidad de los 47,757 registros y se documenta el rango que ocupan.

n_unicos    <- length(unique(x_raw))
n_repetidos <- n - n_unicos
kid_min     <- min(x_raw)
kid_max     <- max(x_raw)

tabla_unicidad <- data.frame(
  Verificación = c(
    "Observaciones válidas (n)",
    "Identificadores distintos",
    "Valores repetidos",
    "Cardinalidad relativa",
    "Valor mínimo (KID)",
    "Valor máximo (KID)"
  ),
  Resultado = c(
    format(n, big.mark = ","),
    format(n_unicos, big.mark = ","),
    format(n_repetidos, big.mark = ","),
    paste0(sprintf("%.2f", n_unicos / n * 100), "%"),
    format(kid_min, big.mark = ","),
    format(kid_max, big.mark = ",")
  ),
  stringsAsFactors = FALSE
)

kable(
  tabla_unicidad,
  col.names = c("Verificación", "Resultado"),
  align     = c("l", "c"),
  escape    = FALSE
) %>%
  kable_styling(
    bootstrap_options = c("condensed", "bordered", "striped"),
    full_width = TRUE, font_size = 12
  ) %>%
  row_spec(0, bold = TRUE, background = "#2C2C2C", color = "white") %>%
  footnote(general = "Cuadro N°1: Verificación de unicidad — Autor: Araujo Valeska", general_title = "", footnote_as_chunk = TRUE)
Verificación Resultado
Observaciones válidas (n) 47,757
Identificadores distintos 47,757
Valores repetidos 0
Cardinalidad relativa 100.00%
Valor mínimo (KID) 1,001,103,061
Valor máximo (KID) 1,057,025,403
Cuadro N°1: Verificación de unicidad — Autor: Araujo Valeska

Como muestra prueba documental, se listan los primeros y los últimos 10 identificadores del conjunto de datos, ordenados de forma ascendente:

kid_ordenados <- sort(x_raw)
muestra <- data.frame(
  Posición = c(paste0("Primeros 10 (mín.)"), rep("", 9),
               paste0("Últimos 10 (máx.)"), rep("", 9)),
  KID = c(format(head(kid_ordenados, 10), big.mark = ","),
          format(tail(kid_ordenados, 10), big.mark = ",")),
  stringsAsFactors = FALSE
)

datatable(
  muestra,
  caption = "Cuadro N°2: Muestra de identificadores — extremos inferior y superior del rango.",
  rownames = FALSE,
  options  = list(pageLength = 20, dom = "t")
) %>%
  formatStyle(columns = names(muestra), fontSize = "90%")

5. Representación Gráfica

Al ser un identificador con 47,757 valores distintos, todos con frecuencia absoluta igual a 1, un diagrama de barras o circular convencional no aplica: no existen categorías con pesos diferenciables que representar. En su lugar, se presenta un histograma de la variable KID, únicamente con fines exploratorios, para verificar que los identificadores se distribuyen de forma continua a lo largo de su rango, sin vacíos ni agrupaciones anómalas que sugieran errores de carga o duplicados ocultos.

par(mar = c(6, 6, 5, 2))
hist(
  x_raw,
  breaks  = 30,
  col     = gray(0.55),
  border  = "black",
  xlab    = "", ylab = "", main = "",
  axes    = FALSE
)
axis(1, cex.axis = 0.8, labels = FALSE)
axis(1, at = axTicks(1), labels = format(axTicks(1), big.mark = ","), cex.axis = 0.7, las = 2)
axis(2, cex.axis = 0.8)
mtext("Frecuencia de registros", side = 2, line = 4.2, cex = 1)
mtext("KID (Identificador del Pozo)", side = 1, line = 4.5, cex = 1)
mtext(
  "Gráfica N°1: Distribución del Identificador del Pozo (KID)\na lo largo de su rango — Kansas, EE.UU.",
  side = 3, line = 1.5, cex = 0.9, font = 2
)
box()


6. Tabla de Indicadores

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(
    "Identificador del Pozo (KID)",
    "Cualitativa Nominal (identificador único)",
    paste0(format(n_unicos, big.mark = ","), " identificadores únicos (100% de cardinalidad)"),
    "No aplica (todos los valores son distintos)",
    "—",
    "—",
    "—",
    "—",
    "—",
    "—",
    "—"
  ),
  stringsAsFactors = FALSE
)

tabla_indicadores %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla N°2: Indicadores Estadísticos**"),
    subtitle = md("*Variable Cualitativa Nominal: Identificador del Pozo (KID)*")
  ) %>%
  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: Identificador del Pozo (KID)
Indicador Valor
Variable Identificador del Pozo (KID)
Tipo de variable Cualitativa Nominal (identificador único)
Categorías (Rango) 47,757 identificadores únicos (100% de cardinalidad)
Moda (Mo) No aplica (todos los valores son distintos)
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 KID es una variable cualitativa nominal que actúa como identificador único de cada pozo dentro del conjunto de datos: los 47,757 registros presentan 47,757 valores distintos (100.00% de cardinalidad), sin repeticiones. Por esta razón no posee moda, mediana, media ni ninguna medida de tendencia central o dispersión con sentido estadístico: su única función es servir como llave primaria de registro, permitiendo diferenciar y trazar cada pozo de forma inequívoca dentro del análisis.


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