1. Cargar Librerías

Para ejecutar el análisis de regresión lineal sobre el dataset mundial de petróleo y gas, se cargan las librerías necesarias. dplyr permite filtrar y transformar los registros, readxl habilita la lectura del dataset en formato Excel, ggplot2 genera las gráficas del modelo, mientras que knitr y kableExtra estructuran los resultados en tablas de forma clara.

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

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. Selección de Variables de Interés

Se seleccionan las dos variables de análisis: Discovery year (año de descubrimiento) como variable independiente, y Production start year (año de inicio de producción) como variable dependiente. Ambas son variables cuantitativas discretas de escala de intervalo.

ADESC <- as.numeric(datos$`Discovery year`)
AINIP <- as.numeric(datos$`Production start year`)

cat("Registros con año de descubrimiento:", sum(!is.na(ADESC)), "\n")
## Registros con año de descubrimiento: 4935
cat("Registros con año de inicio de producción:", sum(!is.na(AINIP)), "\n")
## Registros con año de inicio de producción: 1947

3.1 Depuración y Filtrado de Datos

El criterio aplicado fue conservar únicamente los registros donde ambas variables sean válidas, no faltantes, dentro de un rango lógico posterior a 1900, y cuya brecha entre el año de descubrimiento y el año de inicio de producción se encuentre entre 1 y 15 años. Este criterio elimina yacimientos con tiempos de maduración atípicos (demasiado inmediatos o excesivamente largos) y permite trabajar con una muestra representativa, más limpia y estadísticamente coherente.

brecha <- AINIP - ADESC

validos <- !is.na(ADESC) & !is.na(AINIP) &
           ADESC > 1900  & AINIP > 1900   &
           brecha >= 1   & brecha <= 15

ADESC_filtrado <- ADESC[validos]
AINIP_filtrado <- AINIP[validos]

cat("Registros totales en el dataset:       ", length(ADESC), "\n")
## Registros totales en el dataset:        49212
cat("Registros válidos para el análisis:    ", sum(validos), "\n")
## Registros válidos para el análisis:     1045
cat("Registros eliminados por el filtrado:  ", length(ADESC) - sum(validos), "\n")
## Registros eliminados por el filtrado:   48167
cat("Brecha mínima considerada: 1 año  |  Brecha máxima considerada: 15 años\n")
## Brecha mínima considerada: 1 año  |  Brecha máxima considerada: 15 años

3.2 Definición de Variables para el Modelo de Regresión

Selección de Variable Predictora y Variable Respuesta

x_var <- ADESC_filtrado  # Variable independiente (influye)
y_var <- AINIP_filtrado  # Variable dependiente (recibe la influencia)

cat("Variable independiente (X): Año de Descubrimiento\n")
## Variable independiente (X): Año de Descubrimiento
cat("Variable dependiente   (Y): Año de Inicio de Producción\n")
## Variable dependiente   (Y): Año de Inicio de Producción
cat("Rango de X:", min(x_var), "-", max(x_var), "\n")
## Rango de X: 1905 - 2021
cat("Rango de Y:", min(y_var), "-", max(y_var), "\n")
## Rango de Y: 1913 - 2024
cat("Total de observaciones para el modelo:", length(x_var), "\n")
## Total de observaciones para el modelo: 1045

4. Gráfica

Se construye el diagrama de dispersión entre el año de descubrimiento y el año de inicio de producción para observar la forma general de la relación entre ambas variables antes de proponer el modelo de regresión.

ggplot(data.frame(x = x_var, y = y_var), aes(x = x, y = y)) +
  geom_point(color = "#2980b9", shape = 7, alpha = 0.6, size = 2) +
  labs(
    title = "Gráfica N°1: Diagrama de dispersión del año de inicio de producción\nen función del año de descubrimiento de yacimientos",
    x = "Año de Descubrimiento",
    y = "Año de Inicio de Producción",
    caption = "Fuente: Dataset Mundial de Petróleo y Gas | Filtro: brecha entre 1 y 15 años"
  ) +
  theme_minimal(base_size = 12) +
  theme(plot.title = element_text(face = "bold", hjust = 0.5))

