1 Configuración y Carga de Datos

##### UNIVERSIDAD CENTRAL DEL ECUADOR #####
#### CARRERA: INGENIERÍA EN PETRÓLEOS #####

#### VARIABLE SUBNATIONAL UNIT ####
## DATASET ##

# Cargar dataset
library(readxl)
Datos <- read_excel("dataset_mundial_petro.xlsx")

## Estructura de los datos
str(Datos)
## tibble [49,212 × 32] (S3: tbl_df/tbl/data.frame)
##  $ Unit ID                           : chr [1:49212] "OG0000001" "OG0000002" "OG0000006" "OG0000007" ...
##  $ Unit Name                         : chr [1:49212] "Matzen" "Abalone" "Aguilhada" "Agulha" ...
##  $ Unit name local script            : chr [1:49212] NA "Abalone" "Aguilhada" "Agulha" ...
##  $ Fuel type                         : chr [1:49212] "oil and gas" "oil and gas" "oil and gas" "oil and gas" ...
##  $ Unit type                         : chr [1:49212] "field" "field" "field" "field" ...
##  $ Country                           : chr [1:49212] "Austria" "Brazil" "Brazil" "Brazil" ...
##  $ Subnational unit (province, state): chr [1:49212] NA "Espírito Santo" "Sergipe" "Rio Grande do Norte" ...
##  $ Latitude                          : num [1:49212] 48.4 -21.4 -10.7 -4.9 -22.1 ...
##  $ Longitude                         : num [1:49212] 16.7 -39.6 -36.9 -36.3 -40 ...
##  $ Location accuracy                 : chr [1:49212] "approximate" "exact" "exact" "exact" ...
##  $ Status                            : chr [1:49212] "operating" "operating" "operating" "operating" ...
##  $ Status year                       : num [1:49212] 2023 2022 2022 2022 2022 ...
##  $ Discovery year                    : num [1:49212] 1949 2001 1966 1975 1984 ...
##  $ FID Year                          : chr [1:49212] NA NA NA NA ...
##  $ Production start year             : chr [1:49212] "1951" "2009" "1969" "1979" ...
##  $ Operator                          : chr [1:49212] "OMV" "Shell Brasil Petróleo Ltda." NA NA ...
##  $ Owner                             : chr [1:49212] "OMV (100%)" "Shell Brasil (50%);ONGC Campos (27%);Qatarenergy (23%)" "Petrobras (100%)" "Petrobras (100%)" ...
##  $ Parent                            : chr [1:49212] "OMV Aktiengesellschaft (100%)" "Shell plc (50%);Oil and Natural Gas Corporation (ONGC) (27%)" "Petróleo Brasileiro S.A. (100%)" "Petróleo Brasileiro S.A. (100%)" ...
##  $ Basin                             : chr [1:49212] NA NA NA NA ...
##  $ Concession / block                : chr [1:49212] NA NA NA NA ...
##  $ Project or complex                : chr [1:49212] "Matzen" NA NA NA ...
##  $ Government unit ID                : chr [1:49212] NA NA NA NA ...
##  $ Wiki URL                          : chr [1:49212] "https://www.gem.wiki/Matzen_Oil_and_Gas_Field_(Austria)" "https://www.gem.wiki/Abalone_Oil_and_Gas_Field_%28Esp%C3%ADrito_Santo%2C_Brazil%29" "https://www.gem.wiki/Aguilhada_Oil_and_Gas_Field_%28Sergipe%2C_Brazil%29" "https://www.gem.wiki/Agulha_Oil_and_Gas_Field_%28Rio_Grande_do_Norte%2C_Brazil%29" ...
##  $ Unit name2                        : logi [1:49212] NA NA NA NA NA NA ...
##  $ Production/reserves               : logi [1:49212] NA NA NA NA NA NA ...
##  $ Fuel description                  : logi [1:49212] NA NA NA NA NA NA ...
##  $ Reserves classification (original): logi [1:49212] NA NA NA NA NA NA ...
##  $ Quantity (original)               : logi [1:49212] NA NA NA NA NA NA ...
##  $ Units (original)                  : logi [1:49212] NA NA NA NA NA NA ...
##  $ Data year                         : logi [1:49212] NA NA NA NA NA NA ...
##  $ Quantity (converted)              : logi [1:49212] NA NA NA NA NA NA ...
##  $ Units (converted)                 : logi [1:49212] NA NA NA NA NA NA ...
# Cargamos las librerías
library(dplyr)
library(ggplot2)
library(gt)

