Variable Original: Discovery Year


1 Cargar Librerías

Para ejecutar el análisis estadístico sobre la extracción mundial de petróleo y gas, se cargan las librerías necesarias. dplyr permite filtrar y transformar los registros de producción, readxl habilita la lectura del dataset en formato Excel, mientras que knitr y kableExtra estructuran los resultados estadísticos de forma clara.

library(dplyr)
library(ggplot2)
library(knitr)
library(kableExtra)
library(readxl)
library(e1071)

2 Cargar Datos

Se importa el dataset global de extracción de petróleo y gas, conformado por 49,212 registros de yacimientos y unidades productivas distribuidas en distintos países del mundo.

datos <- read_excel("dataset_mundial_petro.xlsx")
cat("Dimensiones del dataset:", nrow(datos), "filas y", ncol(datos), "columnas\n")
## Dimensiones del dataset: 49212 filas y 32 columnas

3 Extraer la Variable

Se selecciona la variable Discovery Year, que registra el año de descubrimiento de cada yacimiento extractivo. Tras eliminar valores ausentes se obtienen 4,935 registros válidos, con datos desde 1869 hasta 2023.

discovery_year <- as.numeric(datos$`Discovery year`)
discovery_year <- discovery_year[!is.na(discovery_year)]
cat("Total de registros válidos:", length(discovery_year), "\n")
## Total de registros válidos: 4935
cat("Primeros 10 valores:", head(discovery_year, 10), "\n")
## Primeros 10 valores: 1949 2001 1966 1975 1984 1986 1981 2004 1981 1986

4 Tabla de Frecuencia

Se construye la tabla de frecuencias agrupando los descubrimientos por epoca, mostrando frecuencia absoluta y relativa, para analizar la evolución histórica de la exploración de petróleo y gas a nivel mundial.

epoca_tabla <- cut(
  discovery_year,
  breaks = c(-Inf, 1959, 1989, Inf),
  labels = c("1869-1960", "1960-1989", "1989-2023")
)
tabla_epocas <- as.data.frame(table(epoca_tabla))
colnames(tabla_epocas) <- c("Época", "ni")
tabla_epocas <- tabla_epocas %>%
  mutate(
    `hi (%)` = paste0(round(ni / sum(ni) * 100, 2), "%")
  )

fila_total <- data.frame(
  Época = "Total",
  ni = sum(tabla_epocas$ni),
  `hi (%)` = "100%",
  check.names = FALSE
)

tabla_epocas <- rbind(tabla_epocas, fila_total)

kable(tabla_epocas, align = "c", caption = "Tabla de Frecuencias por Época — Discovery Year") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "bordered"),
                full_width = FALSE,
                position = "center") %>%
  row_spec(0, bold = TRUE, background = "#d9d9d9", color = "black") %>%
  row_spec(nrow(tabla_epocas), bold = TRUE, background = "#f2f2f2")
Tabla de Frecuencias por Época — Discovery Year
Época ni hi (%)
1869-1960 1292 26.18%
1960-1989 2017 40.87%
1989-2023 1626 32.95%
Total 4935 100%

5 Gráfica

Se observa que los descubrimientos se concentran en la era moderna (1960–1989), reflejando fielmente el comportamiento de la variable discreta en su conjunto. La probabilidad de éxito se define como la proporción de yacimientos descubiertos en dicha época de boom exploratorio.

epocas <- c("[1869-1960", "1960-1990", "1990-2023]")

frec_epocas <- c(
  sum(discovery_year < 1960),
  sum(discovery_year >= 1960 & discovery_year <= 1989),
  sum(discovery_year >= 1990)
)

p_exito <- frec_epocas[2] / length(discovery_year)
prob_epocas <- frec_epocas / length(discovery_year)

df_epocas <- data.frame(
  Epoca = factor(epocas, levels = epocas),  # Orden cronológico
  Probabilidad = prob_epocas
)

ggplot(df_epocas, aes(x = Epoca, y = Probabilidad)) +
  geom_bar(
    stat = "identity",
    fill = "#add8e6",
    color = "#2980b9",
    width = 0.5
  ) +
  labs(
    title = "Gráfica No. 1: Distribución por época de descubrimiento",
    x = "Época",
    y = "Probabilidad",
    caption = "Fuente: Dataset Mundial de Petróleo y Gas"
  ) +
  theme_minimal(base_size = 12) +
  theme(
    plot.title = element_text(face = "bold", hjust = 0.5)
  )

  • 1869–1960: Inicio de descubrimiento petrolera

  • 1960–1989: Boom descubirmiento (exito)

  • 1990–2023: Descubrimiento moderna