Análisis del gráfico: al aplicar el filtro de brecha entre 1 y 15 años, la nube de puntos se muestra más ordenada y concentrada, revelando una tendencia positiva clara: a medida que el año de descubrimiento avanza, el año de inicio de producción también lo hace de forma proporcional. La distribución lineal ascendente de los puntos justifica la conjetura de un modelo de regresión lineal.


5. Conjetura del Modelo de Regresión

Con base en la forma lineal observada en el diagrama de dispersión, se propone un modelo de regresión lineal simple de la forma:

y = b + m · x

modelorl <- lm(y_var ~ x_var)

5.1 Resumen del Modelo

summary(modelorl)
## 
## Call:
## lm(formula = y_var ~ x_var)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.6372 -3.5961 -0.6214  2.3995  8.4077 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  5.36087   12.36873   0.433    0.665    
## x_var        1.00063    0.00622 160.872   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.899 on 1043 degrees of freedom
## Multiple R-squared:  0.9613, Adjusted R-squared:  0.9612 
## F-statistic: 2.588e+04 on 1 and 1043 DF,  p-value: < 2.2e-16

5.2 Gráfica del Modelo

ggplot(data.frame(x = x_var, y = y_var), aes(x = x, y = y)) +
  geom_point(color = "#2980b9", shape = 7, alpha = 0.6, size = 2) +
  geom_smooth(method = "lm", color = "red", se = FALSE, linewidth = 1.2) +
  labs(
    title = "Gráfica N°2: Modelo de regresión lineal entre el año de
    descubrimiento y el año de inicio de producción",
    x = "Año de Descubrimiento",
    y = "Año de Inicio de Producción",
    caption = "Fuente: Dataset Mundial de Petróleo y Gas | Filtro: brecha entre 1 y 15 años"
  ) +
  theme_minimal(base_size = 12) +
  theme(plot.title = element_text(face = "bold", hjust = 0.5))


6. Test de Pearson

El coeficiente de correlación de Pearson indica el grado de asociación lineal entre ambas variables. Un valor cercano a ±1 representa una relación fuerte, mientras que valores cercanos a 0 indican una relación débil.

r <- cor(x_var, y_var) * 100
cat("La correlación lineal entre ambas variables es:", round(r, 2), "%\n")
## La correlación lineal entre ambas variables es: 98.04 %

6.1 Coeficiente de Determinación

El coeficiente de determinación expresa la proporción de la variación total de la variable dependiente que es explicada por la variable independiente. Se interpreta como el grado de ajuste del modelo a los datos observados.

r2 <- ((r / 100)^2) * 100
cat("El porcentaje de la variación del año de inicio de producción\nexplicado por el año de descubrimiento es de:", round(r2, 2), "%\n")
## El porcentaje de la variación del año de inicio de producción
## explicado por el año de descubrimiento es de: 96.13 %

6.2 Ecuación de la Recta

Para obtener la ecuación de la regresión lineal, se utilizan los coeficientes estimados del modelo, los cuales permiten expresar la relación entre las variables mediante la siguiente forma general:

y = m·x + b

Donde:

  • m representa la pendiente del modelo, es decir, el cambio esperado en el año de inicio de producción por cada año adicional en el año de descubrimiento.
  • b corresponde al intercepto, que indica el valor estimado de y cuando x es igual a cero.
b <- coef(modelorl)[1]
m <- coef(modelorl)[2]

cat("El intercepto es:", round(b, 3), "\n")
## El intercepto es: 5.361
cat("La pendiente es:",  round(m, 4), "\n")
## La pendiente es: 1.0006
cat("La ecuación de la recta obtenida es: y =", round(b, 3), "+", round(m, 4), "* x\n")
## La ecuación de la recta obtenida es: y = 5.361 + 1.0006 * x

