1 Carga de Datos y Librerías

Se cargan las librerías necesarias y el dataset Global Oil and Gas Extraction Tracker (GOGET), que contiene registros de unidades de extracción de petróleo y gas a nivel mundial.

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

setwd("C:/Users/ronny/Downloads/Dataset")
datos <- read_excel("dataset_mundial_petro.xlsx") %>%
  mutate(Country = trimws(Country)) %>%
  filter(!is.na(Country), Country != "NA", Country != "",
         !is.na(`Unit type`), `Unit type` != "NA")

cat("Registros válidos:", nrow(datos), "\n")
## Registros válidos: 8334
cat("Variables:", ncol(datos), "\n")
## Variables: 32

2 Extracción de Variable Aleatoria

Se extrae la variable País (Country) y se realiza la agrupación geográfica mediante una función de asignación continental. La variable resulta ser cualitativa nominal, por lo que el análisis inferencial se basa en modelos de probabilidad discreta aplicados a las frecuencias relativas por continente.

asignar_continente <- function(pais) {
  case_when(
    pais %in% c("United States", "Canada", "Mexico", "Greenland") ~
      "América del Norte",

    pais %in% c("Venezuela", "Brazil", "Colombia", "Argentina", "Ecuador",
                "Peru", "Bolivia", "Trinidad and Tobago", "Guyana", "Suriname",
                "Chile", "Cuba", "Paraguay", "Uruguay", "Panama", "Costa Rica",
                "Honduras", "Guatemala", "Nicaragua", "El Salvador",
                "Barbados", "Haiti", "Dominican Republic", "Jamaica",
                "Belize", "Bahamas") ~
      "América del Sur y Caribe",

    pais %in% c("Norway", "United Kingdom", "Denmark", "Netherlands", "Germany",
                "Poland", "Romania", "Albania", "Serbia", "Croatia", "Hungary",
                "Czech Republic", "Austria", "Italy", "France", "Spain", "Greece",
                "Bulgaria", "Slovakia", "Ukraine", "Belarus", "Moldova",
                "Latvia", "Lithuania", "Estonia", "Finland", "Sweden",
                "Switzerland", "Belgium", "Portugal", "Ireland",
                "Bosnia and Herzegovina", "North Macedonia", "Montenegro",
                "Slovenia", "Kosovo", "Cyprus", "Russia") ~
      "Europa y Rusia",

    pais %in% c("Kazakhstan", "Azerbaijan", "Turkmenistan", "Uzbekistan",
                "Kyrgyzstan", "Tajikistan", "Georgia", "Armenia") ~
      "Asia Central y Cáucaso",

    pais %in% c("Saudi Arabia", "Iraq", "Iran", "Kuwait",
                "United Arab Emirates", "Qatar", "Bahrain", "Oman",
                "Yemen", "Syria", "Jordan", "Israel", "Lebanon", "Turkey") ~
      "Oriente Medio",

    pais %in% c("Nigeria", "Angola", "Libya", "Algeria", "Egypt", "Tunisia",
                "Gabon", "Republic of the Congo",
                "Democratic Republic of the Congo", "Congo", "Cameroon",
                "Sudan", "South Sudan", "Chad", "Equatorial Guinea",
                "Mozambique", "Tanzania", "Cote d'Ivoire", "Ivory Coast",
                "Ghana", "Niger", "Somalia", "Morocco", "Namibia",
                "Madagascar", "Senegal", "Mauritania", "Uganda", "Kenya",
                "Ethiopia", "South Africa", "Zambia", "Zimbabwe") ~
      "África",

    pais %in% c("China", "India", "Indonesia", "Malaysia", "Vietnam",
                "Thailand", "Myanmar", "Bangladesh", "Pakistan", "Brunei",
                "Philippines", "Japan", "South Korea", "North Korea",
                "Taiwan", "Mongolia", "Papua New Guinea", "Timor-Leste",
                "East Timor", "Cambodia", "Laos", "Sri Lanka",
                "Afghanistan", "Nepal", "Australia", "New Zealand") ~
      "Asia Pacífico y Oceanía",

    TRUE ~ "Otro/No especificado"
  )
}

datos <- datos %>%
  mutate(Continente = asignar_continente(Country))

n <- nrow(datos)

