1 Configuración y Carga de Datos

##### UNIVERSIDAD CENTRAL DEL ECUADOR #####
#### AUTOR: LISS MURILLO ####
### CARRERA: INGENIERÍA EN PETRÓLEOS #####

#### REGRESIÓN EXPONENCIAL ####
## DATASET ##
setwd("~/SEBAS PROYECTO")
# Cargar dataset
Datos <- read.csv("oil_and_gas_leases_data.csv", sep = ",", fileEncoding = "latin1")
## Estructura de los datos
str(Datos)
'data.frame':   47757 obs. of  24 variables:
 $ KID                      : int  1001106903 1001106572 1001106590 1001107343 1001108234 1001106684 1001107377 1001107386 1001107740 1001106710 ...
 $ DEPTH_OF_WELL            : num  700 800 1400 1125 2940 ...
 $ CUMULATIVE_PRODUCTION    : num  47225 275063 82624 7544 681006 ...
 $ AVG_PRODUCTION           : num  859 5001 1758 377 24322 ...
 $ LATITUDE                 : num  37.1 38.8 37.5 37.8 37.1 ...
 $ LONGITUDE                : num  -95.9 -95.2 -96.3 -95.7 -101.3 ...
 $ YEARS_ACTIVE             : num  55 55 47 20 28 55 20 48 48 55 ...
 $ SECTION                  : num  33 11 34 8 30 4 26 28 11 17 ...
 $ COUNTY_CODE              : num  125 45 49 207 189 121 49 1 31 121 ...
 $ STATE_CODE               : int  15 15 15 15 15 15 15 15 15 15 ...
 $ TOWNSHIP                 : num  33 15 29 26 33 17 30 26 23 16 ...
 $ RANGE                    : num  14 20 10 16 36 25 12 21 16 24 ...
 $ PRODUCES_OIL             : num  1 1 1 1 0 1 1 1 1 1 ...
 $ PRODUCES_GAS             : num  0 0 0 0 1 0 0 0 0 0 ...
 $ OPERATOR_NAME            : chr  "Horton, John" "Whitlow Energy, Inc." "Suerte Oil Company" "Patterson-Blackford" ...
 $ FIELD_NAME               : chr  "WAYSIDE-HAVANA" "BALDWIN" "DUNKLEBERGER" "ROSE EAST" ...
 $ PRODUCING_FORMATION      : chr  "UNKNOWN" "UNKNOWN" "UNKNOWN" "UNKNOWN" ...
 $ LONGITUDE_LATITUDE_SOURCE: chr  "CENTER_OF_SECTION" "CENTER_OF_SECTION" "CENTER_OF_SECTION" "CENTER_OF_SECTION" ...
 $ PROD_LEVEL               : chr  "MEDIUM" "HIGH" "MEDIUM" "LOW" ...
 $ DEPTH_LEVEL              : chr  "SHALLOW" "SHALLOW" "SHALLOW" "SHALLOW" ...
 $ LIFE_STAGE               : chr  "OLD" "OLD" "OLD" "MATURE" ...
 $ AVG_PROD_LEVEL           : chr  "LOW" "MEDIUM" "MEDIUM" "LOW" ...
 $ TOWNSHIP_DIRECTION       : chr  "S" "S" "S" "S" ...
 $ RANGE_DIRECTION          : chr  "E" "E" "E" "E" ...
## Librerias 
library(dplyr)
library(ggplot2)
library(gt)
library(stringr)

2 Extracción y Depuración de Variables

Se aplica un modelo de crecimiento exponencial sobre los datos agrupados mediante técnica de binning, con el objetivo de reducir el ruido estadístico y capturar la tendencia general del comportamiento productivo.

Se estableció la Producción Acumulada como variable independiente (x), ya que representa el volumen total producido por un pozo a lo largo del tiempo.

La Producción Promedio se considera la variable dependiente (y), debido a que refleja el rendimiento medio asociado al nivel de producción acumulada.

Esta relación permite analizar cómo evoluciona la producción promedio en función del volumen acumulado, identificando un posible comportamiento de crecimiento no lineal de tipo exponencial.

  • Variable Independiente (X): Producción Acumulada.
  • Variable Dependiente (Y): Producción Promedio.
# Selección de variables
datos_raw <- Datos %>%
  select(CUMULATIVE_PRODUCTION, AVG_PRODUCTION) %>%
  mutate(
    x_raw = as.numeric(gsub(",", ".", as.character(CUMULATIVE_PRODUCTION))),
    y_raw = as.numeric(gsub(",", ".", as.character(AVG_PRODUCTION)))
  ) %>%
  filter(!is.na(x_raw) & !is.na(y_raw) & x_raw > 0 & y_raw > 0)

3 Análisis Gráfico Exploratorio

Antes de llevar a cabo el agrupamiento, se examina la distribución inicial de los datos para justificar técnicamente la aplicación del método de Binning.

datos_plot <- datos_raw %>% filter(y_raw < quantile(y_raw, 0.99))

par(mar = c(5, 5, 4, 2))

plot(datos_plot$x_raw, datos_plot$y_raw,
     main = "Gráfica N°1: Diagrama de Dispersión de la Producción Promedio\n en función de la Producción Acumulada",
     xlab = "Producción Acumulada",
     ylab = "Producción Promedio",
     pch = 19,
     col = rgb(46/255, 134/255, 193/255, 0.3),
     cex = 0.6, 
     cex.main = 0.9, 
     frame.plot = FALSE)

grid(nx = NULL, ny = NULL, col = "#D7DBDD", lty = "dotted")

box()

4 Aplicación de Binning