2 Extraer Variable

Se realizó la agrupación geográfica de la variable Subnational unit filtrando únicamente los registros con datos válidos (no nulos) y clasificando las provincias/estados en 7 regiones continentales mediante expresiones regulares en R. Esto permitió consolidar los 5,278 registros válidos en categorías homogéneas para facilitar el tratamiento inferencial de los datos registrados a nivel global.

# Filtrar registros con Subnational unit no nulo
tabla_SUB <- Datos %>%
  select(Provincia = `Subnational unit (province, state)`) %>%
  filter(!is.na(Provincia))

# Corrección de codificación en nombres especiales
tabla_SUB$Provincia <- gsub("Neuquén", "Neuquén", tabla_SUB$Provincia)
tabla_SUB$Provincia <- gsub("EspÃ\u00adrito Santo", "Espírito Santo", tabla_SUB$Provincia)

# Agrupación geográfica por continente basada en los países del dataset
tabla_SUB <- tabla_SUB %>%
  ungroup() %>%
  mutate(Continente = case_when(

    # América del Norte
    grepl("Texas|Louisiana|Oklahoma|California|Alaska|Wyoming|Colorado|Pennsylvania|
           New Mexico|North Dakota|Ohio|West Virginia|Federal offshore|Federal Offshore|
           Oklahoma-Texas-Kansas", 
          Provincia, ignore.case = TRUE) ~ "América del Norte (USA)",

    # Canadá
    grepl("Alberta|Saskatchewan|British Columbia|Manitoba|Newfoundland & Labrador",
          Provincia, ignore.case = TRUE) ~ "Canadá",

    # América Central y Caribe
    grepl("Tabasco|Veracruz|Chiapas|Tamaulipas|Nuevo León|Coahuila|Hidalgo|Puebla|
           Matanzas|Habana",
          Provincia, ignore.case = TRUE) ~ "América Central y Caribe",

    # América del Sur
    grepl("Casanare|Meta|Santander|Huila|Arauca|Putumayo|Cesar|Boyaca|Antioquia|
           Sucre|Tolima|Norte de Santander|Guajira|Atlantico|Magdalena|Cauca|
           Neuquén|Chubut|Mendoza|Rio Negro|La Pampa|Salta|Tierra del Fuego|
           Cordoba|Estado Nacional|Rio de Janeiro|São Paulo|Espírito Santo|
           Rio Grande do Norte|Sergipe|Maranhão|Bahia|Alagoas|Amazonas|Bolivar|
           Santa Cruz|Tarija|Cochabamba|Chuquisaca|Piura|Loreto|Tumbes|Ucayali|
           Cusco|Amazônia",
          Provincia, ignore.case = TRUE) ~ "América del Sur",

    # Asia / Pacífico - China
    grepl("Xinjiang|Bohai Sea|South China Sea|Sichuan|Shandong|Chongqing|Shaanxi|
           Qinghai|Heilongjiang|Liaoning|Gansu|Inner Mongolia|Jilin|East China Sea|
           Tianjin|Hebei|Hubei|Shanxi|China",
          Provincia, ignore.case = TRUE) ~ "Asia",

    # Oceanía
    grepl("Queensland|Western Australia|Victoria|Northern Territory|
           New South Wales|Tasmania|South Australia",
          Provincia, ignore.case = TRUE) ~ "Oceanía",

    # Otros / No Especificado
    TRUE ~ "Otros / No Especificado"
  ))

3 Tabla de Distribución de Frecuencias

Se calculó la distribución de frecuencias absolutas \((n_i)\) y relativas \((h_i)\). Los resultados determinan que América del Norte (USA) predomina con la mayor concentración de registros, seguida por Canadá, lo que evidencia una fuerte concentración del desarrollo de unidades petroleras en el eje norteamericano.