cat("Variable analizada: País (Country) — agrupada por Continente\n")
## Variable analizada: País (Country) — agrupada por Continente
cat("Total de observaciones (n):", n, "\n")
## Total de observaciones (n): 8334
cat("Número de países únicos:", n_distinct(datos$Country), "\n")
## Número de países únicos: 104
cat("Continentes identificados:",
    paste(sort(unique(datos$Continente)), collapse = ", "), "\n")
## Continentes identificados: África, América del Norte, América del Sur y Caribe, Asia Central y Cáucaso, Asia Pacífico y Oceanía, Europa y Rusia, Oriente Medio, Otro/No especificado

3 Tabla de Distribución de Frecuencias

Se calcula la distribución de frecuencias absolutas (nᵢ), relativas porcentuales (hᵢ%) y la probabilidad estimada (Pᵢ), equivalente a la frecuencia relativa en proporción. Esta columna Pᵢ sirve como base para el ajuste de modelos de probabilidad.

tabla_freq <- datos %>%
  count(Continente, name = "ni") %>%
  arrange(desc(ni)) %>%
  mutate(
    hi_pct  = ni / n * 100,
    Pi      = ni / n,
    i       = row_number()
  ) %>%
  select(i, Continente, ni, hi_pct, Pi)

k <- nrow(tabla_freq)

cat("── Análisis por Continente ──\n")
## ── Análisis por Continente ──
cat("Número de categorías (k)    :", k, "\n")
## Número de categorías (k)    : 8
cat("Continente más frecuente    :", tabla_freq$Continente[1],
    "—", tabla_freq$ni[1], "registros\n")
## Continente más frecuente    : América del Norte — 4468 registros
cat("Continente menos frecuente  :", tabla_freq$Continente[k],
    "—", tabla_freq$ni[k], "registro(s)\n")
## Continente menos frecuente  : Otro/No especificado — 35 registro(s)
cat("Verificación — Σnᵢ          :", sum(tabla_freq$ni), "(debe ser", n, ")\n")
## Verificación — Σnᵢ          : 8334 (debe ser 8334 )
cat("Verificación — ΣPᵢ          :", round(sum(tabla_freq$Pi), 4), "(debe ser 1)\n")
## Verificación — ΣPᵢ          : 1 (debe ser 1)
tabla_freq %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla N. 1**"),
    subtitle = md("Distribución de frecuencias por continente — yacimientos de petróleo y gas")
  ) %>%
  cols_label(
    i          = md("**N°**"),
    Continente = md("**Continente**"),
    ni         = md("**nᵢ**"),
    hi_pct     = md("**hᵢ (%)**"),
    Pi         = md("**Pᵢ**")
  ) %>%
  fmt_number(columns = ni,     decimals = 0, use_seps = TRUE) %>%
  fmt_number(columns = hi_pct, decimals = 2) %>%
  fmt_number(columns = Pi,     decimals = 4) %>%
  grand_summary_rows(
    columns = c(ni, hi_pct, Pi),
    fns = list(label = "Total", fn = "sum"),
    fmt = list(
      ~ fmt_number(., columns = ni,     decimals = 0, use_seps = TRUE),
      ~ fmt_number(., columns = hi_pct, decimals = 2),
      ~ fmt_number(., columns = Pi,     decimals = 4)
    )
  ) %>%
  tab_source_note("Autor: Grupo 5") %>%
  tab_options(
    table.width                       = pct(75),
    table.font.size                   = px(13),
    table.font.names                  = "Arial",
    heading.title.font.size           = px(15),
    heading.subtitle.font.size        = px(12),
    heading.align                     = "center",
    heading.background.color          = "#AAAAAA",
    column_labels.font.weight         = "bold",
    column_labels.background.color    = "#FFFFFF",
    column_labels.border.top.color    = "#AAAAAA",
    column_labels.border.bottom.color = "#AAAAAA",
    table.border.top.color            = "#AAAAAA",
    table.border.bottom.color         = "#AAAAAA"
  ) %>%
  tab_style(
    style     = cell_text(color = "white", weight = "bold"),
    locations = cells_title(groups = c("title", "subtitle"))
  ) %>%
  tab_style(
    style     = cell_text(weight = "bold"),
    locations = list(cells_column_labels(), cells_grand_summary())
  )
Tabla N. 1
Distribución de frecuencias por continente — yacimientos de petróleo y gas
Continente nᵢ hᵢ (%) Pᵢ
1 América del Norte 4,468 53.61 0.5361
2 Europa y Rusia 1,207 14.48 0.1448
3 América del Sur y Caribe 926 11.11 0.1111
4 Asia Pacífico y Oceanía 645 7.74 0.0774
5 África 630 7.56 0.0756
6 Oriente Medio 331 3.97 0.0397
7 Asia Central y Cáucaso 92 1.10 0.0110
8 Otro/No especificado 35 0.42 0.0042
Total 8,334 100.00 1.0000
Autor: Grupo 5

