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.
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
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
## Primeros 10 valores: 1949 2001 1966 1975 1984 1986 1981 2004 1981 1986
Se contabiliza el número de yacimientos petroleros y gasíferos por década, permitiendo identificar los periodos de mayor actividad exploratoria en la industria mundial de hidrocarburos.
conteo <- as.data.frame(table(discovery_year))
colnames(conteo) <- c("Año de Descubrimiento", "Frecuencia Absoluta")
cat("Total de años únicos registrados:", nrow(conteo), "\n")## Total de años únicos registrados: 125
cat("Año con más descubrimientos:", conteo[which.max(conteo$`Frecuencia Absoluta`), 1],
"con", max(conteo$`Frecuencia Absoluta`), "registros\n")## Año con más descubrimientos: 51 con 163 registros
Se construye la tabla de frecuencias agrupando los descubrimientos por décadas, mostrando frecuencia absoluta, relativa y acumulada ascendente y descendente, para analizar la evolución histórica de la exploración de petróleo y gas a nivel mundial.
decada <- floor(discovery_year / 10) * 10
tabla_decadas <- as.data.frame(table(decada))
colnames(tabla_decadas) <- c("Década", "ni")
tabla_decadas <- tabla_decadas %>%
mutate(
`hi (%)` = paste0(round(ni / sum(ni) * 100, 2), "%"),
`Ni Asc` = cumsum(ni),
`Ni Dsc` = sum(ni) - cumsum(ni) + ni,
`Hi Asc` = paste0(round(cumsum(ni / sum(ni)) * 100, 2), "%"),
`Hi Dsc` = paste0(round((sum(ni) - cumsum(ni) + ni) / sum(ni) * 100, 2), "%")
)
kable(tabla_decadas, align = "c", caption = "Tabla de Frecuencias por Década — 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")| Década | ni | hi (%) | Ni Asc | Ni Dsc | Hi Asc | Hi Dsc |
|---|---|---|---|---|---|---|
| 1860 | 6 | 0.12% | 6 | 4935 | 0.12% | 100% |
| 1880 | 6 | 0.12% | 12 | 4929 | 0.24% | 99.88% |
| 1890 | 4 | 0.08% | 16 | 4923 | 0.32% | 99.76% |
| 1900 | 53 | 1.07% | 69 | 4919 | 1.4% | 99.68% |
| 1910 | 87 | 1.76% | 156 | 4866 | 3.16% | 98.6% |
| 1920 | 81 | 1.64% | 237 | 4779 | 4.8% | 96.84% |
| 1930 | 154 | 3.12% | 391 | 4698 | 7.92% | 95.2% |
| 1940 | 292 | 5.92% | 683 | 4544 | 13.84% | 92.08% |
| 1950 | 609 | 12.34% | 1292 | 4252 | 26.18% | 86.16% |
| 1960 | 667 | 13.52% | 1959 | 3643 | 39.7% | 73.82% |
| 1970 | 731 | 14.81% | 2690 | 2976 | 54.51% | 60.3% |
| 1980 | 619 | 12.54% | 3309 | 2245 | 67.05% | 45.49% |
| 1990 | 490 | 9.93% | 3799 | 1626 | 76.98% | 32.95% |
| 2000 | 591 | 11.98% | 4390 | 1136 | 88.96% | 23.02% |
| 2010 | 430 | 8.71% | 4820 | 545 | 97.67% | 11.04% |
| 2020 | 115 | 2.33% | 4935 | 115 | 100% | 2.33% |
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("Pre-1960", "1960-1989", "Post-1989")
frec_epocas <- c(
sum(discovery_year < 1960),
sum(discovery_year >= 1960 & discovery_year <= 1989),
sum(discovery_year > 1989)
)
p_exito <- frec_epocas[2] / length(discovery_year)
prob_epocas <- frec_epocas / length(discovery_year)
df_epocas <- data.frame(Epoca = 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 = "É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))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)
print(freq_obs_tabla[, c("x_Index", "Media", "Prob_Binomial")])## x_Index Media Prob_Binomial
## 1 0 0.375 0.2441
## 2 1 0.375 0.4395
## 3 2 0.375 0.2637
## 4 3 0.375 0.0527
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",
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))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)| Métrica de Evaluación | Resultado Obtenido |
|---|---|
| Correlación de Pearson (%) | 93.17 % |
| Chi-Cuadrado Calculado (X²) | 1.1422 |
| Valor Crítico en Tabla (vc) gl = 2 α = 0.05 | 5.9915 |
| Resultado de Validación | ESTADO DEL MODELO: APRUEBA |
PREGUNTA N 1: ¿Cuál es la probabilidad de que exactamente 2 de 3 yacimientos seleccionados al azar hayan sido descubiertos en la época de mayor auge (1960–1989)?
PREGUNTA N 2: ¿Cuál es la probabilidad acumulada de que al menos 1 de 3 yacimientos pertenezca a la época de boom exploratorio?
p1 <- round(dbinom(2, n_param, p_mle) * 100, 2)
cat("Probabilidad de exactamente 2 éxitos en n=3:", p1, "%\n")## Probabilidad de exactamente 2 éxitos en n=3: 26.37 %
p2 <- round((1 - dbinom(0, n_param, p_mle)) * 100, 2)
cat("Probabilidad de al menos 1 éxito en n=3:", p2, "%\n")## Probabilidad de al menos 1 éxito en n=3: 75.59 %
La variable Año de Descubrimiento presenta un comportamiento estocástico gobernado por patrones identificables a lo largo de más de un siglo de actividad exploratoria mundial. Mediante la probabilidad de éxito calculada a partir de la proporción de yacimientos descubiertos durante la época de mayor auge exploratorio (1960–1989), su distribución se ajusta adecuadamente a un modelo Binomial, lo cual fue validado estadísticamente mediante la prueba de bondad de ajuste Chi-Cuadrado. Esta estructura permite predecir, POR EJEMPLO, ¿cuál es la probabilidad de que, de un grupo de 3 yacimientos seleccionados al azar, al menos 1 haya sido descubierto durante esa época de boom exploratorio? (75.59%), facilitando la implementación de estrategias de planificación e inversión basadas en el peso histórico de cada periodo de descubrimiento.