Debido a la variabilidad observada en la Gráfica N°1, se implementa la técnica de binning con el objetivo de disminuir el ruido estadístico y visualizar con mayor claridad la tendencia general de los datos.

# Agrupación Técnica 
# Limpieza de Outliers
lim_x <- quantile(datos_raw$x_raw, c(0.05, 0.95))
lim_y <- quantile(datos_raw$y_raw, c(0.05, 0.95))

datos_limpios <- datos_raw %>%
  filter(x_raw >= lim_x[1] & x_raw <= lim_x[2],
         y_raw >= lim_y[1] & y_raw <= lim_y[2])

# Agrupación Técnica 
datos_agrupados <- datos_limpios %>% 
  mutate(avg_bin = round(x_raw / 30000) * 30000) %>% 
  group_by(avg_bin) %>% 
  summarise( 
    y = mean(y_raw, na.rm = TRUE), 
    conteo = n() 
    ) %>% 
  rename(x = avg_bin) %>% 
  filter(conteo >= 5)

x_val <- datos_agrupados$x
y_val <- datos_agrupados$y

5 Conjetura del Modelo de Regresión Exponencial

La ecuación es \(y = a \cdot e^{b \cdot x}\). Para linealizar, aplicamos logaritmo solo a la variable dependiente: \(\ln(y) = \ln(a) + b \cdot x\).

# Linealización
y_log <- log(y_val)
modelo_exponencial <- lm(y_log ~ x_val)

# Parámetros
log_a <- coef(modelo_exponencial)[1]
b_param <- coef(modelo_exponencial)[2]
a_param <- exp(log_a)

6 Gráfica del Modelo Potencial

Se presenta el ajuste del modelo incluyendo la banda de incertidumbre estadística (Intervalo de Confianza del 95%).

par(mar = c(5, 5, 4, 2))

plot(x_val, y_val,
     main = "Gráfica N°2: Modelo de Regresión Exponencial de la Producción Promedio\n en función de la Producción Acumulada",
     xlab = "Producción Acumulada",
     ylab = "Producción Promedio",
     pch = 19,
     col = rgb(46/255, 134/255, 193/255, 0.3),
     cex = 1.0, 
     cex.main = 0.9, 
     frame.plot = FALSE)

grid(nx = NULL, ny = NULL, col = "#D7DBDD", lty = "dotted")

x_seq <- seq(min(x_val), max(x_val), length.out = 500)

pred_log <- predict(modelo_exponencial,
                    newdata = data.frame(x_val = x_seq),
                    interval = "confidence",
                    level = 0.95)

y_pred_fit <- exp(pred_log[, "fit"])
y_pred_lwr <- exp(pred_log[, "lwr"])
y_pred_upr <- exp(pred_log[, "upr"])

# Intervalo de Confianza
polygon(c(x_seq, rev(x_seq)), 
        c(y_pred_lwr, rev(y_pred_upr)),
        col = rgb(0.5, 0.5, 0.5, 0.2), border = NA) 

lines(x_seq, y_pred_fit, col = "#E74C3C", lwd = 3)

legend("topleft",
       legend = c("Datos Binned", 
                  "Modelo Exponencial", 
                  "I.C. 95%"),
       col = c(rgb(46/255, 134/255, 193/255, 0.3), "#E74C3C", "gray"),
       pch = c(16, NA, 15),
       lwd = c(NA, 3, NA),
       pt.cex = c(1, NA, 2),
       bty = "n")

7 Test de Bondad del Modelo

7.1 Coeficiente de correlación del modelo linealizado

El coeficiente de correlación es:  0.88

7.2 Coeficiente de Determinación

El coeficiente de determinación (R²) es: 0.78

8 Ecuación del Modelo

La ecuación estimada del modelo es:

 y = 3377.263 * e^( 0.000003 x)

9 Tabla Resumen del Modelo

tabla_resumen <- data.frame(
  Variable = c("Producción Acumulada", "Producción Promedio"),
  Tipo = c("Independiente (X)", "Dependiente (Y)"),
  R = c("", round(r, 2)),
  R2 = c("", round(r2, 2)),
  Parametro_a = c("", round(a_param, 4)),
  Exponente_b = c("", round(b_param, 6)),
  Ecuación = c("", ecuacion)
)

  tabla_resumen %>%
  gt() %>%
  tab_header(title = md("**Tabla N°1 del Resumen del Modelo de Regresión Exponencial**")) %>%
  tab_source_note(source_note = "Autor: Liss Murillo") %>%
  cols_align(align = "center", everything())
Tabla N°1 del Resumen del Modelo de Regresión Exponencial
Variable Tipo R R2 Parametro_a Exponente_b Ecuación
Producción Acumulada Independiente (X)
Producción Promedio Dependiente (Y) 0.88 0.78 3377.2634 0.000003 y = 3377.2634 * e^(0.000003x)
Autor: Liss Murillo

10 Cálculo de Estimaciones

¿Cuál sería la Producción Promedio estimada para una Producción Acumulada de 300000?

Para una Producción Acumulada de 300000 , la Producción Promedio estimada es: 7833.38

11 Conclusiones

Entre la Producción Acumulada y la Producción Promedio existe una relación de tipo exponencial creciente, explicada por un coeficiente de determinación R² ≈ 78%, lo que indica que el modelo logra explicar una proporción considerable de la variabilidad de la Producción Promedio en función de la Producción Acumulada.

El coeficiente de correlación fue de 0.88, evidenciando una relación positiva y de intensidad moderadamente alta entre las variables analizadas.

La ecuación matemática estimada del modelo es: \(y = 3377.2634 \cdot e^{0.000003x}\).