1 Carga de Datos y Librerías

Preparación del entorno de trabajo cargando los paquetes necesarios para el manejo de datos, formato de tablas y visualización de gráficas.

library(readxl)
library(dplyr)
library(gt)
library(ggplot2)
library(scales)

# Selección del archivo Excel (se abre ventana emergente)
ruta_archivo <- file.choose()
Datos <- read_excel(ruta_archivo)

cat("Dataset cargado exitosamente. Total de variables importadas:", ncol(Datos), "\n")
## Dataset cargado exitosamente. Total de variables importadas: 32

2 Extracción de la Variable

Se extrae y limpia la variable Subnational unit (Provincia / Estado). Se eliminan los valores nulos y se estandarizan los textos, ya que un número considerable de registros no cuenta con este dato reportado (por ejemplo, yacimientos offshore o unidades no divididas administrativamente).

Variable <- Datos$`Subnational unit (province, state)` %>%
  na.omit() %>%
  as.character() %>%
  trimws()
Variable <- Variable[Variable != ""]

N <- length(Variable)

cat("Variable analizada: Subnational unit\n")
## Variable analizada: Subnational unit
cat("Tipo de variable: Cualitativa Nominal\n")
## Tipo de variable: Cualitativa Nominal
cat("Total de observaciones útiles (n):", N, "\n")
## Total de observaciones útiles (n): 5278

3 Conteo y Cálculo

La variable Subnational Unit es de naturaleza cualitativa nominal. Al tratarse de una subdivisión administrativa (provincia/estado), presenta una alta cardinalidad (muchas categorías distintas), por lo que se calcula la frecuencia absoluta, relativa y porcentual de cada una, ordenando de mayor a menor concentración.

TDF_Cat <- data.frame(Categoria = Variable) %>%
  group_by(Categoria) %>%
  summarise(ni = n(), .groups = "drop") %>%
  arrange(desc(ni)) %>%
  mutate(
    hi_unit = ni / N,
    hi_perc = hi_unit * 100,
    Ni_ac = cumsum(ni),
    hi_ac_perc = cumsum(hi_perc)
  )

K_real <- nrow(TDF_Cat)

cat("Número de categorías distintas (k):", K_real, "\n")
## Número de categorías distintas (k): 103

4 Tabla de Distribución de Frecuencias

Dado que esta variable presenta 103 categorías, se utiliza una tabla interactiva con buscador y paginación para mantener la legibilidad. Se puede escribir el nombre de una provincia/estado en el buscador para ubicarla directamente.

fuente_nota <- paste("n =", format(N, big.mark = ","), "| Fuente: Global Energy Monitor — GOGET 2023")

TDF_Cat %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N°1**"),
    subtitle = md("Distribución de frecuencias de Subnational Unit")
  ) %>%
  cols_label(
    Categoria = "Provincia / Estado", ni = md("n~i~"),
    hi_unit = md("h~i~ (Unit)"), hi_perc = md("h~i~ (%)"),
    Ni_ac = md("N~i~ (Acum \u2191)"), hi_ac_perc = md("H~i~ (% Acum \u2191)")
  ) %>%
  cols_align(align = "center", columns = everything()) %>%
  fmt_number(columns = c(hi_perc, hi_ac_perc), decimals = 2) %>%
  fmt_number(columns = c(hi_unit), decimals = 4) %>%
  fmt_number(columns = c(ni, Ni_ac), decimals = 0, use_seps = TRUE) %>%
  tab_source_note(fuente_nota) %>%
  tab_options(heading.background.color = "#EBF5FB", column_labels.font.weight = "bold") %>%
  opt_interactive(use_search = TRUE, use_pagination = TRUE, page_size_default = 10, use_compact_mode = TRUE)
Tabla N°1
Distribución de frecuencias de Subnational Unit
n = 5,278 | Fuente: Global Energy Monitor — GOGET 2023

5 Gráficas

Debido a que existen 103 categorías, graficarlas todas resultaría ilegible. Por ello, las gráficas muestran las Top 15 provincias/estados con mayor número de yacimientos, agrupando el resto en la categoría “Otros”.

TOP_N <- 15

top_cats <- TDF_Cat %>% slice_head(n = TOP_N)
otros_n <- sum(TDF_Cat$ni) - sum(top_cats$ni)
otros_categorias <- K_real - TOP_N

df_graf <- top_cats %>%
  select(Categoria, ni, hi_perc) %>%
  bind_rows(
    data.frame(
      Categoria = paste0("Otros (", otros_categorias, " categorías)"),
      ni = otros_n,
      hi_perc = (otros_n / N) * 100
    )
  ) %>%
  mutate(Categoria = factor(Categoria, levels = Categoria))

K_graf <- nrow(df_graf)
paleta_azul <- colorRampPalette(c("#08519c", "#3182bd", "#6baed6", "#9ecae1", "#c6dbef"))(K_graf)