4 Análisis Gráfico

4.1 Diagrama de Barras — Frecuencia Absoluta

colores_cont <- c(
  "América del Norte"        = "#1A5276",
  "América del Sur y Caribe" = "#1E8449",
  "Europa y Rusia"           = "#C0392B",
  "Asia Central y Cáucaso"   = "#7D3C98",
  "Oriente Medio"            = "#D68910",
  "África"                   = "#D4AC0D",
  "Asia Pacífico y Oceanía"  = "#148F77",
  "Otro/No especificado"     = "#AAB7B8"
)

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

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(face = "bold", angle = 20, hjust = 1),
    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)
  )

cont_graf <- tabla_freq %>%
  mutate(Continente = fct_reorder(Continente, ni))

ggplot(cont_graf, aes(x = Continente, y = ni, fill = Continente)) +
  geom_col(width = 0.55, color = "white") +
  geom_text(aes(label = format(ni, big.mark = ",")),
            vjust = -0.4, size = 3.5, fontface = "bold") +
  scale_fill_manual(values = colores_cont) +
  scale_x_discrete(labels = function(x) str_wrap(x, width = 12)) +
  scale_y_continuous(labels = label_comma(),
                     expand = expansion(mult = c(0, 0.12))) +
  labs(title   = "Gráfica N. 1: Distribución de yacimientos por continente",
       x = "Continente", y = "Frecuencia Absoluta (nᵢ)",
       caption = pie_label) +
  tema_base

4.2 Diagrama de Barras — Frecuencia Relativa (Pᵢ)

ggplot(cont_graf, aes(x = Continente, y = Pi, fill = Continente)) +
  geom_col(width = 0.55, color = "white") +
  geom_text(aes(label = paste0(round(Pi * 100, 2), "%")),
            vjust = -0.4, size = 3.5, fontface = "bold") +
  scale_fill_manual(values = colores_cont) +
  scale_x_discrete(labels = function(x) str_wrap(x, width = 12)) +
  scale_y_continuous(labels = percent_format(accuracy = 0.1),
                     expand = expansion(mult = c(0, 0.12))) +
  labs(title   = "Gráfica N. 2: Distribución de probabilidad (Pᵢ) por continente",
       x = "Continente", y = "Probabilidad estimada (Pᵢ)",
       caption = pie_label) +
  tema_base


5 Conjetura del Modelo Geométrico

Se seleccionan las tres regiones con mayor concentración de yacimientos (Mercados Consolidados) para ajustar un Modelo Geométrico. La premisa es que la probabilidad de encontrar un yacimiento de alta densidad disminuye conforme el mercado se satura, concentrando la mayor frecuencia en la primera categoría.

# ── Agrupación: Mercados Consolidados (top 3 por frecuencia) ──────────────────
top3 <- tabla_freq %>%
  slice(1:3) %>%
  mutate(valor = row_number() - 1)   # X = 0, 1, 2 (Geométrica corrida a 0)

# Parámetro p del modelo geométrico: P(X=0) = p => p = Pi del más frecuente
p_geo <- top3$Pi[1]

# Frecuencias esperadas bajo modelo Geométrico: P(X=k) = p*(1-p)^k  normalizado
top3 <- top3 %>%
  mutate(
    Pi_esp = p_geo * (1 - p_geo)^valor,
    # Renormalizar sobre las 3 categorías
    Pi_esp = Pi_esp / sum(Pi_esp),
    ni_esp = Pi_esp * sum(ni)
  )

cat("── Modelo Geométrico — Mercados Consolidados ──\n")
## ── Modelo Geométrico — Mercados Consolidados ──
cat("Parámetro estimado p  :", round(p_geo, 4), "\n")
## Parámetro estimado p  : 0.5361
print(top3 %>% select(Continente, valor, ni, Pi, Pi_esp))
## # A tibble: 3 × 5
##   Continente               valor    ni    Pi Pi_esp
##   <chr>                    <dbl> <int> <dbl>  <dbl>
## 1 América del Norte            0  4468 0.536  0.596
## 2 Europa y Rusia               1  1207 0.145  0.276
## 3 América del Sur y Caribe     2   926 0.111  0.128

