1. Configuración y Carga de Datos

En este primer paso, se prepara el entorno de trabajo cargando las librerías necesarias para el análisis de datos (dplyr), la creación de gráficas avanzadas (ggplot2), y el formato profesional de tablas (gt).

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

# Se abre ventana emergente para seleccionar dinámicamente el dataset
ruta_archivo <- file.choose()
datos_originales <- read_excel(ruta_archivo)

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

2. Extracción y Limpieza de la Variable

Se aísla la variable de interés (Subnational unit (province, state)) y se eliminan los valores nulos (NA). Esto garantiza que la distribución de frecuencias refleje exclusivamente las ubicaciones válidas reportadas.

tdf_unidades <- datos_originales %>%
  select(`Subnational unit (province, state)`) %>%
  filter(!is.na(`Subnational unit (province, state)`)) %>%
  mutate(Subnational_Unit = trimws(as.character(`Subnational unit (province, state)`))) %>%
  group_by(Subnational_Unit) %>%
  summarise(Fi = n()) %>%
  arrange(desc(Fi)) %>%
  mutate(
    hi = Fi / sum(Fi),
    Pi = hi * 100,
    Fi_ac = cumsum(Fi),
    hi_ac = cumsum(hi)
  )

N <- sum(tdf_unidades$Fi)

cat("Variable analizada: Subnational unit (province, state)\n")
## Variable analizada: Subnational unit (province, state)
cat("Total de observaciones limpias (N):", N, "\n")
## Total de observaciones limpias (N): 5278

3. Identificación de la Variable

  • Variable: SUBNATIONAL UNIT (Provincia o Estado).
  • Tipo: Cualitativa Nominal.
  • Descripción: Representa la subdivisión geopolítica (estado, provincia o región) donde se localiza el yacimiento. No posee un orden jerárquico inherente, por lo que el análisis se centra en la concentración operativa (moda).

4. Tabla de Distribución de Frecuencias (TDF)

La tabla se estructura ordenando las categorías por su frecuencia absoluta de mayor a menor. Nota: Debido a la gran cantidad de provincias a nivel mundial, esta tabla muestra el Top 20 de regiones con mayor concentración de yacimientos.

# Mostramos el Top 20 para no saturar la tabla, más la fila de totales globales
tdf_top20 <- head(tdf_unidades, 20)

fila_total <- data.frame(
  Subnational_Unit = "TOTAL GLOBAL (Todas las provincias)",
  Fi = sum(tdf_unidades$Fi),
  hi = sum(tdf_unidades$hi),
  Pi = sum(tdf_unidades$Pi),
  Fi_ac = NA,
  hi_ac = NA
)

TDF_Final <- bind_rows(tdf_top20 %>% mutate(Subnational_Unit = as.character(Subnational_Unit)), fila_total)

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

TDF_Final %>%
  gt() %>%
  tab_header(
    title = md("**TABLA 1. Top 20: Frecuencias por Unidad Subnacional (Provincia/Estado)**")
  ) %>%
  cols_label(
    Subnational_Unit = "Provincia / Estado",
    Fi = md("Frec. Absoluta<br>(Fi)"),
    hi = md("Frec. Relativa<br>(hi)"),
    Pi = md("Porcentaje<br>(%)"),
    Fi_ac = md("Frec. Abs.<br>Acumulada (Fi_ac)"),
    hi_ac = md("Frec. Rel.<br>Acumulada (hi_ac)")
  ) %>%
  cols_align(align = "center", columns = everything()) %>%
  fmt_number(columns = c(hi, hi_ac), decimals = 5) %>%
  fmt_number(columns = c(Pi), decimals = 2) %>%
  fmt_number(columns = c(Fi, Fi_ac), decimals = 0, use_seps = TRUE) %>%
  sub_missing(columns = everything(), missing_text = "") %>%
  tab_source_note(fuente_nota) %>%
  tab_style(
    style = cell_fill(color = "#F5F5F5"),
    locations = cells_body(rows = nrow(TDF_Final))
  ) %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(rows = nrow(TDF_Final))
  ) %>%
  tab_options(heading.background.color = "#EBF5FB", column_labels.font.weight = "bold")
TABLA 1. Top 20: Frecuencias por Unidad Subnacional (Provincia/Estado)
Provincia / Estado Frec. Absoluta
(Fi)
Frec. Relativa
(hi)
Porcentaje
(%)
Frec. Abs.
Acumulada (Fi_ac)
Frec. Rel.
Acumulada (hi_ac)
Texas 1,504 0.28496 28.50 1,504 0.28496
Alberta 493 0.09341 9.34 1,997 0.37836
Saskatchewan 461 0.08734 8.73 2,458 0.46571
North Dakota 368 0.06972 6.97 2,826 0.53543
Louisiana 309 0.05854 5.85 3,135 0.59397
British Columbia 190 0.03600 3.60 3,325 0.62997
Federal offshore 184 0.03486 3.49 3,509 0.66484
Wyoming 171 0.03240 3.24 3,680 0.69723
Oklahoma 140 0.02653 2.65 3,820 0.72376
Queensland 106 0.02008 2.01 3,926 0.74384
California 96 0.01819 1.82 4,022 0.76203
Casanare 74 0.01402 1.40 4,096 0.77605
New Mexico 71 0.01345 1.35 4,167 0.78950
Neuquén 69 0.01307 1.31 4,236 0.80258
Colorado 67 0.01269 1.27 4,303 0.81527
Pennsylvania 66 0.01250 1.25 4,369 0.82778
Federal Offshore 62 0.01175 1.17 4,431 0.83952
Western Australia 48 0.00909 0.91 4,479 0.84862
Meta 45 0.00853 0.85 4,524 0.85714
Alaska 42 0.00796 0.80 4,566 0.86510
TOTAL GLOBAL (Todas las provincias) 5,278 1.00000 100.00

