{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE, warning = FALSE, message = FALSE) library(readr) library(dplyr) library(knitr) library(kableExtra) if (!requireNamespace("gt", quietly = TRUE)) install.packages("gt", repos = "https://cloud.r-project.org") library(gt)


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.

```{r carga_datos} ruta_archivo <- “C:/Users/thann/OneDrive/Escritorio/ESTADISTICA.LOL/datos_vale.csv”

datos_vale <- read_delim( ruta_archivo, delim = “;”, show_col_types = FALSE )

cat(“Base de datos cargada correctamente.”) cat(“Total de registros (filas):”, nrow(datos_vale), “”)


---

## 2. Extracción y Limpieza de la Variable

La variable **LONGITUDE_LATITUDE_SOURCE** (Fuente de Coordenadas) identifica el método o sistema utilizado para registrar las coordenadas geográficas de cada arrendamiento. Se eliminan los registros sin valor (NA o vacíos).

```{r extraer_variable}
x_raw <- datos_vale %>%
  filter(!is.na(LONGITUDE_LATITUDE_SOURCE), LONGITUDE_LATITUDE_SOURCE != "") %>%
  pull(LONGITUDE_LATITUDE_SOURCE)

n <- length(x_raw)

cat("Observaciones válidas:", n, "\n")
cat("Fuentes distintas:", length(unique(x_raw)), "\n")

3. Identificación de la Variable

Criterio Clasificación
Nombre Fuente de Coordenadas
Nombre técnico LONGITUDE_LATITUDE_SOURCE
Tipo Cualitativa
Subtipo Nominal policotómica
Dominio Métodos/sistemas de georreferenciación registrados
Rango Múltiples categorías
Unidad No aplica
Escala Nominal
Fuente Kansas Geological Survey – Kansas, EE.UU.

Justificación: La variable identifica el origen de los datos de localización sin establecer un orden jerárquico entre las fuentes. Corresponde a una variable cualitativa nominal policotómica. Se construye la tabla de distribución de frecuencias con frecuencia absoluta, porcentual y en fracción.


4. Tabla de Distribución de Frecuencias

Se construye la tabla de distribución de frecuencias de la variable Fuente de Coordenadas, correspondiente a los arrendamientos de hidrocarburos registrados en Kansas, EE.UU. (n = r format(n, big.mark=",")).