TDF_subnacional <- table(tabla_SUB$Continente)

Tabla <- as.data.frame(TDF_subnacional)

colnames(Tabla) <- c("Continente", "ni")

Tabla$Continente <- as.character(Tabla$Continente)

Tabla$`hi (%)` <- (Tabla$ni / sum(Tabla$ni)) * 100

fila_total <- tibble(
  Continente = "TOTAL",
  ni = sum(Tabla$ni),
  `hi (%)` = sum(Tabla$`hi (%)`)
)

tabla_Final <- bind_rows(Tabla, fila_total)

tabla_gt <- tabla_Final %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N°1 de Distribución de Frecuencias por Región — Subnational Unit**")
  ) %>%
  tab_source_note(
    source_note = "Autor: Estalin"
  ) %>%
  cols_label(
    Continente = "Región / Continente",
    ni = "Frecuencia (ni)",
    `hi (%)` = "Porcentaje (hi%)"
  ) %>%
  fmt_number(
    columns = `hi (%)`,
    decimals = 2
  ) %>%
  tab_options(
    heading.title.font.size = px(16),
    column_labels.background.color = "#F0F0F0"
  )

tabla_gt
Tabla N°1 de Distribución de Frecuencias por Región — Subnational Unit
Región / Continente Frecuencia (ni) Porcentaje (hi%)
América Central y Caribe 106 2.01
América del Norte (USA) 3077 58.30
América del Sur 425 8.05
Asia 108 2.05
Canadá 1177 22.30
Oceanía 171 3.24
Otros / No Especificado 214 4.05
TOTAL 5278 100.00
Autor: Estalin

4 Análisis Gráfico

4.1 Diagramas de Barras de Cantidad

Mediante un diagrama de barras de cantidad, se identificó una distribución global asimétrica con una dominancia clara de América del Norte (USA) sobre las demás regiones. Esta observación justificó la división del análisis en dos agrupaciones geoeconómicas (Mercados Consolidados y Mercados Emergentes) para aplicar modelos de probabilidad que describan el comportamiento de exploración y desarrollo en cada segmento.

Tabla_Grafica <- tabla_Final %>% filter(Continente != "TOTAL")

par(mar = c(11, 4, 4, 2))
barplot(height = Tabla_Grafica$ni,
        names.arg = Tabla_Grafica$Continente,
        main = "Gráfica N°1: Distribución de Cantidad de Unidades Petroleras por Región",
        xlab = "",
        ylab = "Cantidad",
        col = "skyblue",
        las = 3,
        cex.names = 0.8,
        cex.main = 0.85,
        ylim = c(0, max(Tabla_Grafica$ni) * 1.2))
mtext("Región Geográfica", side = 1, line = 9)


5 Agrupación 1 (Mercados Consolidados)

Se realiza un mapeo asignando valores numéricos a las potencias petroleras líderes. Este proceso permite cuantificar la presencia regional para ajustar el Modelo Geométrico a la frecuencia observada de los mercados con mayor madurez tecnológica e infraestructura consolidada.

# 1. Definición de niveles consolidados
niveles_consolidados <- c("América del Norte (USA)", "Canadá", "Oceanía")

Datos_Consolidados <- tabla_SUB %>%
  filter(Continente %in% niveles_consolidados)

Datos_Consolidados$Continente <- factor(Datos_Consolidados$Continente,
                                        levels = niveles_consolidados,
                                        ordered = TRUE)

TDF_G1_Cons <- as.data.frame(table(Datos_Consolidados$Continente))
colnames(TDF_G1_Cons) <- c("Continente", "ni")

TDF_G1_Cons$X <- 0:(nrow(TDF_G1_Cons) - 1)
TDF_G1_Cons$hi <- TDF_G1_Cons$ni / sum(TDF_G1_Cons$ni)