Fuente: Global Energy Monitor — GOGET 2023 | n = 5,278

5. Representación Gráfica

Para asegurar la legibilidad y el rigor visual del reporte, las siguientes gráficas ilustran el Top 15 de las provincias/estados con mayor presencia de yacimientos.

# Filtramos el Top 15 para las gráficas
tdf_graficas <- head(tdf_unidades, 15)

# Paleta de colores dinámica
paleta_azul <- colorRampPalette(c("#08519c", "#3182bd", "#6baed6", "#9ecae1", "#c6dbef"))(nrow(tdf_graficas))

5.1. Gráfica N°1 — Frecuencia Absoluta (Top 15)

ggplot(tdf_graficas, aes(x = reorder(Subnational_Unit, -Fi), y = Fi, fill = Subnational_Unit)) +
  geom_bar(stat = "identity", show.legend = FALSE, color = "black", size = 0.3) +
  geom_text(aes(label = format(Fi, big.mark = ",")), vjust = -0.5, size = 3.5, fontface = "bold") +
  scale_fill_manual(values = paleta_azul) +
  theme_minimal() +
  labs(x = "Provincia / Estado", y = "Frecuencia Absoluta (Fi)") +
  theme(
    plot.title = element_blank(),
    axis.title = element_text(size = 12, face = "bold"),
    axis.text = element_text(size = 10),
    axis.text.x = element_text(angle = 45, hjust = 1)
  ) +
  scale_y_continuous(expand = expansion(mult = c(0, 0.15)))

5.2. Gráfica N°2 — Distribución Porcentual (Top 15)

ggplot(tdf_graficas, aes(x = reorder(Subnational_Unit, -Pi), y = Pi, fill = Subnational_Unit)) +
  geom_bar(stat = "identity", show.legend = FALSE, color = "black", size = 0.3) +
  geom_text(aes(label = paste0(round(Pi, 1), "%")), vjust = -0.5, size = 3.5, fontface = "bold") +
  scale_fill_manual(values = paleta_azul) +
  theme_minimal() +
  labs(x = "Provincia / Estado", y = "Porcentaje (%)") +
  theme(
    plot.title = element_blank(),
    axis.title = element_text(size = 12, face = "bold"),
    axis.text = element_text(size = 10),
    axis.text.x = element_text(angle = 45, hjust = 1)
  ) +
  scale_y_continuous(expand = expansion(mult = c(0, 0.15)))

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

# Preparación de etiquetas para leyenda
plot_data <- tdf_graficas %>% 
  mutate(label_leyenda = paste0(Subnational_Unit, " (", round(Pi, 1), "%)"))

ggplot(plot_data, aes(x = "", y = Pi, fill = reorder(label_leyenda, -Pi))) +
  geom_bar(stat = "identity", width = 1, color = "white", size = 0.5) +
  coord_polar("y", start = 0) +
  scale_fill_manual(values = paleta_azul) +
  theme_void() +
  theme(
    legend.position = "right", 
    legend.text = element_text(size = 11),
    legend.title = element_text(face = "bold", size = 12),
    plot.margin = margin(t = 20, r = 20, b = 20, l = 20)
  ) +
  guides(fill = guide_legend(title = "Top 15 Provincias/Estados"))

6. Tabla de Indicadores

# Cálculos de indicadores globales
num_categorias <- nrow(tdf_unidades)
moda_cat <- as.character(tdf_unidades$Subnational_Unit[1])
moda_ni <- tdf_unidades$Fi[1]
moda_hi <- round(tdf_unidades$Pi[1], 2)

tabla_ind <- data.frame(
  "Total Registros (N)" = format(N, big.mark = ","),
  "Total Provincias/Estados" = num_categorias,
  "Provincia Dominante (Moda)" = moda_cat,
  "Frecuencia de la Moda" = format(moda_ni, big.mark = ","),
  "Peso de la Moda" = paste0(moda_hi, "%"),
  check.names = FALSE
)

tabla_ind %>%
  gt() %>%
  tab_header(
    title = md("**TABLA 2. Indicadores Estadísticos Globales**")
  ) %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_source_note("Autor: Grupo 5") %>%
  tab_options(heading.background.color = "#EBF5FB", column_labels.font.weight = "bold")
TABLA 2. Indicadores Estadísticos Globales
Total Registros (N) Total Provincias/Estados Provincia Dominante (Moda) Frecuencia de la Moda Peso de la Moda
5,278 103 Texas 1,504 28.5%
Autor: Grupo 5

7. Conclusión

  • La subdivisión geopolítica Texas es la predominante a nivel mundial, aglomerando el 28.5% de los registros analizados.
  • En total, la muestra se dispersa a lo largo de 103 provincias o estados diferentes. Esta alta fragmentación subraya la importancia de identificar el “Top 15” representado en las gráficas, ya que estas locaciones principales concentran la mayor densidad de la industria energética y dictan el ritmo operativo global.