library(readxl)
library(dplyr)
library(stringr)
library(gt)
library(e1071)
library(lubridate)
library(MASS)
library(knitr)
library(plotly)
setwd("C:/Users/majke/Downloads/Proyecto Estadistica/RMARKDOWN")
tryCatch({
Datos_Brutos <- read_excel("tabela_de_pocos_janeiro_2018.xlsx")
}, error = function(e) {
stop("Error al leer el archivo Excel. Verifica la ruta y el nombre.")
})Se aplica un modelo de crecimiento exponencial sobre los datos agrupados para reducir el ruido y encontrar la tendencia de la cuenca.
Se estableció la Lámina de Agua como variable independiente (x ) por ser el condicionante ambiental primario que define el tipo de operación (aguas someras vs. profundas). La Profundidad de Perforación actúa como variable dependiente (y ), ya que representa la longitud total de perforación requerida para operar en ese entorno.
Esta relación modela el crecimiento de la complejidad técnica: a medida que aumenta la profundidad del mar, la longitud del pozo tiende a crecer de forma acelerada (exponencial) para compensar la distancia vertical y las trayectorias direccionales necesarias desde la plataforma.
datos_raw <- Datos_Brutos %>%
dplyr::select(LAMINA_D_AGUA_M, PROFUNDIDADE_SONDADOR_M) %>%
mutate(
x_raw = abs(as.numeric(str_replace(as.character(LAMINA_D_AGUA_M), ",", "."))),
y_raw = abs(as.numeric(str_replace(as.character(PROFUNDIDADE_SONDADOR_M), ",", ".")))
) %>%
filter(!is.na(x_raw) & !is.na(y_raw) & x_raw > 0 & y_raw > 80) %>%
filter(x_raw < 15000)datos_plot <- datos_raw %>% filter(y_raw < 15000)
par(mar = c(5, 5, 4, 2))
color_trans <- rgb(0.2, 0.6, 0.86, 0.4)
plot(datos_plot$x_raw, datos_plot$y_raw,
main = "Gráfica N°1: Dispersión de Prof. de Perforación en función de la Lámina de Agua",
xlab = "Lámina de Agua (m)",
ylab = "Profundidad de Perforación (m)",
col = color_trans, pch = 16, cex = 0.6, frame.plot = FALSE)
grid(nx = NULL, ny = NULL, col = "#D7DBDD", lty = "dotted")Debido a la dispersión observada en la Gráfica N°1, se aplica Binning para reducir el ruido y encontrar la tendencia de la cuenca.
# Agrupamiento
datos_model <- datos_raw %>%
mutate(x_bin = round(x_raw / 50) * 50) %>%
group_by(x_bin) %>%
summarise(
y = mean(y_raw, na.rm = TRUE),
conteo = n()
) %>%
rename(x = x_bin) %>%
filter(conteo >= 3)
# Limpieza de Outliers
lim_y <- quantile(datos_model$y, c(0.05, 0.95))
datos_model <- datos_model %>%
filter(y >= lim_y[1] & y <= lim_y[2])
x <- datos_model$x
y <- datos_model$ypar(mar = c(5, 5, 4, 2))
plot(x, y,
main = "Gráfica N°2: Perfil de Prof. de Perforación Promedio en función de la Lámina de Agua",
xlab = "Lámina de Agua Agrupada (m)",
ylab = "Profundidad Perforación Promedio (m)",
col = "#3498DB", pch = 16, cex = 1.2, frame.plot = FALSE)
grid(nx = NULL, ny = NULL, col = "#D7DBDD", lty = "dotted")
axis(1); axis(2)Se plantea un modelo exponencial: y=a⋅ebx Linealización: ln(y)=ln(a)+bx
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, y,
main = "Gráfica N°3: Modelo Exponencial: Prof. de Perforación en función de la Lámina de Agua",
xlab = "Lámina de Agua Agrupada (m)",
ylab = "Profundidad Perforación Promedio (m)",
col = "#3498DB", pch = 16, cex = 1.0, frame.plot = FALSE)
grid(nx = NULL, ny = NULL, col = "#D7DBDD", lty = "dotted")
x_seq <- seq(min(x), max(x), length.out = 500)
pred_log <- predict(modelo_exp, list(x = 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 (Promedios)", "Modelo Exponencial", "I.C. 95%"),
col = c("#3498DB", "#E74C3C", "gray"),
pch = c(16, NA, 15), lwd = c(NA, 3, NA), pt.cex = c(1, NA, 2), bty = "n")# Extraer el resumen del modelo linealizado
resumen_modelo <- summary(modelo_exp)
# Calcular R^2 y Coeficiente de correlación (r)
r2 <- resumen_modelo$r.squared
r <- sign(coef(modelo_exp)[2]) * sqrt(r2)
# Extraer los coeficientes a y b
a <- exp(coef(modelo_exp)[1])
b <- coef(modelo_exp)[2]
# Construir las cadenas de texto para las ecuaciones
ecuacion_txt_latex <- sprintf("$$y = %.4f \\cdot e^{%.5fx}$$", a, b)
ecuacion_txt_simple <- sprintf("y = %.4f * e^(%.5fx)", a, b)
# Variables para el ejemplo final en las conclusiones
x_ejemplo <- 1000
y_est <- a * exp(b * x_ejemplo)cat(paste0("**Coeficiente de Determinación ($R^2$):** ", round(r2, 4), " (", round(r2*100, 2), "%)<br>"))Coeficiente de Determinación (\(R^2\)): 0.8258 (82.58%)
Correlación del modelo linealizado (r): 0.9087*
tabla <- data.frame(
Variable = c("Lámina de Agua", "Prof. Perforación"),
Tipo = c("Independiente (X)", "Dependiente (Y)"),
R2 = c(paste0(round(r2, 4)), ""),
Intercepto_a = c(sprintf("%.4f", a), ""),
Coeficiente_b = c(sprintf("%.5f", b), ""),
Ecuacion = c(ecuacion_txt_simple, "")
)
tabla %>%
gt() %>%
tab_header(
title = md("**RESUMEN DEL MODELO EXPONENCIAL**"),
subtitle = "Parámetros y Bondad de Ajuste"
) %>%
tab_source_note(source_note = "Fuente: Grupo 3") %>%
cols_align(align = "center", columns = everything()) %>%
tab_style(
style = list(cell_fill(color = "#2C3E50"), cell_text(color = "white", weight = "bold")),
locations = cells_title()
) %>%
tab_style(
style = list(cell_fill(color = "#ECF0F1"), cell_text(weight = "bold", color = "#2C3E50")),
locations = cells_column_labels()
) %>%
tab_options(
table.border.top.color = "#2C3E50",
table.border.bottom.color = "#2C3E50",
data_row.padding = px(8)
)| RESUMEN DEL MODELO EXPONENCIAL | |||||
| Parámetros y Bondad de Ajuste | |||||
| Variable | Tipo | R2 | Intercepto_a | Coeficiente_b | Ecuacion |
|---|---|---|---|---|---|
| Lámina de Agua | Independiente (X) | 0.8258 | 2913.1272 | 0.00022 | y = 2913.1272 * e^(0.00022x) |
| Prof. Perforación | Dependiente (Y) | ||||
| Fuente: Grupo 3 | |||||
texto_conclusion <- paste0(
"Entre la lámina de agua y la profundidad de perforación existe una relación de tipo **exponencial**, ",
"explicada por un coeficiente de determinación **$R^2$ de ", round(r2, 4), "**.<br><br>",
"La ecuación matemática del modelo es:<br>", ecuacion_txt_latex, "<br><br>",
"Por ejemplo, para una lámina de agua de **", round(x_ejemplo, 2), " m**, ",
"se estima una profundidad de perforación de **", round(y_est, 2), " m**."
)
cat(texto_conclusion)Entre la lámina de agua y la profundidad de perforación existe una
relación de tipo exponencial, explicada por un
coeficiente de determinación \(R^2\) de 0.8258.
La
ecuación matemática del modelo es:
\[y =
2913.1272 \cdot e^{0.00022x}\]
Por ejemplo, para una
lámina de agua de 1000 m, se estima una profundidad de
perforación de 3615.98 m.