1. Introducción

El presente análisis evalúa la relación entre la elevación del terreno y la latitud geográfica de pozos petroleros, con el objetivo de identificar tendencias espaciales mediante un modelo de regresión polinómica.

2. Carga de datos

library(dplyr)
library(ggplot2)

datos <- read.csv(
  "Petroleo_Ontaro.csv",
  sep = ";",
  header = TRUE,
  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) || num == 0) return(NA)
  while (abs(num) > 90) {
    num <- num / 10
  }
  return(num)
}

df_limpio <- datos %>%
  mutate(
    lat = sapply(SURFACE_LATITUDE_83, clean_lat),
    elev = as.numeric(GROUND_ELEVATION)
  ) %>%
  filter(
    !is.na(lat),
    !is.na(elev),
    lat > 42, lat < 46,
    elev > 150, elev < 400
  ) %>%
  mutate(elev_bin = round(elev / 10) * 10) %>%
  group_by(elev_bin) %>%
  summarise(lat_prom = mean(lat), .groups = "drop")

head(df_limpio)
## # A tibble: 6 × 2
##   elev_bin lat_prom
##      <dbl>    <dbl>
## 1      150     43.7
## 2      160     43.2
## 3      170     42.5
## 4      180     42.8
## 5      190     42.7
## 6      200     42.8

4. Definición de variables

cat("Variable independiente (X): Elevación del terreno (elev_bin)\n")
## Variable independiente (X): Elevación del terreno (elev_bin)
cat("Variable dependiente (Y): Latitud promedio (lat_prom)\n")
## Variable dependiente (Y): Latitud promedio (lat_prom)

5. Conjetura

Se plantea que la latitud promedio de los pozos petroleros puede ser estimada a partir de la elevación del terreno mediante un modelo polinómico de cuarto grado. La ecuación obtenida representa una relación no lineal, lo que sugiere que los cambios en elevación influyen de forma compleja en la distribución espacial de los pozos. El valor del coeficiente de correlación obtenido respalda la capacidad predictiva del modelo dentro del rango analizado.

\[y = \beta_0 + \beta_1 x + \beta_2 x^2 + \beta_3 x^3 + \beta_4 x^4 + \epsilon\]Donde:\(y\): Latitud Promedio.\(x\): Elevación del terreno (bin 10m).

6. Parámetros del modelo

modelo_poli <- lm(
  lat_prom ~ poly(elev_bin, 4, raw = TRUE),
  data = df_limpio
)

R <- cor(df_limpio$lat_prom, predict(modelo_poli))

coef <- coef(modelo_poli)
a <- coef[1]; b <- coef[2]; c <- coef[3]; d <- coef[4]; e <- coef[5]

ecuacion <- paste0(
  "y = ", round(a,5), " + ",
  round(b,5), "x + ",
  round(c,5), "x² + ",
  round(d,5), "x³ + ",
  round(e,5), "x⁴"
)

cat("Correlación (R):", round(R,3), "\n")
## Correlación (R): 0.887
cat("Ecuación del modelo:\n", ecuacion, "\n")
## Ecuación del modelo:
##  y = 80.71174 + -0.58566x + 0.00327x² + -1e-05x³ + 0x⁴

7. Test

if (abs(R) > 0.7) {
  cat("El modelo presenta una relación fuerte entre las variables.\n")
} else if (abs(R) > 0.4) {
  cat("El modelo presenta una relación moderada entre las variables.\n")
} else {
  cat("El modelo presenta una relación débil entre las variables.\n")
}
## El modelo presenta una relación fuerte entre las variables.

8. Visualización del modelo

# Punto a predecir para la gráfica
val_a_predecir <- 300
prediccion <- predict(
  modelo_poli,
  newdata = data.frame(elev_bin = val_a_predecir)
)

# Curva de predicción
x_curva <- seq(
  min(df_limpio$elev_bin),
  max(df_limpio$elev_bin),
  length.out = 300
)
df_curva <- data.frame(elev_bin = x_curva)
df_curva$y_pred <- predict(modelo_poli, newdata = df_curva)

ggplot(df_limpio, aes(x = elev_bin, y = lat_prom)) +
  geom_point(color = "steelblue", size = 3, alpha = 0.6) +
  geom_line(
    data = df_curva,
    aes(x = elev_bin, y = y_pred),
    color = "firebrick1",
    size = 1.3
  ) +
  geom_point(
    aes(x = val_a_predecir, y = prediccion),
    color = "gold",
    size = 5,
    shape = 18
  ) +
  annotate(
    "text",
    x = val_a_predecir,
    y = prediccion,
    label = paste("Estimación:", round(prediccion, 2)),
    hjust = -0.2,
    vjust = -0.6,
    color = "darkgoldenrod",
    fontface = "bold"
  ) +
  labs(
    title = "Regresión Polinómica (Grado 4)",
    subtitle = paste("Modelo ajustado | R =", round(R, 3)),
    x = "Elevación del Terreno (bins de 10 m)",
    y = "Latitud Promedio (°)"
  ) +
  theme_minimal()

9. Estimación

cat("Para una elevación de", val_a_predecir,
    "m, la latitud estimada es:", round(prediccion, 4), "\n")
## Para una elevación de 300 m, la latitud estimada es: 43.5208

10. Conclusión

En el análisis de regresión polinómica se observa una relación no lineal entre la elevación del terreno (elev_bin) y la latitud promedio de los pozos petroleros (lat_prom). El modelo se describe mediante la ecuación y = 80.71174 − 0.58566x + 0.00327x² − 0.00001x³ + 0x⁴, con un coeficiente de correlación R = 0.887, lo cual indica una fuerte asociación entre ambas variables. A partir del modelo, se estima que para una elevación de 300 m, la latitud promedio estimada es aproximadamente 43.5208°.