```{r tabla_frecuencias} freq_abs <- sort(table(x_raw), decreasing = TRUE) categorias <- names(freq_abs) ni <- as.integer(freq_abs) hi_pct <- ni / n * 100 hi_frac <- ni / n

tabla_df <- data.frame( Categoria = categorias, ni = ni, hi_pct = sprintf(“%.2f%%”, hi_pct), hi_frac = sprintf(“%.4f”, hi_frac), stringsAsFactors = FALSE )

total_row <- data.frame( Categoria = “TOTAL”, ni = n, hi_pct = “100.00%”, hi_frac = “1.0000”, stringsAsFactors = FALSE )

tabla_df\(ni <- as.character(tabla_df\)ni) total_row\(ni <- as.character(total_row\)ni)

tabla_final <- bind_rows(tabla_df, total_row)

kable( tabla_final, caption = paste0( “Cuadro N°1: Distribución de Frecuencias de la Variable Cualitativa Nominal Fuente de Coordenadas,”, “registrada en los arrendamientos de hidrocarburos del estado de Kansas, EE.UU.,”, “período histórico disponible (n =”, format(n, big.mark = “,”), ” registros válidos).” ), col.names = c(“Fuente de Coordenadas”, “Frecuencia (nᵢ)”, “Porcentaje (hᵢ %)”, “Porcentaje en fracción (hᵢ)”), align = c(“l”, “c”, “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”) %>% row_spec(nrow(tabla_final), bold = TRUE, background = “#a9a9a9”, color = “black”)


---

## 4.1 Justificación del Análisis por Agrupaciones

La variable **LONGITUDE_LATITUDE_SOURCE** presenta **`r length(unique(x_raw))` categorías distintas**, lo que supera ampliamente el umbral de 5–6 categorías recomendado para el análisis nominal directo. Con tantas fuentes individuales, la tabla de frecuencias resulta extensa y dificulta la identificación de patrones generales: categorías con frecuencias bajas fragmentan la lectura sin aportar información interpretativa relevante.

Por esta razón, se reagrupan las categorías originales en **grupos temáticos** según el tipo o tecnología de georreferenciación que representan. Este criterio de agrupación —ampliamente utilizado en estadística descriptiva para variables nominales policotómicas con muchas modalidades— permite:

- **Reducir la dispersión categorial** sin perder la esencia informativa de la variable.
- **Identificar patrones de mayor escala**: qué familias de métodos de geolocalización predominan en los registros de Kansas.
- **Facilitar la comparación visual** en los gráficos, ya que un número menor de categorías produce diagramas más legibles e interpretables.

Los grupos definidos son los siguientes:

| Grupo | Descripción | Criterio de clasificación |
|-------|-------------|--------------------------|
| **GPS / GNSS** | Sistemas de posicionamiento satelital | Categorías con referencia a GPS, GNSS o satélite |
| **PLSS / Legal** | Sistema de agrimensura rectangular y descripciones legales | Categorías basadas en PLSS, sección, township o range |
| **Digitalización / Cartografía** | Métodos basados en digitalización de mapas o fotografía | Categorías de digitalización o fotointerpretación |
| **Estimación / Calculado** | Valores estimados o calculados indirectamente | Categorías con cálculo aproximado o sin fuente precisa |
| **Otro / No especificado** | Categorías que no encajan en los grupos anteriores | Resto de categorías |

> **Nota:** La agrupación se realiza de forma programática a partir de los valores reales presentes en los datos. Las categorías de cada grupo se asignan mediante coincidencia de patrones de texto (*pattern matching*), garantizando reproducibilidad y trazabilidad del criterio utilizado.

```{r agrupacion_categorias}
asignar_grupo <- function(fuente) {
  fuente_up <- toupper(fuente)
  dplyr::case_when(
    grepl("GPS|GNSS|SATELIT|SATELLITE|GLOBAL POSITION", fuente_up) ~ "GPS / GNSS",
    grepl("PLSS|SECTION|TOWNSHIP|RANGE|LEGAL|SURVEY|PUBLIC LAND", fuente_up) ~ "PLSS / Legal",
    grepl("DIGIT|MAP|CARTO|PHOTO|AERIAL|ORTHO|GIS|SCAN", fuente_up) ~ "Digitalización / Cartografía",
    grepl("ESTIM|CALC|APPROX|INTERPOLAT|INFER|COMPUTED|DERIVED", fuente_up) ~ "Estimación / Calculado",
    TRUE ~ "Otro / No especificado"
  )
}

grupos_raw <- asignar_grupo(x_raw)

cat("Distribución por grupo:\n")
print(sort(table(grupos_raw), decreasing = TRUE))

4.2 Tabla de Distribución de Frecuencias por Agrupaciones

Se construye la tabla de distribución de frecuencias de la variable Fuente de Coordenadas agrupada por tipo de tecnología/método de georreferenciación (n = r format(length(x_raw), big.mark=",")).

```{r tabla_agrupaciones} n_g <- length(grupos_raw)

freq_g <- sort(table(grupos_raw), decreasing = TRUE) grupos_n <- names(freq_g) ni_g <- as.integer(freq_g) hi_pct_g <- ni_g / n_g * 100 hi_frac_g <- ni_g / n_g

tabla_g <- data.frame( Grupo = grupos_n, ni = ni_g, hi_pct = sprintf(“%.2f%%”, hi_pct_g), hi_frac = sprintf(“%.4f”, hi_frac_g), stringsAsFactors = FALSE )

total_g <- data.frame( Grupo = “TOTAL”, ni = n_g, hi_pct = “100.00%”, hi_frac = “1.0000”, stringsAsFactors = FALSE )

tabla_g\(ni <- as.character(tabla_g\)ni) total_g\(ni <- as.character(total_g\)ni)

tabla_g_final <- bind_rows(tabla_g, total_g)

kable( tabla_g_final, caption = paste0( “Cuadro N0b03: Distribución de Frecuencias por Agrupaciones de la Variable Cualitativa Nominal Fuente de Coordenadas,”, “registrada en los arrendamientos de hidrocarburos del estado de Kansas, EE.UU.,”, “período histórico disponible (n =”, format(n_g, big.mark = “,”), ” registros válidos).” ), col.names = c(“Grupo de Fuente de Coordenadas”, “Frecuencia (nd62)”, “Porcentaje (hd62 %)”, “Porcentaje en fracción (hd62)”), align = c(“l”, “c”, “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”) %>% row_spec(nrow(tabla_g_final), bold = TRUE, background = “#a9a9a9”, color = “black”)


---

## 4.3 Representación Gráfica por Agrupaciones

### 4.3.1 Gráfica — Diagrama de Barras por Grupo (Frecuencia Absoluta)

```{r barras_grupos_abs, fig.width=9, fig.height=6}
freq_g_ord <- sort(table(grupos_raw), decreasing = TRUE)
colores_g2 <- gray(seq(0.30, 0.80, length.out = length(freq_g_ord)))

