Variable Original: Discovery Year


1 Carga de 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 Carga de 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 Selección de variable aleatoria

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 Distribución de Frecuencias

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 de Distribución de Frecuencia

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),
  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 = "Año de Descubrimiento ",
    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.

7 Parámetros

CÁLCULO DE LOS PARÁMETROS DEL MODELO BINOMIAl

mediana_year <- median(discovery_year)
n_param <- 3

set.seed(123)
discovery_shuffled <- sample(discovery_year)   # mezcla aleatoria para romper el orden del dataset

n_total_reg <- length(discovery_shuffled)
n_grupos <- floor(n_total_reg / n_param)
idx_inicio <- seq(1, by = n_param, length.out = n_grupos)

# Éxito = año de descubrimiento mayor a la mediana (reciente vs antiguo)
x_grupos <- sapply(idx_inicio, function(i) {
  sum(discovery_shuffled[i:(i + n_param - 1)] > mediana_year)
})

freq_obs_tabla <- as.data.frame(table(factor(x_grupos, levels = 0:n_param)))
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$p_estimado    <- round(p_mle, 4)
freq_obs_tabla$Prob_Binomial <- round(dbinom(freq_obs_tabla$x_Index, n_param, p_mle), 4)

rownames(freq_obs_tabla) <- NULL

cat("Mediana del año de descubrimiento:", mediana_year, "\n")
## Mediana del año de descubrimiento: 1976
freq_obs_mostrar <- freq_obs_tabla[freq_obs_tabla$x_Index != 0, c("x_Index", "Freq_Obs", "p_estimado", "Prob_Binomial")]
print(freq_obs_mostrar)
##   x_Index Freq_Obs p_estimado Prob_Binomial
## 2       1      638     0.4963        0.3778
## 3       2      577     0.4963        0.3722
## 4       3      219     0.4963        0.1222

8 Sobreposición de la realidad con el modelo

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.

modelo_binomial <- dbinom(0:2, size = 2, prob = p_mle)

df_comparacion <- data.frame(
  Epoca = factor(rep(epocas, 2), levels = epocas),
  Probabilidad = c(prob_epocas, modelo_binomial),
  Tipo = rep(c("Realidad", "Modelo Binomial"), each = length(epocas))
)

ggplot(df_comparacion, aes(x = Epoca, y = Probabilidad, fill = Tipo)) +
  geom_bar(stat = "identity", position = "dodge",
           color = "#2980b9", width = 0.6, alpha = 0.9) +
  scale_fill_manual(values = c("Realidad" = "#add8e6", "Modelo Binomial" = "#1a5276")) +
  labs(
    title = "Gráfica No 2: Relación entre el modelo binomial y la realidad",
    x = "Año de Descubrimiento ",
    y = "Probabilidad",
    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)
  )


9 Test de Bondad

N_total  <- length(discovery_year)
obs_vec  <- frec_epocas
esp_vec  <- modelo_binomial * N_total

pearson_r <- round(cor(obs_vec, esp_vec) * 100, 2)

tabla_bondad <- data.frame(
  `Métrica de Evaluación` = c(
    "Correlación de Pearson (%)"
  ),
  `Resultado Obtenido` = c(
    paste0(pearson_r, " %")
  ),
  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)
CUADRO N°2 Indicadores de Ajuste Estadístico de la Prueba de Bondad
Métrica de Evaluación Resultado Obtenido
Correlación de Pearson (%) 87.56 %

10 Cálculo de probabilidades

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

Probabilidad de exactamente 2 éxitos

26.37 %


11 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.4963
Tamaño de muestra (n) 4935
Nivel de confianza 95%
Límite inferior (LI) 0.4823
Límite superior (LS) 0.5102
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.4823 y 0.5102 .

12 Conclusión

El comportamiento de la variable “Año de Descubrimiento” se explica con un modelo Binomial de parametros n=3 y p=0.49. Podemos afrimar con un 95% de confinza que la media aritmetica real de la variable Año de Descubrimiento se encuentra entre [0.4823 ; 0.5102] y una desviación estandar de 0.86.