El diseño de este modelo responde a una lógica física de “Suma de Distancias” para pozos terrestres. Se busca explicar la longitud total del pozo como la consecuencia obligatoria de dos factores geométricos:
Variable Dependiente (\(Y\)): Profundidad de Perforación (m). Se eligió como la variable de respuesta porque representa el esfuerzo total de ingeniería (metros perforados y tubería utilizada). Es el resultado final de la operación, el cual no se elige arbitrariamente, sino que es consecuencia de la ubicación del yacimiento y del equipo.
Variable Independiente 1 (\(X_1\)): Profundidad Vertical (m). Representa la necesidad geológica. Es la distancia vertical desde el nivel de referencia (Datum/Nivel del Mar) hasta el yacimiento objetivo. Es la variable principal porque dicta la profundidad neta a alcanzar bajo tierra.
Variable Independiente 2 (\(X_2\)): Cota Altimétrica (m). Representa el obstáculo topográfico. Al estar en tierra, el equipo suele estar sobre una elevación positiva (montaña o meseta). Esta variable cuantifica los metros “extra” que se deben perforar desde la superficie solo para llegar al nivel de referencia (Datum).
Lógica del Modelo: La longitud del pozo (\(Y\)) es, esencialmente, la suma de atravesar la elevación del terreno (\(X_2\)) más la profundidad para llegar al yacimiento (\(X_1\)).
# Limpieza
datos_model <- datos %>%
select(PROFUNDIDADE_SONDADOR_M, PROFUNDIDADE_VERTICAL_M, COTA_ALTIMETRICA_M) %>%
mutate(
y = abs(as.numeric(str_replace(as.character(PROFUNDIDADE_SONDADOR_M), ",", "."))),
x1 = abs(as.numeric(str_replace(as.character(PROFUNDIDADE_VERTICAL_M), ",", "."))),
x2 = abs(as.numeric(str_replace(as.character(COTA_ALTIMETRICA_M), ",", ".")))
) %>%
filter(!is.na(x1) & !is.na(x2) & !is.na(y)) %>%
# Filtros
filter(x1 > 0 & x1 < 10000 & x2 >= 0 & x2 <= 500 & y > 0 & y < 12000)
# Asignación de variables
y <- datos_model$y
x1 <- datos_model$x1
x2 <- datos_model$x2Aquí puedes rotar el gráfico con el ratón y hacer zoom para explorar la distribución de los pozos.
# Gráfico 3D
plot_ly(x = ~x1, y = ~x2, z = ~y,
type = "scatter3d",
mode = "markers",
marker = list(size = 5, color = "#27AE60", line = list(color = '#1E8449', width = 1)),
name = "Pozos") %>%
layout(
title = "Gráfica N°1: Topografía Profundidad (3D)",
scene = list(
xaxis = list(title = "Prof. Vertical (m) [X1]"),
yaxis = list(title = "Cota Altimétrica (m) [X2]"),
zaxis = list(title = "Prof. Perforación (m) [Y]"),
camera = list(eye = list(x = 1.5, y = 1.5, z = 1.5))
)
)Se plantea la ecuación del plano: \[Y = \beta_0 + \beta_1 \cdot X_1 + \beta_2 \cdot X_2\]
Se visualiza el plano matemático resultante sobre los datos reales.
grid_x1 <- seq(min(x1), max(x1), length.out = 50)
grid_x2 <- seq(min(x2), max(x2), length.out = 50)
z_plano <- t(outer(grid_x1, grid_x2, function(x1_val, x2_val) {
b0 + (b1 * x1_val) + (b2 * x2_val)
}))
# Generación del Gráfico
plot_ly() %>%
add_trace(x = grid_x1,
y = grid_x2,
z = z_plano,
type = "surface",
colorscale = list(c(0, 1), c("#2ECC71", "#27AE60")),
opacity = 0.8,
name = "Plano Ajustado",
showscale = FALSE) %>%
add_trace(x = ~x1,
y = ~x2,
z = ~y,
type = "scatter3d",
mode = "markers",
marker = list(size = 4, color = "#2C3E50", line = list(color = 'black', width = 0.5)),
name = "Datos Reales") %>%
layout(
title = "Gráfica N°2: Plano de Regresión y Datos (Interactivo)",
scene = list(
xaxis = list(title = "Prof. Vertical (m) [X1]"),
yaxis = list(title = "Cota Altimétrica (m) [X2]"),
zaxis = list(title = "Prof. Perforación (m) [Y]"),
camera = list(eye = list(x = 1.8, y = 1.8, z = 1))
)
)# Tabla
tabla <- data.frame(
Parametro = c("Intercepto (b0)", "Coef. Vertical (b1)", "Coef. Cota (b2)"),
Valor = c(sprintf("%.2f", b0), sprintf("%.4f", b1), sprintf("%.4f", b2)),
R2_Adj = c(paste0(round(r2_adj*100,2), "%"), "", ""),
R2 = c(paste0(round(r2*100,2), "%"), "", ""),
Interpretacion = c("Valor Base", "Impacto Objetivo Geológico", "Impacto Topografía")
)
tabla %>%
gt() %>%
tab_header(
title = md("**RESUMEN DEL MODELO MÚLTIPLE**"),
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 MÚLTIPLE | ||||
| Parámetros y Bondad de Ajuste | ||||
| Parametro | Valor | R2_Adj | R2 | Interpretacion |
|---|---|---|---|---|
| Intercepto (b0) | 206.40 | 91.17% | 91.17% | Valor Base |
| Coef. Vertical (b1) | 1.0304 | Impacto Objetivo Geológico | ||
| Coef. Cota (b2) | -1.0257 | Impacto Topografía | ||
| Fuente: Grupo 3 | ||||
texto_conclusion <- paste0(
"Se ha desarrollado un modelo de regresión lineal múltiple para estimar la **Profundidad de Perforaciónr (Y)** ",
"en función de la **Profundidad Vertical (X1)** y la **Cota Altimétrica (X2)**.<br><br>",
"El modelo presenta un coeficiente de determinación ($R^2$) del **", round(r2*100, 2), "%**, ",
"lo que confirma la fuerte relación física existente: la longitud total perforada equivale, casi exactamente, a la suma del objetivo geológico más la elevación topográfica del terreno.<br><br>",
"Por ejemplo, si tenemos un objetivo a **", val_x1, " m** y una elevación de **", val_x2, " m**, ",
"el modelo estima una profundidad total de **", round(estimacion, 2), " m**."
)
cat(texto_conclusion)Se ha desarrollado un modelo de regresión lineal múltiple para
estimar la Profundidad de Perforaciónr (Y) en función
de la Profundidad Vertical (X1) y la Cota
Altimétrica (X2).
El modelo presenta un coeficiente de
determinación (\(R^2\)) del
91.17%, lo que confirma la fuerte relación física
existente: la longitud total perforada equivale, casi exactamente, a la
suma del objetivo geológico más la elevación topográfica del
terreno.
Por ejemplo, si tenemos un objetivo a 1750
m y una elevación de 39 m, el modelo estima
una profundidad total de 1969.65 m.