par(mar = c(9, 6, 7, 2))
bp_g <- barplot(
  as.numeric(freq_g_ord),
  names.arg = names(freq_g_ord),
  col       = colores_g2,
  border    = "black",
  ylim      = c(0, max(as.numeric(freq_g_ord)) * 1.18),
  xlab      = "", ylab = "", main = "", las = 2, cex.names = 0.80
)
text(bp_g, as.numeric(freq_g_ord) + max(as.numeric(freq_g_ord)) * 0.02,
     labels = format(as.numeric(freq_g_ord), big.mark = ","), cex = 0.85)
mtext("Frecuencia Absoluta (n\u1d62)", side = 2, line = 4.5, cex = 1)
mtext("Grupo de Fuente de Coordenadas", side = 1, line = 7.5, cex = 1)
mtext(
  "Diagrama de Barras \u2014 Frecuencia Absoluta por Agrupaci\u00f3n\nde la Variable Fuente de Coordenadas, Kansas, EE.UU.",
  side = 3, line = 3.5, cex = 0.9, font = 2
)

4.3.2 Gráfica — Diagrama de Barras por Grupo (Porcentaje)

```{r barras_grupos_pct, fig.width=9, fig.height=6} pct_g_ord <- sort(table(grupos_raw) / n_g * 100, decreasing = TRUE)

par(mar = c(9, 6, 7, 2)) bp_g2 <- barplot( as.numeric(pct_g_ord), names.arg = names(pct_g_ord), col = colores_g2, border = “black”, ylim = c(0, max(as.numeric(pct_g_ord)) * 1.18), xlab = ““, ylab =”“, main =”“, las = 2, cex.names = 0.80 ) text(bp_g2, as.numeric(pct_g_ord) + max(as.numeric(pct_g_ord)) * 0.02, labels = paste0(round(as.numeric(pct_g_ord), 2),”%“), cex = 0.85) mtext(”Porcentaje (hd62 %)“, side = 2, line = 4.5, cex = 1) mtext(”Grupo de Fuente de Coordenadas”, side = 1, line = 7.5, cex = 1) mtext( “Diagrama de Barras 014 Porcentaje por Agrupaci0f3nla Variable Fuente de Coordenadas, Kansas, EE.UU.”, side = 3, line = 3.5, cex = 0.9, font = 2 )


### 4.3.3 Gráfica — Diagrama Circular por Grupo

```{r circular_grupos, fig.width=9, fig.height=7}
pct_g_circ <- table(grupos_raw) / n_g * 100
grises_g   <- gray(seq(0.15, 0.85, length.out = length(pct_g_circ)))

par(mar = c(2, 2, 6, 14), xpd = TRUE)
pie(
  as.numeric(pct_g_circ),
  labels  = paste0(round(as.numeric(pct_g_circ), 2), "%"),
  col     = grises_g,
  border  = "black",
  main    = "",
  radius  = 1,
  cex     = 0.85
)
legend(
  x      = 1.2,
  y      = 1,
  legend = names(pct_g_circ),
  fill   = grises_g,
  cex    = 0.75,
  title  = "Grupo",
  bty    = "n"
)
mtext(
  "Diagrama Circular \u2014 Distribución Porcentual por Agrupación\nde la Variable Fuente de Coordenadas, Kansas, EE.UU.",
  side = 3, line = 3.5, cex = 0.9, font = 2
)

4.4 Indicadores por Agrupaciones

