1. Introducción

En este análisis nos enfocamos exclusivamente en los pozos de Gas Natural. Aplicamos una técnica de filtrado estadístico basada en residuos para identificar la tendencia geológica principal, eliminando dispersión y valores atípicos.

2. Carga y Procesamiento

library(ggplot2)
library(dplyr)

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

# Conversión y limpieza de formatos numéricos
# (Aseguramos que las comas se lean como puntos decimales)
datos$TOTAL_DEPTH <- as.numeric(gsub(",", ".", as.character(datos$TOTAL_DEPTH)))
datos$GROUND_ELEVATION <- as.numeric(gsub(",", ".", as.character(datos$GROUND_ELEVATION)))

# Selección Base: Solo pozos de Gas Natural y datos válidos
datos_base <- datos %>%
  filter(WELL_TYPE == "Natural Gas Well",
         !is.na(GROUND_ELEVATION), !is.na(TOTAL_DEPTH),
         GROUND_ELEVATION > 0, TOTAL_DEPTH > 0)

3. Metodología de Filtrado (Acumulación Principal)

Para aislar el patrón geológico más fuerte, ajustamos un modelo preliminar y filtramos agresivamente los datos, conservando solo aquellos puntos que están extremadamente cerca de la tendencia central (el 10% con menor error residual).

modelo_temp <- lm(TOTAL_DEPTH ~ poly(GROUND_ELEVATION, 2, raw = TRUE), data = datos_base)

# Cálculo de residuos (distancia a la curva)
datos_base$distancia <- abs(residuals(modelo_temp))

# Definición del umbral estricto (Quantil 0.10)
umbral_estricto <- quantile(datos_base$distancia, 0.10, na.rm = TRUE)

# Filtrado final
datos_ultra_limpios <- datos_base %>% filter(distancia < umbral_estricto)

4. Ajuste del Modelo Final

Sobre los datos depurados, ajustamos el modelo final de segundo orden (curvilíneo).

modelo_poly <- lm(TOTAL_DEPTH ~ poly(GROUND_ELEVATION, 2, raw = TRUE), data = datos_ultra_limpios)

# Extraer R²
r2_poly <- summary(modelo_poly)$r.squared

# Generar predicciones para el gráfico
datos_ultra_limpios$prediccion <- predict(modelo_poly, newdata = datos_ultra_limpios)

5. Visualización de la Tendencia

ggplot(datos_ultra_limpios, aes(x = GROUND_ELEVATION, y = TOTAL_DEPTH)) +
  # Puntos reales (filtrados)
  geom_point(color = "black", alpha = 0.6, size = 2) +
  # Curva de tendencia
  geom_line(aes(y = prediccion), color = "purple", size = 1.5) +
  # Etiquetas y tema
  labs(title = "Regresión (Filtro de Acumulación - Gas Natural)",
       subtitle = paste("Ajuste R² =", round(r2_poly, 4)),
       x = "Elevación del Terreno (m)", 
       y = "Profundidad Total (m)") +
  theme_minimal() +
  theme(plot.title = element_text(face = "bold", size = 14))

6. Estimación Puntual

Para ejemplificar la capacidad del modelo, realizamos una estimación utilizando la elevación promedio de nuestros datos filtrados.

# Tomamos la elevación media de la muestra limpia como ejemplo
elevacion_ejemplo <- mean(datos_ultra_limpios$GROUND_ELEVATION)
nueva_obs <- data.frame(GROUND_ELEVATION = elevacion_ejemplo)

# Predicción
prediccion_valor <- predict(modelo_poly, newdata = nueva_obs)

Ejemplo de cálculo: Para una elevación promedio de 206.22 m, el modelo estima una profundidad de perforación de 346.75 m.

7. Conclusiones

El modelo de regresión aplicado a los datos más representativos (post-filtrado de acumulación) muestra una relación línel de alta precisión entre la elevación y la profundidad, con un Coeficiente de Determinación (\(R^2\)) de 0.9007.

Al trabajar con datos filtrados, se identifica un patrón geológico claro, confirmando que la elevación es un predictor confiable de la profundidad de perforación para los pozos de Gas Natural en esta región. Como se observa en la estimación (donde para 206 m de elevación se esperan 347 m de profundidad), el modelo captura con fidelidad la tendencia central del yacimiento.