TDF_G1_Cons %>%
  select(Continente, X, ni, hi) %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N°2 de Distribución de Frecuencias del Continente - Mapeado**"),
    subtitle = "Segmento: Mercados Consolidados (Liderazgo Global)"
  ) %>%
  tab_source_note(source_note = "Autor: Estalin") %>%
  cols_label(
    Continente = "Continente",
    X = "Valor Asignado",
    ni = "Frecuencia (ni)",
    hi = "Porcentaje (hi%)"
  ) %>%
  fmt_number(columns = hi, decimals = 4) %>%
  tab_options(
    heading.title.font.size = px(16),
    column_labels.background.color = "#F0F0F0"
  )
Tabla N°2 de Distribución de Frecuencias del Continente - Mapeado
Segmento: Mercados Consolidados (Liderazgo Global)
Continente Valor Asignado Frecuencia (ni) Porcentaje (hi%)
América del Norte (USA) 0 3077 0.6954
Canadá 1 1177 0.2660
Oceanía 2 171 0.0386
Autor: Estalin

5.1 Conjetura del Modelo (Geométrico)

Se seleccionan las regiones de América del Norte (USA), Canadá y Oceanía para analizar el comportamiento del liderazgo industrial. Se aplica un Modelo Geométrico bajo la premisa de que la probabilidad de encontrar una unidad petrolera de alta capacidad disminuye conforme el mercado se vuelve más exigente y saturado, concentrando la mayor frecuencia en América del Norte (USA) como el principal nodo de exploración y producción global.

n_total_cons <- sum(TDF_G1_Cons$ni)
media_obs_cons <- sum(TDF_G1_Cons$X * TDF_G1_Cons$ni) / n_total_cons

prob_geom_cons <- 1 / (media_obs_cons + 1)

P_Geom_Cons <- dgeom(TDF_G1_Cons$X, prob = prob_geom_cons)
P_Geom_Cons <- P_Geom_Cons / sum(P_Geom_Cons)  # Normalización

par(mar = c(10, 5, 5, 2))
barplot(rbind(TDF_G1_Cons$hi, P_Geom_Cons),
        beside = TRUE,
        main = "Gráfica N°2: Comparado de lo Observado frente a lo Esperado (Consolidados)",
        ylab = "Porcentaje (%)",
        names.arg = TDF_G1_Cons$Continente,
        col = c("skyblue", "blue"),
        legend.text = c("Observado", "Esperado"),
        args.legend = list(x = "topright", bty = "n", cex = 0.8),
        las = 2,
        cex.names = 0.8,
        cex.main = 0.8)
mtext("Mercado Geoeconómico", side = 1, line = 8)

5.2 Test de Pearson

Fo_C <- TDF_G1_Cons$hi
Fe_C <- P_Geom_Cons

plot(Fo_C, Fe_C,
     main = "Gráfica N°3: Correlación del Modelo Observado y Esperado de Mercados Consolidados",
     cex.main = 0.7,
     xlab = "Frecuencia Observada",
     ylab = "Frecuencia Esperada",
     pch = 19, col = "#21618C")
abline(lm(Fe_C ~ Fo_C), col = "red", lwd = 2)

Correlacion_C <- cor(Fo_C, Fe_C) * 100
Correlacion_C
## [1] 98.81594

5.3 Test de Chi-cuadrado

x2_C <- sum(((Fo_C - Fe_C)^2) / Fe_C)

gl_C <- length(Fo_C) - 1

vc_C <- qchisq(0.95, gl_C)

x2_C
## [1] 0.03456819
vc_C
## [1] 5.991465
x2_C < vc_C
## [1] TRUE

5.4 Tabla Resumen del Test

tabla_resumen_C <- data.frame(
  Variable = "Mercados Consolidados",
  Pearson = round(Correlacion_C, 2),
  Chi2 = round(x2_C, 4),
  Umbral = round(vc_C, 2),
  Resultado = x2_C < vc_C
)

tabla_resumen_C %>%
  gt() %>%
  cols_label(
    Variable = "Variable",
    Pearson = "Test Pearson (%)",
    Chi2 = "Chi Cuadrado",
    Umbral = "Umbral de Aceptación",
    Resultado = "Resultado"
  ) %>%
  tab_header(
    title = md("**Tabla N°3 Resumen del Test de Bondad al Modelo de Probabilidad**")
  ) %>%
  tab_source_note(source_note = "Autor: Estalin") %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_options(
    heading.title.font.size = px(16),
    column_labels.background.color = "#F0F0F0"
  )