5.1 Test de Pearson

# Correlación entre frecuencias observadas y esperadas
r_geo <- cor(top3$Pi, top3$Pi_esp)
r_geo_pct <- round(r_geo * 100, 2)
cat("Test de Pearson (r)   :", round(r_geo, 4), "\n")
## Test de Pearson (r)   : 0.9704
cat("Correlación (%)       :", r_geo_pct, "%\n")
## Correlación (%)       : 97.04 %
ggplot(top3, aes(x = Pi, y = Pi_esp)) +
  geom_point(color = "#1A5276", size = 4) +
  geom_smooth(method = "lm", se = FALSE, color = "red", linewidth = 0.8) +
  labs(
    title   = "Gráfica N. 3: Correlación del Modelo Observado y Esperado\n(Mercados Consolidados — Geométrico)",
    x       = "Frecuencia Observada",
    y       = "Frecuencia Esperada",
    caption = pie_label
  ) +
  theme_minimal(base_size = 12) +
  theme(plot.title = element_text(face = "bold", size = 12, hjust = 0.5),
        plot.background = element_rect(fill = "white", color = NA))

5.2 Test de Chi-cuadrado

# Chi-cuadrado de bondad de ajuste
chi_geo <- sum((top3$ni - top3$ni_esp)^2 / top3$ni_esp)
gl_geo   <- nrow(top3) - 1 - 1   # k - 1 - parámetros estimados
umbral_geo <- qchisq(0.95, df = gl_geo)
resultado_geo <- chi_geo <= umbral_geo

cat("Chi-cuadrado calculado:", round(chi_geo, 4), "\n")
## Chi-cuadrado calculado: 289.3603
cat("Umbral de aceptación (α=0.05, gl=", gl_geo, "):", round(umbral_geo, 4), "\n")
## Umbral de aceptación (α=0.05, gl= 1 ): 3.8415
cat("Resultado (Chi ≤ Umbral):", resultado_geo, "\n")
## Resultado (Chi ≤ Umbral): FALSE

5.3 Tabla Resumen del Test

data.frame(
  Variable              = "Mercados Consolidados",
  Modelo                = "Geométrico",
  `Test Pearson (%)`    = r_geo_pct,
  `Chi Cuadrado`        = round(chi_geo, 4),
  `Umbral Aceptación`   = round(umbral_geo, 4),
  Resultado             = resultado_geo,
  check.names = FALSE
) %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N. 2 — Resumen del Test de Bondad al Modelo Geométrico**")
  ) %>%
  tab_source_note("Autor: Grupo 5") %>%
  tab_options(
    table.width                       = pct(85),
    table.font.size                   = px(13),
    table.font.names                  = "Arial",
    heading.align                     = "center",
    heading.title.font.size           = px(14),
    heading.background.color          = "#AAAAAA",
    column_labels.font.weight         = "bold",
    column_labels.background.color    = "#FFFFFF",
    column_labels.border.top.color    = "#AAAAAA",
    column_labels.border.bottom.color = "#AAAAAA",
    table.border.top.color            = "#AAAAAA",
    table.border.bottom.color         = "#AAAAAA"
  ) %>%
  tab_style(
    style     = cell_text(color = "white", weight = "bold"),
    locations = cells_title(groups = "title")
  ) %>%
  tab_style(
    style     = cell_text(weight = "bold"),
    locations = cells_column_labels()
  )
Tabla N. 2 — Resumen del Test de Bondad al Modelo Geométrico
Variable Modelo Test Pearson (%) Chi Cuadrado Umbral Aceptación Resultado
Mercados Consolidados Geométrico 97.04 289.3603 3.8415 FALSE
Autor: Grupo 5

5.4 Comparado de lo Observado frente a lo Esperado

top3_long <- rbind(
  data.frame(Continente = top3$Continente, Tipo = "Observado", Proporcion = top3$Pi),
  data.frame(Continente = top3$Continente, Tipo = "Esperado",  Proporcion = top3$Pi_esp)
)

