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
##
## 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)
Modelo de Regresion
Lineal 1
Definicion de
variables y valor para predicción
x_var <- "Liberacion_petroleo_crudo_edicion"
y_var <- "Edicion_recuperacion_petroleo_crudo"
valor_X <- 10000
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]])))
datos_modelo <- datos %>% select(X = .data[[x_var]],
Y = .data[[y_var]]) %>% na.omit()
## 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_modelo), "\n")
## Datos disponibles para graficar: 8522
Modelo
Ajuste modelo
lineal simple Y ~ X
modelo_completo <- lm(Y ~ X, data = datos_modelo)
Predicción para
valor_X
pred_Y_completo <- predict(modelo_completo, newdata = data.frame(X = valor_X))
Tabla Final con
datos completos
tabla_completo <- data.frame(
Parámetro = c("Coeficiente de correlación (R)",
"Coeficiente de determinación (R²)",
"Intercepto (a)",
"Pendiente (b)",
"Valor X para predicción",
"Predicción Y"),
Valor = c(round(r_completo, 4),
round(r2_completo, 4),
round(coef(modelo_completo)[1], 4),
round(coef(modelo_completo)[2], 4),
valor_X,
round(pred_Y_completo, 2))
)
print("=== Resultados: Modelo con todos los datos ===")
## [1] "=== Resultados: Modelo con todos los datos ==="
## Parámetro Valor
## 1 Coeficiente de correlación (R) 0.9669
## 2 Coeficiente de determinación (R²) 0.9348
## 3 Intercepto (a) -277.7684
## 4 Pendiente (b) 0.9116
## 5 Valor X para predicción 10000.0000
## 6 Predicción Y 8838.1800
Grafica
grafico_completo <- ggplot(datos_modelo, aes(x = X, y = Y)) +
geom_point(color = "skyblue", alpha = 0.5) +
geom_smooth(method = "lm", se = FALSE, color = "red", linewidth = 1.2) +
geom_point(aes(x = valor_X, y = pred_Y_completo),
color = "darkgreen", size = 3) +
scale_x_continuous(labels = comma) +
scale_y_continuous(labels = comma) +
labs(
title = "Modelo Regresion Lineal 1",
x = "Liberación de petróleo crudo",
y = "Recuperación de petróleo crudo") +
theme_minimal()
print(grafico_completo)
## `geom_smooth()` using formula = 'y ~ x'

Modelo de Regresion
Lineal 2 con los 3400 casos con mayor recuperación
Definicion de
variables y valor para predicción
x_var <- "Liberacion_petroleo_crudo_edicion"
y_var <- "Edicion_recuperacion_petroleo_crudo"
valor_X <- 10000 # Valor para hacer predicción
datos[[x_var]] <- as.numeric(gsub(",", ".", as.character(datos[[x_var]])))
datos[[y_var]] <- as.numeric(gsub(",", ".", as.character(datos[[y_var]])))
Filtracion de datos y
limite de rango
datos_filtrados <- datos %>%
filter(!is.na(.data[[x_var]]), !is.na(.data[[y_var]])) %>%
filter(.data[[x_var]] >= 0, .data[[x_var]] <= 78612)
cat("Datos disponibles para graficar:", nrow(datos_filtrados), "\n")
## Datos disponibles para graficar: 8521
datos_top <- datos_filtrados %>%
arrange(desc(.data[[y_var]])) %>%
slice_head(n = 3400) %>%
select(X = .data[[x_var]], Y = .data[[y_var]])
Modelo
Ajuste modelo
lineal simple Y ~ X
modelo_lineal <- lm(Y ~ X, data = datos_top)
Predicción para
valor_X
estimado_Y <- predict(modelo_lineal, newdata = data.frame(X = valor_X))
Tabla Final con
datos completos
tabla_completo <- data.frame(
Parámetro = c("Coeficiente de correlación (R)",
"Coeficiente de determinación (R²)",
"Intercepto (a)",
"Pendiente (b)",
"Valor X para predicción",
"Predicción Y"),
Valor = c(round(r_completo, 4),
round(r2_completo, 4),
round(coef(modelo_completo)[1], 4),
round(coef(modelo_completo)[2], 4),
valor_X,
round(pred_Y_completo, 2))
)
print("=== Resultados: Modelo con todos los datos ===")
## [1] "=== Resultados: Modelo con todos los datos ==="
## Parámetro Valor
## 1 Coeficiente de correlación (R) 0.9669
## 2 Coeficiente de determinación (R²) 0.9348
## 3 Intercepto (a) -277.7684
## 4 Pendiente (b) 0.9116
## 5 Valor X para predicción 10000.0000
## 6 Predicción Y 8838.1800
Grafica
grafico_top <- ggplot(datos_top, aes(x = X, y = Y)) +
geom_point(color = "pink", size = 2) +
geom_smooth(method = "lm", se = FALSE, color = "red", linewidth = 1.2) +
annotate("point", x = valor_X, y = estimado_Y, color = "darkgreen", size = 4) +
labs(
title = "Modelo Regresion Lineal 2",
x = "Liberación del petroleo crudo",
y = "Recuperación del petroleo crudo"
) +
theme_minimal()
print(grafico_top)
## `geom_smooth()` using formula = 'y ~ x'

Comparacion de
modelos
Graficas de los dos
modelos juntos
gridExtra::grid.arrange(grafico_completo, grafico_top, ncol = 2)
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'

Tabla
comparativa
tabla_comparativa <- data.frame(
Parametro = c(
"Coeficiente de correlación (R)",
"Coeficiente de determinación (R²)",
"Intercepto",
"Pendiente",
"Valor X para predicción",
"Predicción de Y"
),
`Modelo con todos los datos` = c(
round(cor(datos_modelo$X, datos_modelo$Y), 4),
round(summary(modelo_completo)$r.squared, 4),
round(coef(modelo_completo)[1], 4),
round(coef(modelo_completo)[2], 4),
valor_X,
round(pred_Y_completo, 4)
),
` Modelo con top 3400 datos` = c(
round(cor(datos_top$X, datos_top$Y), 4),
round(summary(modelo_lineal)$r.squared, 4),
round(coef(modelo_lineal)[1], 4),
round(coef(modelo_lineal)[2], 4),
valor_X,
round(estimado_Y, 4)
),
check.names = FALSE # Permite usar nombres con espacios
)
if (require(knitr)) {
knitr::kable(tabla_comparativa, caption = "Comparación de modelos lineales")
}
## Loading required package: knitr
Comparación de modelos lineales
Parametro |
Modelo con todos los datos |
Modelo con top 3400 datos |
Coeficiente de correlación (R) |
0.9669 |
0.9356 |
Coeficiente de determinación (R²) |
0.9348 |
0.8754 |
Intercepto |
-277.7684 |
2.1145 |
Pendiente |
0.9116 |
0.8094 |
Valor X para predicción |
10000.0000 |
10000.0000 |
Predicción de Y |
8838.1752 |
8095.6239 |