6.3 Restricciones

La ecuación del modelo lineal obtenida del año de inicio de producción en función del año de descubrimiento es:

y = 5.36 + 1.0006 · x

Donde:

  • y representa el Año de Inicio de Producción.
  • x representa el Año de Descubrimiento.

Este modelo presenta restricciones asociadas al rango de datos utilizados para su ajuste, ya que fue construido únicamente con observaciones que cumplen con los criterios:

  • Año de descubrimiento > 1900
  • Año de inicio de producción > 1900
  • Brecha entre descubrimiento e inicio de producción: entre 1 y 15 años
cat("Rango válido del modelo:\n")
## Rango válido del modelo:
cat("  Año de Descubrimiento (X):", min(x_var), "—", max(x_var), "\n")
##   Año de Descubrimiento (X): 1905 — 2021
cat("  Año de Inicio de Producción (Y):", min(y_var), "—", max(y_var), "\n")
##   Año de Inicio de Producción (Y): 1913 — 2024
cat("  Brecha mínima: 1 año  |  Brecha máxima: 15 años\n")
##   Brecha mínima: 1 año  |  Brecha máxima: 15 años
cat("\nCualquier predicción fuera de este rango constituye una extrapolación\n")
## 
## Cualquier predicción fuera de este rango constituye una extrapolación
cat("y no describe de forma confiable el comportamiento real del sistema.\n")
## y no describe de forma confiable el comportamiento real del sistema.

Por lo tanto, su validez se limita estrictamente a este intervalo. El intercepto no debe interpretarse literalmente, ya que carece de significado físico fuera del rango de años analizado.

7. Tabla de Resumen del Modelo

Tabla_resumen <- data.frame(
  `Variable Independiente`       = "Año de Descubrimiento",
  `Variable Dependiente`         = "Año de Inicio de Producción",
  `Test Pearson`                 = round(r, 2),
  `Coeficiente de determinación` = round(r2, 2),
  `Ecuación de la recta`         = paste0("y = ", round(b, 2), " + ", round(m, 4), " * x"),
  check.names = FALSE
)

kable(Tabla_resumen, align = "c",
      caption = "Tabla N°2: Resumen del modelo de regresión lineal del año de inicio
      de producción en función del año de descubrimiento de yacimientos de hidrocarburos") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "bordered"),
                full_width = FALSE,
                position = "center") %>%
  row_spec(0, bold = TRUE, background = "#d9d9d9", color = "black")
Tabla N°2: Resumen del modelo de regresión lineal del año de inicio de producción en función del año de descubrimiento de yacimientos de hidrocarburos
Variable Independiente Variable Dependiente Test Pearson Coeficiente de determinación Ecuación de la recta
Año de Descubrimiento Año de Inicio de Producción 98.04 96.13 y = 5.36 + 1.0006 * x

8. Estimaciones

¿Cuál sería el año estimado de inicio de producción si el yacimiento fue descubierto en el año 2005?

x_pred     <- 2005
y_esperado <- m * x_pred + b

cat("Para un yacimiento descubierto en el año", x_pred,
    ", el año estimado de inicio de producción es:",
    round(y_esperado, 0), "\n")
## Para un yacimiento descubierto en el año 2005 , el año estimado de inicio de producción es: 2012

9. Conclusión

El modelo de regresión lineal ajustado unicamente con registros de 1 y 15 años, entre el año de descubrimiento y el año de inicio de producción muestra una correlación de Pearson de 98.04% y un coeficiente de determinación de 96.13%, lo que indica un ajuste lineal muy fuerte. La ecuación obtenida es y = -45.32 + 1.0226·x, confirmando que a yacimientos descubiertos en años más recientes les corresponde también un inicio de producción más reciente.