Tabla N°3 Resumen del Test de Bondad al Modelo de Probabilidad
Variable Test Pearson (%) Chi Cuadrado Umbral de Aceptación Resultado
Mercados Consolidados 98.82 0.0346 5.99 TRUE
Autor: Estalin

5.5 Cálculo de Probabilidades

¿Cuál es la probabilidad de que una unidad petrolera seleccionada de forma aleatoria dentro del bloque de mercados consolidados esté ubicada específicamente en América del Norte (USA)?

prob_usa_geom <- dgeom(0, prob = prob_geom_cons)

paste0("La probabilidad estimada para el mercado de América del Norte (USA) es de: ",
       round(prob_usa_geom * 100, 2), "%")
## [1] "La probabilidad estimada para el mercado de América del Norte (USA) es de: 74.44%"

6 Agrupación 2 (Mercados Emergentes)

Se asignan valores numéricos a las categorías de los mercados en vías de desarrollo. Esta codificación permite parametrizar el Modelo de Poisson, el cual es ideal para evaluar la tasa de aparición de proyectos en regiones con densidades industriales variables.

# 1. Definición de niveles y filtrado
niveles_emergentes <- c("América del Sur", "América Central y Caribe", "Asia", "Otros / No Especificado")

Datos_Emergentes <- tabla_SUB %>%
  filter(Continente %in% niveles_emergentes)

# 2. Creación de Tabla de Frecuencias
TDF_G2_Emer <- as.data.frame(table(Datos_Emergentes$Continente))
colnames(TDF_G2_Emer) <- c("Continente", "ni")

# 3. Ordenamiento jerárquico para optimizar el modelo de Poisson
TDF_G2_Emer <- TDF_G2_Emer %>% arrange(desc(ni))

# 4. Mapeo y cálculo de hi
TDF_G2_Emer$X <- 0:(nrow(TDF_G2_Emer) - 1)
TDF_G2_Emer$hi <- TDF_G2_Emer$ni / sum(TDF_G2_Emer$ni)

# 5. Visualización con formato exacto de la Tabla N°2
TDF_G2_Emer %>%
  select(Continente, X, ni, hi) %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N°4 de Distribución de Frecuencias del Continente - Mapeado**"),
    subtitle = "Segmento: Mercados Emergentes"
  ) %>%
  tab_source_note(source_note = "Autor: Estalin") %>%
  cols_label(
    Continente = "Continente",
    X = "Valor Asignado",
    ni = "Frecuencia (ni)",
    hi = "Porcentaje (hi%)"
  ) %>%
  fmt_number(columns = hi, decimals = 4) %>%
  tab_options(
    heading.title.font.size = px(16),
    heading.subtitle.font.size = px(14),
    column_labels.background.color = "#F0F0F0"
  )
Tabla N°4 de Distribución de Frecuencias del Continente - Mapeado
Segmento: Mercados Emergentes
Continente Valor Asignado Frecuencia (ni) Porcentaje (hi%)
América del Sur 0 425 0.4982
Otros / No Especificado 1 214 0.2509
Asia 2 108 0.1266
América Central y Caribe 3 106 0.1243
Autor: Estalin

6.1 Conjetura del Modelo (Poisson)

Esta agrupación comprende las regiones de América del Sur, América Central y Caribe, Asia y Otros. Se propone un Modelo de Poisson para representar este segmento, ya que es el más robusto para modelar eventos independientes que ocurren con una tasa constante en un área geográfica. A diferencia de otros modelos, Poisson captura mejor la dispersión de proyectos en mercados donde la infraestructura aún no es uniforme, permitiendo un ajuste de alta precisión al Sur Global.

n_total_emerg <- sum(TDF_G2_Emer$ni)
lambda_emerg <- sum(TDF_G2_Emer$X * TDF_G2_Emer$ni) / n_total_emerg

P_Pois_Emer <- dpois(TDF_G2_Emer$X, lambda = lambda_emerg)
P_Pois_Emer <- P_Pois_Emer / sum(P_Pois_Emer)