```{r indicadores_grupos} moda_g_val <- names(sort(table(grupos_raw), decreasing = TRUE))[1] moda_g_n <- max(table(grupos_raw))

indicadores_g <- data.frame( Tamaño muestral (n) = format(n_g, big.mark = “,”), Número de grupos = as.character(length(unique(grupos_raw))), Moda (grupo) = moda_g_val, Frecuencia de la moda = format(moda_g_n, big.mark = “,”), Porcentaje de la moda = paste0(round(moda_g_n / n_g * 100, 2), “%”), check.names = FALSE, stringsAsFactors = FALSE )

kable( indicadores_g, caption = “Cuadro N0b04: Indicadores de la Variable Cualitativa Nominal Fuente de Coordenadas 014 Análisis por Agrupaciones, arrendamientos de hidrocarburos, Kansas, EE.UU.”, align = “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”)


---

## 5. Representación Gráfica

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

```{r barras_absoluta, fig.width=9, fig.height=6}
freq_ord  <- sort(table(x_raw), decreasing = TRUE)
colores_g <- gray(seq(0.30, 0.80, length.out = length(freq_ord)))

par(mar = c(9, 6, 7, 2))
bp <- barplot(
  as.numeric(freq_ord),
  names.arg = names(freq_ord),
  col       = colores_g,
  border    = "black",
  ylim      = c(0, max(as.numeric(freq_ord)) * 1.18),
  xlab      = "", ylab = "", main = "", las = 2, cex.names = 0.75
)
text(bp, as.numeric(freq_ord) + max(as.numeric(freq_ord)) * 0.02,
     labels = format(as.numeric(freq_ord), big.mark = ","), cex = 0.85)
mtext("Frecuencia Absoluta (nᵢ)", side = 2, line = 4.5, cex = 1)
mtext("Fuente de Coordenadas",     side = 1, line = 7.5, cex = 1)
mtext(
  "Gráfica N°1: Diagrama de Barras — Frecuencia Absoluta\nde la Variable Fuente de Coordenadas, Kansas, EE.UU.",
  side = 3, line = 3.5, cex = 0.9, font = 2
)

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

```{r barras_porcentaje, fig.width=9, fig.height=6} pct_ord <- sort(table(x_raw) / n * 100, decreasing = TRUE)

par(mar = c(9, 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.75 ) text(bp2, as.numeric(pct_ord) + max(as.numeric(pct_ord)) * 0.02, labels = paste0(round(as.numeric(pct_ord), 2),”%“), cex = 0.85) mtext(”Porcentaje (hᵢ %)“, side = 2, line = 4.5, cex = 1) mtext(”Fuente de Coordenadas”, side = 1, line = 7.5, cex = 1) mtext( “Gráfica N°2: Diagrama de Barras — Porcentajela Variable Fuente de Coordenadas, Kansas, EE.UU.”, side = 3, line = 3.5, cex = 0.9, font = 2 )


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

```{r circular, fig.width=9, fig.height=7}
pct_circ <- table(x_raw) / n * 100
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 = names(pct_circ),
  fill   = grises_c,
  cex    = 0.75,
  title  = "Fuente",
  bty    = "n"
)
mtext(
  "Gráfica N°3: Diagrama Circular — Distribución Porcentual\nde la Variable Fuente de Coordenadas, Kansas, EE.UU.",
  side = 3, line = 3.5, cex = 0.9, font = 2
)

6. Tabla de Indicadores

```{r indicadores} moda_val <- names(sort(table(x_raw), decreasing = TRUE))[1] moda_n <- max(table(x_raw))

indicadores_h <- data.frame( Tamaño muestral (n) = format(n, big.mark = “,”), Número de categorías = as.character(length(unique(x_raw))), Moda = moda_val, Frecuencia de la moda = format(moda_n, big.mark = “,”), Porcentaje de la moda = paste0(round(moda_n / n * 100, 2), “%”), check.names = FALSE, stringsAsFactors = FALSE )

kable( indicadores_h, caption = “Cuadro N°2: Indicadores de la Variable Cualitativa Nominal Fuente de Coordenadas, arrendamientos de hidrocarburos, Kansas, EE.UU.”, align = “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”) ```


7. Conclusión

El análisis de la variable Fuente de Coordenadas revela los sistemas de georreferenciación utilizados para registrar la ubicación de los arrendamientos en Kansas. Con r length(unique(x_raw)) fuentes distintas identificadas, la fuente modal es r names(sort(table(x_raw), decreasing = TRUE))[1], que representa el r round(max(table(x_raw))/n*100, 2)% de los registros, evidenciando el método de localización predominante en la base de datos.


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