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 y visualmente organizada.
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 Status Year, que registra el año en el que se actualizó o verificó por última vez el estado operativo de cada unidad productiva de petróleo y gas. Tras eliminar valores ausentes se obtienen 8,048 registros válidos, con datos desde 1989 hasta 2024. Es importante considerar que esta variable presenta un 83.6% de valores faltantes en el dataset, por lo que los resultados reflejan únicamente las unidades con estado documentado.
status_year <- as.numeric(datos$`Status year`)
status_year <- status_year[!is.na(status_year)]
cat("Total de registros válidos:", length(status_year), "\n")## Total de registros válidos: 8048
## Primeros 10 valores: 2023 2022 2022 2022 2022 2022 2022 2022 2020 2020
Se contabiliza el número de unidades productivas por año de estado, lo que permite identificar en qué años se realizaron más actualizaciones o verificaciones del estado operativo de los yacimientos en el dataset mundial.
conteo <- as.data.frame(table(status_year))
colnames(conteo) <- c("Año de Estado", "Frecuencia Absoluta")
cat("Total de años únicos registrados:", nrow(conteo), "\n")## Total de años únicos registrados: 22
cat("Año con más registros:", conteo[which.max(conteo$`Frecuencia Absoluta`), 1],
"con", max(conteo$`Frecuencia Absoluta`), "registros\n")## Año con más registros: 20 con 3213 registros
Se construye la tabla de frecuencias por año (sin agrupar por décadas, dado que la variable abarca solo el período 1989–2024), mostrando frecuencia absoluta, relativa y acumulada ascendente y descendente. Esto permite visualizar con precisión en qué años se concentra la mayor actividad de actualización del estado de las unidades petroleras y gasíferas.
tabla_anios <- as.data.frame(table(status_year))
colnames(tabla_anios) <- c("Año", "ni")
tabla_anios <- tabla_anios %>%
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_anios, align = "c", caption = "Tabla de Frecuencias por Año — Status Year") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed", "bordered"),
full_width = FALSE,
position = "center") %>%
row_spec(0, bold = TRUE, background = "#d9d9d9", color = "black")| Año | ni | hi (%) | Ni Asc | Ni Dsc | Hi Asc | Hi Dsc |
|---|---|---|---|---|---|---|
| 1989 | 1 | 0.01% | 1 | 8048 | 0.01% | 100% |
| 1992 | 1 | 0.01% | 2 | 8047 | 0.02% | 99.99% |
| 2001 | 2 | 0.02% | 4 | 8046 | 0.05% | 99.98% |
| 2005 | 2 | 0.02% | 6 | 8044 | 0.07% | 99.95% |
| 2006 | 2 | 0.02% | 8 | 8042 | 0.1% | 99.93% |
| 2007 | 6 | 0.07% | 14 | 8040 | 0.17% | 99.9% |
| 2009 | 4 | 0.05% | 18 | 8034 | 0.22% | 99.83% |
| 2010 | 4 | 0.05% | 22 | 8030 | 0.27% | 99.78% |
| 2011 | 9 | 0.11% | 31 | 8026 | 0.39% | 99.73% |
| 2012 | 6 | 0.07% | 37 | 8017 | 0.46% | 99.61% |
| 2013 | 14 | 0.17% | 51 | 8011 | 0.63% | 99.54% |
| 2014 | 11 | 0.14% | 62 | 7997 | 0.77% | 99.37% |
| 2015 | 98 | 1.22% | 160 | 7986 | 1.99% | 99.23% |
| 2016 | 54 | 0.67% | 214 | 7888 | 2.66% | 98.01% |
| 2017 | 372 | 4.62% | 586 | 7834 | 7.28% | 97.34% |
| 2018 | 69 | 0.86% | 655 | 7462 | 8.14% | 92.72% |
| 2019 | 1073 | 13.33% | 1728 | 7393 | 21.47% | 91.86% |
| 2020 | 701 | 8.71% | 2429 | 6320 | 30.18% | 78.53% |
| 2021 | 1488 | 18.49% | 3917 | 5619 | 48.67% | 69.82% |
| 2022 | 3213 | 39.92% | 7130 | 4131 | 88.59% | 51.33% |
| 2023 | 908 | 11.28% | 8038 | 918 | 99.88% | 11.41% |
| 2024 | 10 | 0.12% | 8048 | 10 | 100% | 0.12% |
El gráfico representa el número de unidades productivas por año de estado registrado. Se observa una concentración muy marcada en los años 2019–2022, con el pico máximo en 2022 (3,213 registros), lo que indica que la mayor parte de las actualizaciones del estado operativo de los yacimientos ocurrieron en ese período reciente.
tabla_anios_plot <- tabla_anios %>%
mutate(Año_num = as.character(as.numeric(as.character(Año))))
ggplot(tabla_anios_plot, aes(x = factor(Año_num), y = ni)) +
geom_bar(stat = "identity", fill = "#2980b9", color = "white", alpha = 0.85) +
labs(
title = "Frecuencia de Registros por Año — Status Year",
x = "Año de Estado",
y = "Número de Registros (ni)",
caption = "Fuente: Dataset Mundial de Petróleo y Gas"
) +
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(face = "bold", hjust = 0.5),
axis.text.x = element_text(angle = 45, hjust = 1)
)El gráfico ojiva presenta las frecuencias acumuladas ascendente y descendente de los registros por año de estado. Se puede observar que hasta el año 2018 la acumulación es muy lenta, y que el crecimiento más pronunciado ocurre entre 2019 y 2022, período en el que se registra la gran mayoría de las actualizaciones de estado de las unidades productivas.
tabla_ojiva <- tabla_anios %>%
mutate(
NiAsc = cumsum(ni),
NiDsc = sum(ni) - cumsum(ni) + ni,
Año_num = as.numeric(as.character(Año))
)
ggplot(tabla_ojiva, aes(x = factor(Año_num))) +
geom_line(aes(y = NiAsc, color = "Ascendente", group = 1), size = 1.2) +
geom_point(aes(y = NiAsc, color = "Ascendente"), size = 2.5) +
geom_line(aes(y = NiDsc, color = "Descendente", group = 1), size = 1.2) +
geom_point(aes(y = NiDsc, color = "Descendente"), size = 2.5) +
scale_color_manual(values = c("Ascendente" = "#2980b9", "Descendente" = "#e74c3c")) +
labs(
title = "Frecuencia Acumulada de Registros por Año — Status Year",
x = "Año de Estado",
y = "Frecuencia Acumulada",
color = "Tipo",
caption = "Fuente: Dataset Mundial de Petróleo y Gas"
) +
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(face = "bold", hjust = 0.5),
axis.text.x = element_text(angle = 45, hjust = 1)
)El diagrama de cajas muestra la distribución de los años de estado de las unidades productivas. La caja se concentra entre 2019 y 2023, con una mediana en 2022, lo que refleja que la mayoría de las actualizaciones de estado son recientes. Los escasos valores entre 1989 y 2014 aparecen como valores atípicos, indicando que muy pocas unidades tienen registros de estado anteriores a ese período.
df_plot <- data.frame(año = status_year)
ggplot(df_plot, aes(x = año)) +
geom_boxplot(fill = "#27ae60", color = "#1a252f", alpha = 0.8, width = 0.4) +
labs(
title = "Distribución de los Años de Estado",
x = "Año de Estado",
caption = "Fuente: Dataset Mundial de Petróleo y Gas"
) +
scale_x_continuous(breaks = sort(unique(status_year))) +
theme_minimal(base_size = 13) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))## <theme> List of 1
## $ plot.title: <ggplot2::element_text>
## ..@ family : NULL
## ..@ face : chr "bold"
## ..@ italic : chr NA
## ..@ fontweight : num NA
## ..@ fontwidth : num NA
## ..@ colour : NULL
## ..@ size : NULL
## ..@ hjust : num 0.5
## ..@ vjust : NULL
## ..@ angle : NULL
## ..@ lineheight : NULL
## ..@ margin : NULL
## ..@ debug : NULL
## ..@ inherit.blank: logi FALSE
## @ complete: logi FALSE
## @ validate: logi TRUE
Los indicadores estadísticos resumen el comportamiento del año de estado de las unidades productivas. La media (2020.87) y la mediana (2022) reflejan que los registros se concentran en años muy recientes. La asimetría negativa (-2.85) confirma que la cola de la distribución se extiende hacia años más antiguos, mientras que la curtosis alta (21.44) indica una distribución muy apuntada y concentrada alrededor del año 2022. La baja desviación estándar (1.99) muestra que los datos válidos son muy homogéneos en cuanto al año reportado.
variable <- "Status Year"
rango <- "[1989; 2024]"
media <- round(mean(status_year), 0)
mediana <- round(median(status_year), 2)
moda_val <- as.numeric(names(sort(table(status_year), decreasing = TRUE)[1]))
varianza <- round(var(status_year), 2)
desv_est <- round(sd(status_year), 2)
cv <- round((desv_est / media) * 100, 2)
asimetria <- round(skewness(status_year), 4)
curtosis <- round(kurtosis(status_year), 4)
indicadores <- data.frame(
Variable = variable,
Rango = rango,
`Media (X)` = media,
`Mediana (Me)` = mediana,
`Moda (Mo)` = moda_val,
`Varianza (V)` = varianza,
`Desv. Est. (Sd)` = desv_est,
`C.V. (%)` = cv,
`Asimetría (As)` = asimetria,
`Curtosis (K)` = curtosis,
check.names = FALSE
)
kable(indicadores, align = "c",
caption = "Indicadores Estadísticos — Status Year") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed", "bordered"),
full_width = TRUE,
position = "center") %>%
row_spec(0, bold = TRUE, background = "#d9d9d9", color = "black")| Variable | Rango | Media (X) | Mediana (Me) | Moda (Mo) | Varianza (V) | Desv. Est. (Sd) | C.V. (%) | Asimetría (As) | Curtosis (K) |
|---|---|---|---|---|---|---|---|---|---|
| Status Year | [1989; 2024] | 2021 | 2022 | 2022 | 3.97 | 1.99 | 0.1 | -2.8473 | 21.4333 |
La variable “Año de Estado” fluctúa entre 1989 y 2024 y sus valores se encuentran alrededor de 2022, con una desviación estándar de 1.99, siendo una variable homogénea; la distribución presenta una fuerte asimetría negativa de -2.8473, lo que indica que la mayoría de los registros se concentran en los años más recientes, y una curtosis leptocúrtica muy pronunciada de 21.4333, reflejando una alta concentración de datos alrededor del año 2022; por todo lo anterior, el comportamiento de la variable es bueno.