par(mar = c(10, 5, 5, 2))
barplot(rbind(TDF_G2_Emer$hi, P_Pois_Emer),
        beside = TRUE,
        main = "Gráfica N°4: Comparado de lo Observado frente a lo Esperado (Poisson)",
        ylab = "Porcentaje (%)",
        names.arg = TDF_G2_Emer$Continente,
        col = c("skyblue", "blue"),
        legend.text = c("Observado", "Esperado"),
        args.legend = list(x = "topright", bty = "n"),
        las = 2,
        cex.names = 0.8,
        cex.main = 0.8)
mtext("Mercado Geoeconómico", side = 1, line = 9)

6.2 Test de Pearson

Fo_E <- TDF_G2_Emer$hi
Fe_E <- P_Pois_Emer

plot(Fo_E, Fe_E,
     main = "Gráfica N°5: Correlación del Modelo (Poisson) en Mercados Emergentes",
     xlab = "Frecuencia Observada", ylab = "Frecuencia Esperada",
     pch = 19, col = "#1B4F72")
abline(lm(Fe_E ~ Fo_E), col = "red", lwd = 2)

Correlacion_E <- cor(Fo_E, Fe_E) * 100
Correlacion_E
## [1] 85.33401

6.3 Test de Chi-cuadrado

x2_E <- sum(((Fo_E - Fe_E)^2) / Fe_E)
gl_E <- length(Fo_E) - 1
vc_E <- qchisq(0.95, gl_E)

x2_E
## [1] 0.1847983
vc_E
## [1] 7.814728
x2_E < vc_E
## [1] TRUE

6.4 Tabla Resumen del Test

tabla_resumen_E <- data.frame(
  Variable = "Mercados Emergentes",
  Pearson = round(Correlacion_E, 2),
  Chi2 = round(x2_E, 4),
  Umbral = round(vc_E, 2),
  Resultado = x2_E < vc_E
)

tabla_resumen_E %>%
  gt() %>%
  cols_label(
    Variable = "Variable",
    Pearson = "Test Pearson (%)",
    Chi2 = "Chi Cuadrado",
    Umbral = "Umbral de Aceptación",
    Resultado = "Resultado"
  ) %>%
  tab_header(
    title = md("**Tabla N°5 Resumen del Test de Bondad (Modelo Poisson)**")
  ) %>%
  tab_source_note(source_note = "Autor: Estalin") %>%
  tab_options(
    heading.title.font.size = px(16),
    column_labels.background.color = "#F0F0F0"
  )
Tabla N°5 Resumen del Test de Bondad (Modelo Poisson)
Variable Test Pearson (%) Chi Cuadrado Umbral de Aceptación Resultado
Mercados Emergentes 85.33 0.1848 7.81 TRUE
Autor: Estalin

6.5 Cálculo de Probabilidades

¿Cuál es la probabilidad estimada de que una nueva unidad petrolera se localice específicamente en América del Sur (Valor 0) bajo la tasa de ocurrencia de Poisson?

prob_sur_pois <- dpois(0, lambda = lambda_emerg)

paste0("La probabilidad estimada para América del Sur es de: ",
       round(prob_sur_pois * 100, 2), "%")
## [1] "La probabilidad estimada para América del Sur es de: 41.61%"

7 Conclusiones

El análisis probabilístico permitió modelar la distribución geográfica de las unidades petroleras a nivel mundial mediante un modelo geométrico para los mercados consolidados y un modelo de Poisson para los mercados emergentes. Los resultados muestran una clara dominancia del eje norteamericano en el liderazgo industrial, mientras que en el segmento de mercados en desarrollo, América del Sur se posiciona como la región con mayor tasa de aparición de nuevos proyectos.

Las pruebas de bondad de ajuste, con coeficientes de Pearson calculados para ambos segmentos, confirman que los modelos representan adecuadamente los datos observados por regiones. Esto evidencia una descripción estadística precisa de la segmentación geoeconómica actual, validando la diferencia entre la concentración industrial en potencias globales y la dispersión de proyectos en regiones emergentes.