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 ...
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
Modelo Multiple 3D
Definicion de
variables y valor para predicción
Y <- "Edicion_recuperacion_petroleo_crudo"
X1 <- "Liberacion_petroleo_crudo_edicion"
X2 <- "Liberacion_agua_de_produccion_edicion"
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
}
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))
)
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
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")
