1. Introducción

En este análisis exploramos la relación entre la Elevación del Terreno y la Latitud en la región de Ontario. Dado que la relación no es estrictamente lineal, se propone un Modelo Polinómico de Grado 4 para capturar las variaciones geográficas.

2. Carga y Limpieza de Datos

Se implementa una función de limpieza personalizada para corregir el formato de la latitud.

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

# --- FUNCIÓN DE LIMPIEZA PERSONALIZADA ---
clean_lat <- function(val) {
  val <- as.character(val)
  val <- gsub("\\.", "", val)   # Eliminar puntos extra
  num <- as.numeric(val)        # Convertir a número
  
  if (is.na(num)) return(NA)
  if (num == 0) return(0)
  
  # Ajuste de escala: dividir hasta que sea una latitud válida (< 90)
  while (abs(num) > 90) {
    num <- num / 10
  }
  return(num)
}

# Aplicar limpieza
datos$SURFACE_LATITUDE_83 <- sapply(datos$SURFACE_LATITUDE_83, clean_lat)
datos$GROUND_ELEVATION <- as.numeric(gsub(",", ".", as.character(datos$GROUND_ELEVATION)))

# Filtrado de datos (Latitudes entre 40 y 60)
elevacion <- datos$GROUND_ELEVATION
latitud <- datos$SURFACE_LATITUDE_83

datos_limpios <- na.omit(data.frame(elevacion, latitud))
datos_limpios <- subset(datos_limpios, latitud > 40 & latitud < 60)

# Definición de variables para el modelo
x <- datos_limpios$elevacion
y <- datos_limpios$latitud

3. Ajuste del Modelo Polinómico

Ajustamos un modelo de cuarto orden: \(y = \beta_0 + \beta_1 x + \beta_2 x^2 + \beta_3 x^3 + \beta_4 x^4\)

# Modelo de regresión polinómica grado 4
regresionPolinomica <- lm(y ~ x + I(x^2) + I(x^3) + I(x^4))

# Extracción de coeficientes
coeficientes <- coef(regresionPolinomica)
a <- coeficientes[1] # Intercepto
b <- coeficientes[2] # x
c <- coeficientes[3] # x^2
d <- coeficientes[4] # x^3
e <- coeficientes[5] # x^4

# Bondad de ajuste
r2 <- summary(regresionPolinomica)$r.squared * 100

Ecuación del modelo: \[ Latitud = 5.525000e+01 + -1.712229e-01x + ... + 9.472679e-10x^4 \]

4. Visualización Gráfica

# Configuración de márgenes
par(mar = c(4,4,2,1))

# Gráfico de dispersión
plot(x, y,
     col = 5,          # Color cian/azul claro
     pch = 7,          # Símbolo: cuadrado con X
     main = "Regresión Polinómica (Grado 4)",
     xlab = "Elevación (m)",
     ylab = "Latitud (°)",
     xlim = c(0, 694),
     ylim = c(40, 58.5)
)

# Curva de ajuste
curve(a + b*x + c*x^2 + d*x^3 + e*x^4,
      add = TRUE,
      col = "red",
      lwd = 2)

# Añadir rejilla para facilitar lectura
grid()

5. Estimaciones y Predicciones

Realizamos una predicción puntual para una elevación específica (570 m) y para la media de los datos.

# 1. Predicción manual para x = 570
val_x <- 570
pred_y_manual <- a + b*val_x + c*val_x^2 + d*val_x^3 + e*val_x^4

# 2. Predicción para la elevación promedio (para la conclusión)
elevacion_ejemplo <- mean(x)
nueva_obs <- data.frame(x = elevacion_ejemplo)
# Nota: Para predict() con poly manual, a veces es mejor recrear el dataframe
# pero aquí usamos el cálculo directo para consistencia con tu código
prediccion_promedio <- a + b*elevacion_ejemplo + c*elevacion_ejemplo^2 + d*elevacion_ejemplo^3 + e*elevacion_ejemplo^4
  • Latitud estimada para 570 m: 42.4464°
  • Latitud estimada para la elevación media (198.3 m): 42.7507°

6. Conclusiones

La elevación es una variable útil pero parcial para predecir la latitud en esta región.

El modelo polinómico de grado 4 ofrece un ajuste superior al lineal (\(R^2 =\) 44.8919%), permitiendo estimaciones geográficas aproximadas basadas únicamente en la altitud del terreno.

Por ejemplo, para una elevación promedio de 198.3 metros, el modelo ubica la latitud en aproximadamente 42.75 grados.