ggplot(top3_long, aes(x = Continente, y = Proporcion, fill = Tipo)) +
  geom_col(position = "dodge", width = 0.6, color = "white") +
  geom_text(aes(label = round(Proporcion, 3)),
            position = position_dodge(width = 0.6),
            vjust = -0.4, size = 3.2, fontface = "bold") +
  scale_fill_manual(values = c("Observado" = "#AED6F1", "Esperado" = "#1A5276")) +
  scale_x_discrete(labels = function(x) str_wrap(x, width = 14)) +
  scale_y_continuous(expand = expansion(mult = c(0, 0.15))) +
  labs(
    title   = "Gráfica N. 4: Comparado de lo Observado frente a lo Esperado (Geométrico)",
    x       = "Mercado Geoeconómico",
    y       = "Porcentaje (%)",
    fill    = NULL,
    caption = pie_label
  ) +
  theme_minimal(base_size = 12) +
  theme(
    plot.title      = element_text(face = "bold", size = 12, hjust = 0.5),
    legend.position = "top",
    plot.background = element_rect(fill = "white", color = NA)
  )

5.5 Cálculo de Probabilidades

# ¿Cuál es la probabilidad de que un yacimiento seleccionado al azar pertenezca
# al continente más frecuente dentro del bloque de Mercados Consolidados?
prob_geo <- top3$Pi_esp[1]
cat(sprintf("La probabilidad estimada para el mercado de '%s' es de: %.2f%%\n",
            top3$Continente[1], prob_geo * 100))
## La probabilidad estimada para el mercado de 'América del Norte' es de: 59.56%

6 Conjetura del Modelo Binomial

Se seleccionan las cuatro regiones con menor frecuencia (Mercados Emergentes) para ajustar un Modelo Binomial. Se define como “éxito” que un yacimiento pertenezca al continente menos frecuente dentro del grupo, y se modela el número de éxitos en n ensayos independientes.

# ── Agrupación: Mercados Emergentes (últimas 4 categorías) ───────────────────
bottom4 <- tabla_freq %>%
  arrange(ni) %>%
  slice(1:4) %>%
  arrange(desc(ni)) %>%
  mutate(valor = row_number() - 1)

# Parámetro p del modelo binomial: probabilidad de "éxito" (continente base)
p_bin <- bottom4$Pi[nrow(bottom4)]   # pi del menos frecuente
n_bin <- nrow(bottom4)               # número de categorías como tamaño n

# Frecuencias esperadas bajo Binomial: P(X=k) = C(n,k)*p^k*(1-p)^(n-k)
bottom4 <- bottom4 %>%
  mutate(
    Pi_esp = choose(n_bin, valor) * p_bin^valor * (1 - p_bin)^(n_bin - valor),
    Pi_esp = Pi_esp / sum(Pi_esp),
    ni_esp = Pi_esp * sum(ni)
  )

cat("── Modelo Binomial — Mercados Emergentes ──\n")
## ── Modelo Binomial — Mercados Emergentes ──
cat("Parámetro estimado p  :", round(p_bin, 4), "\n")
## Parámetro estimado p  : 0.0042
cat("Tamaño n de ensayos   :", n_bin, "\n")
## Tamaño n de ensayos   : 4
print(bottom4 %>% select(Continente, valor, ni, Pi, Pi_esp))
## # A tibble: 4 × 5
##   Continente             valor    ni      Pi      Pi_esp
##   <chr>                  <dbl> <int>   <dbl>       <dbl>
## 1 África                     0   630 0.0756  0.983      
## 2 Oriente Medio              1   331 0.0397  0.0166     
## 3 Asia Central y Cáucaso     2    92 0.0110  0.000105   
## 4 Otro/No especificado       3    35 0.00420 0.000000295

6.1 Test de Pearson

r_bin <- cor(bottom4$Pi, bottom4$Pi_esp)
r_bin_pct <- round(r_bin * 100, 2)
cat("Test de Pearson (r)   :", round(r_bin, 4), "\n")
## Test de Pearson (r)   : 0.8882
cat("Correlación (%)       :", r_bin_pct, "%\n")
## Correlación (%)       : 88.82 %
ggplot(bottom4, aes(x = Pi, y = Pi_esp)) +
  geom_point(color = "#1E8449", size = 4) +
  geom_smooth(method = "lm", se = FALSE, color = "red", linewidth = 0.8) +
  labs(
    title   = "Gráfica N. 5: Correlación del Modelo Observado y Esperado\n(Mercados Emergentes — Binomial)",
    x       = "Frecuencia Observada",
    y       = "Frecuencia Esperada",
    caption = pie_label
  ) +
  theme_minimal(base_size = 12) +
  theme(plot.title = element_text(face = "bold", size = 12, hjust = 0.5),
        plot.background = element_rect(fill = "white", color = NA))

6.2 Test de Chi-cuadrado