6 Conjetura

Al observar el diagrama de barras, se aprecia que la época 1960–1989 concentra la mayor proporción de descubrimientos, con frecuencias menores en las épocas anteriores y posteriores. Con base en esta distribución visual, se conjetura que la variable Discovery Year puede modelarse mediante una distribución Binomial, donde el éxito representa que un yacimiento haya sido descubierto durante dicha época de auge exploratorio.

6.1 Ajuste del Modelo Binomial

Alineación del cálculo probabilístico matemático discreto sobre los índices naturales asignados por R en su orden de procesamiento. Se define el experimento: en grupos de n=3 yacimientos seleccionados al azar, X representa el número de yacimientos descubiertos en la época de mayor auge exploratorio (1960–1989), con probabilidad de éxito p estimada por máxima verosimilitud.

set.seed(123)
n_param <- 3
muestra <- sample(discovery_year, size = 50, replace = FALSE)
x_grupos <- sapply(seq(1, 48, by = 3), function(i) {
  sum(muestra[i:(i+2)] >= 1960 & muestra[i:(i+2)] <= 1989)
})
freq_obs_tabla <- as.data.frame(table(factor(x_grupos, levels = 0:3)))
colnames(freq_obs_tabla) <- c("x_Index", "Freq_Obs")
freq_obs_tabla$x_Index <- as.numeric(as.character(freq_obs_tabla$x_Index))
total_grupos <- sum(freq_obs_tabla$Freq_Obs)
x_bar <- sum(freq_obs_tabla$x_Index * freq_obs_tabla$Freq_Obs) / total_grupos
p_mle <- x_bar / n_param
freq_obs_tabla$Media     <- round(p_mle, 4)
freq_obs_tabla$Prob_Binomial <- round(dbinom(freq_obs_tabla$x_Index, n_param, p_mle), 4)

freq_obs_tabla <- freq_obs_tabla[freq_obs_tabla$x_Index != 0, ]
rownames(freq_obs_tabla) <- NULL

print(freq_obs_tabla[, c("x_Index", "Media", "Prob_Binomial")])
##   x_Index Media Prob_Binomial
## 1       1 0.375        0.4395
## 2       2 0.375        0.2637
## 3       3 0.375        0.0527

6.2 Relación entre el modelo Binomial y la realidad

El siguiente gráfico compara las frecuencias relativas observadas en la muestra con las probabilidades teóricas del modelo Binomial ajustado, permitiendo evaluar visualmente qué tan bien se ajusta el modelo a los datos reales de descubrimiento de yacimientos.

esp_frec <- freq_obs_tabla$Prob_Binomial * total_grupos
obs_frec <- freq_obs_tabla$Freq_Obs
df_comparacion <- data.frame(
  x = rep(freq_obs_tabla$x_Index, 2),
  Frecuencia = c(obs_frec / total_grupos, freq_obs_tabla$Prob_Binomial),
  Tipo = rep(c("Realidad", "Modelo Binomial"), each = nrow(freq_obs_tabla))
)
ggplot(df_comparacion, aes(x = factor(x), y = Frecuencia, fill = Tipo)) +
  geom_bar(stat = "identity", position = "dodge", alpha = 0.85) +
  scale_fill_manual(values = c("Modelo Binomial" = "#1a5276", "Realidad" = "#add8e6")) +
  labs(
    title = "Gráfica No 2: Relación entre el modelo binomial y la realidad",
    x = "Número de éxitos (x)",
    y = "Probabilidad  (y)",
    fill = "",
    caption = "Fuente: Dataset Mundial de Petróleo y Gas"
  ) +
  theme_minimal(base_size = 12) +
  theme(plot.title = element_text(face = "bold", hjust = 0.5))


7 Test de Pearson y Chi Cuadrado

Se aplica la prueba Chi Cuadrado para evaluar si la distribución de los años de descubrimiento se ajusta al modelo Binomial propuesto. La correlación de Pearson mide la similitud entre las frecuencias observadas y esperadas, mientras que el estadístico Chi Cuadrado determina formalmente si el modelo es aceptado o rechazado.

