1 Carga de datos

setwd("/cloud/project/")
datos<-read.csv("DATOS.csv", header = TRUE, sep=";" , dec=".")
str(datos)
## 'data.frame':    10190 obs. of  17 variables:
##  $ Distrito_edit                        : chr  "1" "1" "1" "1" ...
##  $ Year_edit_Fecha_del_derrame          : int  2013 2013 2013 2013 2013 2013 2013 2013 2013 2013 ...
##  $ Mes_edit_Fecha_del_derrame           : int  6 3 4 4 6 6 3 9 10 6 ...
##  $ Categoria_Instalaciones              : chr  "Instalacion fija" "Pozos" "Pozos" "Pozos" ...
##  $ Operacion_general                    : chr  "Produccion" "Otro" "Produccion" "Produccion" ...
##  $ Categoria_Fuente                     : chr  NA "Tanques/Almacenamiento" "Lineas/Tuberias" "Infraestructura Fija" ...
##  $ Grupo_causas_probable                : chr  NA "Afectaciones externas" "Factores humanos" "Problemas tecnicos" ...
##  $ Liberacion_petroleo_crudo_edicion    : num  0 0 0 0 0 ...
##  $ Edicion_recuperacion_petroleo_crudo  : num  NA 0 0 0 0 0 0 0 0 NA ...
##  $ Volumen_liberado_Cond_Final          : num  0 0 0 10 0 0 0 1 0 0 ...
##  $ Liberacion_agua_de_produccion_edicion: num  6720 3780 5040 420 10920 ...
##  $ Liberacion_volumen_gas               : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ Volumen_condensado_recuperado        : num  NA 0 0 1 0 0 0 0 0 NA ...
##  $ Edicion_Recuperacion_agua_producida  : num  NA 420 4620 0 10920 ...
##  $ Derrame_sobre_agua_limpio            : chr  "NO" "NO" "NO" "NO" ...
##  $ Estado_general                       : chr  "Observaciones tecnicas" NA NA NA ...
##  $ Codigo_area                          : int  1 1 1 1 1 1 1 1 1 3 ...

2 Instalacion de Librerias

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(gridExtra) 
## 
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
## 
##     combine
library(grid)
library(scales)

3 Modelo Potencial

3.1 Definicion de variables y valor para predicción

x_var <- "Liberacion_agua_de_produccion_edicion"
y_var <- "Edicion_Recuperacion_agua_producida"
valor_X <- 100000

3.2 Filtracion de datos

datos[[x_var]] <- as.numeric(gsub(",", ".", as.character(datos[[x_var]])))
datos[[y_var]] <- as.numeric(gsub(",", ".", as.character(datos[[y_var]])))

# Filtrado sin límite superior, solo excluye NAs y valores ≤ 0
datos_filtrados <- datos %>%
  filter(!is.na(.data[[x_var]]), !is.na(.data[[y_var]])) %>%
  filter(.data[[x_var]] > 0, .data[[y_var]] > 0) %>%
  select(X = .data[[x_var]], Y = .data[[y_var]])
## Warning: Use of .data in tidyselect expressions was deprecated in tidyselect 1.2.0.
## ℹ Please use `all_of(var)` (or `any_of(var)`) instead of `.data[[var]]`
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
cat("Datos disponibles para graficar:", nrow(datos_filtrados), "\n")
## Datos disponibles para graficar: 6483

3.3 Modelo log-log

modelo_pot <- lm(log10(Y) ~ log10(X), data = datos_filtrados)
a <- 10^coef(modelo_pot)[1]
b <- coef(modelo_pot)[2]
r_valor <- cor(log10(datos_filtrados$X), log10(datos_filtrados$Y))
r2_valor <- summary(modelo_pot)$r.squared
estimado_Y <- a * valor_X^b

3.4 Grafica

ggplot(datos_filtrados, aes(x = X, y = Y)) +
  geom_point(color = "#FFC125", alpha = 0.6) +
  stat_function(fun = function(x) a * x^b, color = "darkgreen", linewidth = 1.2) +
  geom_point(aes(x = valor_X, y = estimado_Y),
          color = "red", size = 3, shape = 17) +
  scale_x_continuous(labels = comma) +
  scale_y_continuous(labels = comma) +
  labs(
    title = paste("Modelo Potencial"),
    x = "Liberacion agua de producion",
    y = "Recuperacion agua de producion"
  ) +
  theme_minimal()

3.5 Tabla Final

resultados <- data.frame(
  Parámetro = c("Coeficiente de correlación (R)",
                "Coeficiente de determinación (R²)",
                "Intercepto logarítmico (a)",
                "Exponente (b)",
                paste0("Valor X para predicción"),
                "Predicción Y"),
  Valor = c(round(r_valor, 4),
            round(r2_valor, 4),
            round(coef(modelo_pot)[1], 4),
            round(b, 4),
            valor_X,
            round(estimado_Y, 2))
)

print(resultados)
##                           Parámetro       Valor
## 1    Coeficiente de correlación (R)      0.9312
## 2 Coeficiente de determinación (R²)      0.8671
## 3        Intercepto logarítmico (a)     -0.1440
## 4                     Exponente (b)      0.9964
## 5           Valor X para predicción 100000.0000
## 6                      Predicción Y  68900.9400