En este reporte exploramos una relación no lineal entre la Profundidad Total y la Latitud de los pozos. Utilizamos un Modelo de Regresión Potencial de la forma Y=a⋅Xb. Para lograr esto, aplicamos una transformación logarítmica a ambas variables, lo que permite linealizar la relación y calcular los coeficientes del modelo.
datos <- read.csv(
"Petroleo_Ontaro.csv",
header = TRUE,
sep = ";",
stringsAsFactors = FALSE
)
clean_lat <- function(val) {
val <- as.character(val)
val <- gsub("\\.", "", val)
num <- as.numeric(val)
if (is.na(num)) return(NA)
if (num == 0) return(0)
while (abs(num) > 90) { num <- num / 10 }
return(num)
}
datos$SURFACE_LATITUDE_83 <- sapply(datos$SURFACE_LATITUDE_83, clean_lat)
datos$TOTAL_DEPTH <- as.numeric(gsub(",", ".", datos$TOTAL_DEPTH))
datos_validos <- subset(
datos,
TOTAL_DEPTH > 0 &
SURFACE_LATITUDE_83 > 40 &
SURFACE_LATITUDE_83 < 60
)
# Crear cortes (bins) de profundidad cada 100 metros
cortes <- seq(0, 5000, by = 100)
datos_validos$DEPTH_BIN <- cut(datos_validos$TOTAL_DEPTH, breaks = cortes, labels = FALSE)
# Calcular promedios
library(stats)
promedios <- aggregate(
cbind(TOTAL_DEPTH, SURFACE_LATITUDE_83) ~ DEPTH_BIN,
data = datos_validos,
FUN = mean
)
# Contar cuántos pozos hay en cada intervalo para asegurar significancia (n > 5)
conteos <- aggregate(TOTAL_DEPTH ~ DEPTH_BIN, data = datos_validos, FUN = length)
colnames(conteos)[2] <- "NUM_POZOS"
# Unir y filtrar
datos_agrupados <- merge(promedios, conteos, by = "DEPTH_BIN")
datos_agrupados <- subset(datos_agrupados, NUM_POZOS > 5)
# Variables de estudio
x_promedio <- datos_agrupados$TOTAL_DEPTH
y_promedio <- datos_agrupados$SURFACE_LATITUDE_83
Se plantea la hipótesis de que existe una relación no lineal y regional entre la profundidad a la que se perfora y la latitud. Específicamente, postulamos que el comportamiento promedio sigue una tendencia modelable mediante una función potencial de la forma: \[ y = a \cdot x^b \] \(\ln(y) = \ln(a) + b \cdot \ln(x)\).
x1 <- log(x_promedio)
y1 <- log(y_promedio)
regresionPotencial <- lm(y1 ~ x1)
b <- coef(regresionPotencial)[2]
a <- exp(coef(regresionPotencial)[1])
cat("Parámetro a:", round(a, 4), "\n")
## Parámetro a: 45.2208
cat("Parámetro b:", round(b, 4), "\n")
## Parámetro b: -0.0088
# Coeficiente de correlación R (raíz de R cuadrado)
r <- sqrt(summary(regresionPotencial)$r.squared)
cat("Coeficiente de Correlación (R):", round(r, 4), "\n")
## Coeficiente de Correlación (R): 0.8867
# Línea de tendencia (se crea aquí)
x_linea <- seq(min(x_promedio), max(x_promedio), length.out = 500)
y_linea <- a * x_linea^b
par(mar = c(4.5, 4.5, 3, 1))
plot(
x_promedio, y_promedio,
col = "blue",
pch = 16,
cex = 1.4,
main = "Regresión Potencial: Latitud vs Profundidad",
xlab = "Profundidad (m)",
ylab = "Latitud (°)",
las = 1
)
lines(x_linea, y_linea, col = "red", lwd = 3)
legend(
"topright",
legend = c(
paste("y =", round(a, 2), "* x ^", round(b, 4)),
paste("R =", round(r, 4))
),
col = c("red", "black"),
lwd = c(3, NA),
bty = "n"
)
grid()
# Generamos los puntos de la línea de tendencia estimada
x_linea <- seq(min(x_promedio), max(x_promedio), length.out = 500)
y_linea <- a * x_linea^b
cat("Ecuación final del modelo estimado: y = ", round(a, 2))
## Ecuación final del modelo estimado: y = 45.22
En el análisis de pozos petroleros se observa una relación potencial positiva entre la Latitud y la Profundidad, modelada mediante una función de la forma y=a⋅xb, lo que indica un comportamiento no lineal entre ambas variables. El coeficiente de correlación R= 0.8867 evidencia una fuerte asociación positiva, lo que demuestra un buen ajuste del modelo a los datos observados. A partir del modelo estimado, se obtiene una profundidad aproximada de 45.22 para el valor de latitud considerado.