obs_vec <- obs_frec
esp_vec <- freq_obs_tabla$Prob_Binomial * total_grupos
pearson_r  <- round(cor(obs_vec, esp_vec) * 100, 2)
chi2_calc  <- round(sum((obs_vec - esp_vec)^2 / esp_vec), 4)
gl         <- nrow(freq_obs_tabla) - 1 - 1
vc         <- round(qchisq(0.95, df = gl), 4)
resultado  <- ifelse(chi2_calc < vc, "ESTADO DEL MODELO: APRUEBA", "ESTADO DEL MODELO: NO APRUEBA")
color_res  <- ifelse(chi2_calc < vc, "#27ae60", "#e74c3c")
tabla_bondad <- data.frame(
  `Métrica de Evaluación` = c(
    "Correlación de Pearson (%)",
    "Chi-Cuadrado Calculado (X²)",
    paste0("Valor Crítico en Tabla (vc)  gl = ", gl, "  α = 0.05"),
    "Resultado de Validación"
  ),
  `Resultado Obtenido` = c(
    paste0(pearson_r, " %"),
    chi2_calc,
    vc,
    resultado
  ),
  check.names = FALSE
)
kable(tabla_bondad, align = "c", caption = "CUADRO N°2\nIndicadores de Ajuste Estadístico de la Prueba de Bondad") %>%
  kable_styling(bootstrap_options = c("striped", "bordered"),
                full_width = FALSE, position = "center") %>%
  row_spec(0, bold = TRUE, background = "#d9d9d9") %>%
  row_spec(nrow(tabla_bondad), bold = TRUE, color = color_res)
CUADRO N°2 Indicadores de Ajuste Estadístico de la Prueba de Bondad
Métrica de Evaluación Resultado Obtenido
Correlación de Pearson (%) 94.49 %
Chi-Cuadrado Calculado (X²) 0.9322
Valor Crítico en Tabla (vc) gl = 1 α = 0.05 3.8415
Resultado de Validación ESTADO DEL MODELO: APRUEBA

8 Calculo de Probabilidades

Diseño calculadora interactiva con parámetros validados y opciones personalizables

Probabilidad de exactamente 2 éxitos

26.37 %


9 Intervalo de confianza

n_trials  <- total_grupos * n_param
z_critico <- qnorm(0.975)
error_est <- z_critico * sqrt(p_mle * (1 - p_mle) / n_trials)

li_p <- round(p_mle - error_est, 4)
ls_p <- round(p_mle + error_est, 4)

tabla_ic <- data.frame(
  `Métrica` = c(
    "Proporción estimada (p_mle)",
    "Tamaño de muestra (n)",
    "Nivel de confianza",
    "Límite inferior (LI)",
    "Límite superior (LS)"
  ),
  `Valor` = c(
    round(p_mle, 4),
    n_trials,
    "95%",
    li_p,
    ls_p
  ),
  check.names = FALSE
)

kable(tabla_ic, align = "c", caption = "Intervalo de Confianza del 95% para la proporción de éxito (p)") %>%
  kable_styling(bootstrap_options = c("striped", "bordered"),
                full_width = FALSE, position = "center") %>%
  row_spec(0, bold = TRUE, background = "#d9d9d9") %>%
  row_spec(nrow(tabla_ic), bold = TRUE)
Intervalo de Confianza del 95% para la proporción de éxito (p)
Métrica Valor
Proporción estimada (p_mle) 0.375
Tamaño de muestra (n) 48
Nivel de confianza 95%
Límite inferior (LI) 0.238
Límite superior (LS) 0.512
cat("\n\nCon un 95% de confianza, la verdadera proporción de yacimientos descubiertos en la época de mayor auge se encuentra entre", li_p, "y", ls_p, ".\n")
## 
## 
## Con un 95% de confianza, la verdadera proporción de yacimientos descubiertos en la época de mayor auge se encuentra entre 0.238 y 0.512 .

10 Conclusión

La variable Discovery Year presenta un comportamiento que ha sido modelado con éxito mediante una Distribución Binomial, lo cual fue validado mediante preubas de bondad de ajuste. Facilitando asi que el modelo binomial resulte una herramienta confiable para analizar y predecir el comportamiento exploratorio del sector petrolero mundial.