tema_base <- theme_minimal(base_size = 12) +
  theme(
    legend.position = "none",
    plot.title = element_text(face = "bold", size = 13),
    plot.caption = element_text(color = "#888888", size = 9, hjust = 0),
    axis.title = element_text(face = "bold", size = 11),
    axis.text.x = element_text(angle = 45, hjust = 1, size = 9),
    panel.grid.major.x = element_blank(),
    panel.grid.major.y = element_line(color = "#EEEEEE"),
    panel.grid.minor = element_blank(),
    plot.background = element_rect(fill = "white", color = NA)
  )

5.1 Diagrama de Barras — Frecuencia Absoluta (Top 15)

ggplot(df_graf, aes(x = Categoria, y = ni, fill = Categoria)) +
  geom_col(color = "black", linewidth = 0.3) +
  geom_text(aes(label = format(ni, big.mark = ",")), vjust = -0.4, size = 3.3, fontface = "bold") +
  scale_fill_manual(values = paleta_azul) +
  scale_y_continuous(labels = label_comma(), expand = expansion(mult = c(0, 0.15))) +
  labs(title = "Diagrama de Barras de Frecuencia Absoluta (Top 15 + Otros)",
       x = "Provincia / Estado", y = "Frecuencia Absoluta (ni)",
       caption = fuente_nota) +
  tema_base

5.2 Diagrama de Barras — Frecuencia Relativa Porcentual (Top 15)

ggplot(df_graf, aes(x = Categoria, y = hi_perc, fill = Categoria)) +
  geom_col(color = "black", linewidth = 0.3) +
  geom_text(aes(label = paste0(round(hi_perc, 1), "%")), vjust = -0.4, size = 3.3, fontface = "bold") +
  scale_fill_manual(values = paleta_azul) +
  scale_y_continuous(labels = function(x) paste0(x, "%"), expand = expansion(mult = c(0, 0.15))) +
  labs(title = "Diagrama de Barras de Frecuencia Relativa Porcentual (Top 15 + Otros)",
       x = "Provincia / Estado", y = "Frecuencia Relativa (%)",
       caption = fuente_nota) +
  tema_base

5.3 Diagrama Circular (Top 15)

df_pie <- df_graf %>%
  mutate(etiqueta = paste0(Categoria, " (", round(hi_perc, 1), "%)"))

ggplot(df_pie, aes(x = "", y = hi_perc, fill = reorder(etiqueta, -hi_perc))) +
  geom_col(width = 1, color = "white", linewidth = 0.5) +
  coord_polar("y", start = 0) +
  scale_fill_manual(values = paleta_azul) +
  theme_void(base_size = 12) +
  theme(
    legend.position = "right",
    legend.text = element_text(size = 9),
    legend.title = element_text(face = "bold", size = 11),
    plot.margin = margin(t = 20, r = 20, b = 20, l = 20)
  ) +
  guides(fill = guide_legend(title = "Provincia / Estado"))

6 Indicadores Estadísticos

La variable Subnational Unit es cualitativa nominal, por lo que el único indicador de tendencia central aplicable es la moda, complementado con el número de categorías presentes y el nivel de concentración geográfica.

num_categorias <- K_real
moda_cat <- TDF_Cat$Categoria[1]
moda_ni <- TDF_Cat$ni[1]
moda_hi <- round(TDF_Cat$hi_perc[1], 2)
top5_hi <- round(sum(TDF_Cat$hi_perc[1:5]), 2)

tabla_ind <- data.frame(
  Variable = "Subnational Unit",
  Total_N = format(N, big.mark = ","),
  Num_Categorias = num_categorias,
  Moda = moda_cat,
  Frec_Moda = format(moda_ni, big.mark = ","),
  Peso_Moda = paste0(moda_hi, "%"),
  Peso_Top5 = paste0(top5_hi, "%"),
  check.names = FALSE
)

tabla_ind %>%
  gt() %>%
  tab_header(title = md("**Tabla N°2: Indicadores Estadísticos de Subnational Unit**")) %>%
  cols_label(
    Variable = "Variable",
    Total_N = "Total Registros (N)",
    Num_Categorias = "N° Categorías",
    Moda = "Categoría Dominante (Moda)",
    Frec_Moda = "Frecuencia de la Moda",
    Peso_Moda = "Peso de la Moda",
    Peso_Top5 = "Peso Top 5"
  ) %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_source_note("Autor: Grupo 5") %>%
  tab_options(heading.background.color = "#EBF5FB", column_labels.font.weight = "bold")
Tabla N°2: Indicadores Estadísticos de Subnational Unit
Variable Total Registros (N) N° Categorías Categoría Dominante (Moda) Frecuencia de la Moda Peso de la Moda Peso Top 5
Subnational Unit 5,278 103 Texas 1,504 28.5% 59.4%
Autor: Grupo 5

7 Conclusiones

La provincia/estado Texas es la categoría predominante, abarcando el 28.5% de los 5,278 registros con dato reportado, dentro de un universo de 103 subdivisiones administrativas distintas. Las 5 categorías más frecuentes concentran en conjunto el 59.4% del total, lo que evidencia una fuerte concentración geográfica de los yacimientos en unas pocas provincias/estados clave, coherente con la ubicación de las principales cuencas sedimentarias productoras a nivel mundial.