1. Introducción

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.

2. Carga de datos

datos <- read.csv(
  "Petroleo_Ontaro.csv",
  header = TRUE,
  sep = ";",
  stringsAsFactors = FALSE
)

3. Depuración de datos

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
)

4. Definición de variables

# 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

5. Conjetura

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)\).

6. Parámetros del modelo

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

7. Test

# 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

8. Visualización del modelo

# 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()

9. Estimación

# 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

10. Conclusión

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.