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(scatterplot3d)
library(readr)
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

3 Modelo Multiple 3D

3.1 Definicion de variables y valor para predicción

Y  <- "Edicion_recuperacion_petroleo_crudo"
X1 <- "Liberacion_petroleo_crudo_edicion"
X2 <- "Liberacion_agua_de_produccion_edicion"

3.2 Filtracion de datos

for (var in c(X1, X2, Y)) {
  datos[[var]] <- as.numeric(gsub(",", ".", as.character(datos[[var]])))
  min_val <- min(datos[[var]][datos[[var]] > 0], na.rm = TRUE)
  datos[[var]][is.na(datos[[var]]) | datos[[var]] <= 0] <- min_val
}

3.3 Aplicacion transformación logarítmica

datos <- datos %>%
  mutate(
    log_X1 = log10(.data[[X1]]),
    log_X2 = log10(.data[[X2]]),
    log_Y  = log10(.data[[Y]])
  )

3.4 Filtrado de outliers entre percentiles 2% y 98%

datos_filtrados <- datos %>%
  filter(
    between(log_X1, quantile(log_X1, 0.02, na.rm = TRUE), quantile(log_X1, 0.98, na.rm = TRUE)),
    between(log_X2, quantile(log_X2, 0.02, na.rm = TRUE), quantile(log_X2, 0.98, na.rm = TRUE)),
    between(log_Y,  quantile(log_Y,  0.02, na.rm = TRUE), quantile(log_Y,  0.98, na.rm = TRUE))
  )

3.5 Modelo de regresión múltiple logarítmica

modelo_log <- lm(log_Y ~ log_X1 + log_X2, data = datos_filtrados)
summary(modelo_log)
## 
## Call:
## lm(formula = log_Y ~ log_X1 + log_X2, data = datos_filtrados)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.1329  0.0124  0.0658  0.7854  3.9583 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.342867   0.055052  -6.228 4.92e-10 ***
## log_X1       0.724301   0.006776 106.887  < 2e-16 ***
## log_X2       0.052118   0.014586   3.573 0.000355 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.014 on 9652 degrees of freedom
## Multiple R-squared:  0.5585, Adjusted R-squared:  0.5584 
## F-statistic:  6105 on 2 and 9652 DF,  p-value: < 2.2e-16

3.6 Gráfico 3D

s3d <- scatterplot3d(
  x = datos_filtrados$log_X1,
  y = datos_filtrados$log_X2,
  z = datos_filtrados$log_Y,
  pch = 16,
  color = "skyblue",
  xlab = paste("Liberacion del petroleo crudo"),
  ylab = paste("Liberacion agua de produccion"),
  zlab = paste("Recuperacion petroleo crudo"),
  main = "Regresión Múltiple Logarítmica 3D")

coefs <- coef(modelo_log)
s3d$plane3d(coefs[1], coefs[2], coefs[3], draw_polygon = TRUE, col = "lightgreen")