chi_bin    <- sum((bottom4$ni - bottom4$ni_esp)^2 / bottom4$ni_esp)
gl_bin     <- nrow(bottom4) - 1 - 1
umbral_bin <- qchisq(0.95, df = gl_bin)
resultado_bin <- chi_bin <= umbral_bin

cat("Chi-cuadrado calculado:", round(chi_bin, 4), "\n")
## Chi-cuadrado calculado: 3895690
cat("Umbral de aceptación (α=0.05, gl=", gl_bin, "):", round(umbral_bin, 4), "\n")
## Umbral de aceptación (α=0.05, gl= 2 ): 5.9915
cat("Resultado (Chi ≤ Umbral):", resultado_bin, "\n")
## Resultado (Chi ≤ Umbral): FALSE

6.3 Tabla Resumen del Test

data.frame(
  Variable              = "Mercados Emergentes",
  Modelo                = "Binomial",
  `Test Pearson (%)`    = r_bin_pct,
  `Chi Cuadrado`        = round(chi_bin, 4),
  `Umbral Aceptación`   = round(umbral_bin, 4),
  Resultado             = resultado_bin,
  check.names = FALSE
) %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N. 3 — Resumen del Test de Bondad al Modelo Binomial**")
  ) %>%
  tab_source_note("Autor: Grupo 5") %>%
  tab_options(
    table.width                       = pct(85),
    table.font.size                   = px(13),
    table.font.names                  = "Arial",
    heading.align                     = "center",
    heading.title.font.size           = px(14),
    heading.background.color          = "#AAAAAA",
    column_labels.font.weight         = "bold",
    column_labels.background.color    = "#FFFFFF",
    column_labels.border.top.color    = "#AAAAAA",
    column_labels.border.bottom.color = "#AAAAAA",
    table.border.top.color            = "#AAAAAA",
    table.border.bottom.color         = "#AAAAAA"
  ) %>%
  tab_style(
    style     = cell_text(color = "white", weight = "bold"),
    locations = cells_title(groups = "title")
  ) %>%
  tab_style(
    style     = cell_text(weight = "bold"),
    locations = cells_column_labels()
  )
Tabla N. 3 — Resumen del Test de Bondad al Modelo Binomial
Variable Modelo Test Pearson (%) Chi Cuadrado Umbral Aceptación Resultado
Mercados Emergentes Binomial 88.82 3895690 5.9915 FALSE
Autor: Grupo 5

6.4 Comparado de lo Observado frente a lo Esperado

bottom4_long <- rbind(
  data.frame(Continente = bottom4$Continente, Tipo = "Observado", Proporcion = bottom4$Pi),
  data.frame(Continente = bottom4$Continente, Tipo = "Esperado",  Proporcion = bottom4$Pi_esp)
)

ggplot(bottom4_long, aes(x = Continente, y = Proporcion, fill = Tipo)) +
  geom_col(position = "dodge", width = 0.6, color = "white") +
  geom_text(aes(label = round(Proporcion, 3)),
            position = position_dodge(width = 0.6),
            vjust = -0.4, size = 3.2, fontface = "bold") +
  scale_fill_manual(values = c("Observado" = "#A9DFBF", "Esperado" = "#1E8449")) +
  scale_x_discrete(labels = function(x) str_wrap(x, width = 14)) +
  scale_y_continuous(expand = expansion(mult = c(0, 0.15))) +
  labs(
    title   = "Gráfica N. 6: Comparado de lo Observado frente a lo Esperado (Binomial)",
    x       = "Mercado Geoeconómico",
    y       = "Porcentaje (%)",
    fill    = NULL,
    caption = pie_label
  ) +
  theme_minimal(base_size = 12) +
  theme(
    plot.title      = element_text(face = "bold", size = 12, hjust = 0.5),
    legend.position = "top",
    plot.background = element_rect(fill = "white", color = NA)
  )

6.5 Cálculo de Probabilidades

# ¿Cuál es la probabilidad de que un nuevo yacimiento pertenezca
# al continente base (menos frecuente) dentro del bloque de Mercados Emergentes?
prob_bin <- bottom4$Pi_esp[nrow(bottom4)]
cat(sprintf("La probabilidad estimada para el mercado de '%s' es de: %.2f%%\n",
            bottom4$Continente[nrow(bottom4)], prob_bin * 100))
## La probabilidad estimada para el mercado de 'Otro/No especificado' es de: 0.00%

7 Conclusiones

```