ANÁLISIS ESTADÍSTICO

1. CARGA DE LIBRERÍAS Y DATOS

# 1. CARGA DE DATOS Y LIBRERIAS
library(dplyr)
library(knitr)
library(gt)

setwd("C:/Users/HP/Documents/PROYECTO ESTADISTICA/RStudio")
datos<- read.csv("tabla original.csv", header = TRUE, sep = ";", dec = ",")

2. TABLA PARES DE VALORES

El consumo de combustible depende de la longitud horizontal de forma variable: al inicio, el esfuerzo para remover terreno es máximo, lo que dispara el gasto; pero a medida que el avance se estabiliza, el consumo se ajusta proporcionalmente.

Definición de variables

combustible         <- as.numeric(datos$Fuel.consumed..drilling.in.gallon.)
longitud_horizontal <- as.numeric(datos$Horizontal.Length)

Limpieza inicial de datos

Elimina los datos vacíos o que figuran como NA. Además, conserva exclusivamente las cifras mayores a cero, descartando cualquier cero o número negativo que carezca de sentido para los cálculos.

TPV_inicial <- data.frame(combustible = combustible, longitud_horizontal = longitud_horizontal)
TPV_inicial <- na.omit(TPV_inicial)
TPV_inicial <- TPV_inicial[TPV_inicial$combustible > 0 & TPV_inicial$longitud_horizontal > 0, ]
total_inicial <- nrow(TPV_inicial)

Total de Dataset

## [1] 12561

Total de valores post-Filtracion

## [1] 1070

Uso de Intercuartil

Calcula los rangos intercuartílicos de ambas variables para establecer los límites estadísticos y filtrar los valores atípicos (outliers), conservando únicamente la información confiable y calculando cuántos registros fueron descartados.

# Calcular límites intercuartílicos globales para Combustible Consumido (X)
q1_c <- quantile(TPV_inicial$combustible, 0.25)
q3_c <- quantile(TPV_inicial$combustible, 0.75)
iqr_c <- q3_c - q1_c

# Calcular límites intercuartílicos globales para Longitud Horizontal (Y)
q1_l <- quantile(TPV_inicial$longitud_horizontal, 0.25)
q3_l <- quantile(TPV_inicial$longitud_horizontal, 0.75)
iqr_l <- q3_l - q1_l

# Aplicar filtro de Outliers IQR a todo el dataset
TPV_sin_outliers <- TPV_inicial %>%
  filter(combustible >= (q1_c - 1.5 * iqr_c) & combustible <= (q3_c + 1.5 * iqr_c)) %>%
  filter(longitud_horizontal >= (q1_l - 1.5 * iqr_l) & longitud_horizontal <= (q3_l + 1.5 * iqr_l))

total_restante_outliers <- nrow(TPV_sin_outliers)
outliers_encontrados <- total_inicial - total_restante_outliers

Uso de Media Aritmetica

Agrupa los registros por cada valor de combustible y calcula el promedio de la longitud horizontal correspondiente, reestructurando la tabla con una nueva numeración y determinando cuántos datos duplicados o consolidados fueron reducidos.

TPV <- TPV_sin_outliers %>%
  group_by(combustible) %>%
  summarise(longitud_horizontal = mean(longitud_horizontal, na.rm = TRUE)) %>%
  ungroup()

row.names(TPV) <- NULL
TPV_final_id <- cbind(Nro = 1:nrow(TPV), TPV)
valores_consolidados_media <- total_restante_outliers - nrow(TPV)

Outliers encontrados por Intercuartil

## [1] 257

Reducción de filas repetidas por Media Aritmética

valores_consolidados_media
## [1] 803

Total de pares de valores

## [1] 10
Tabla N°1. Pares de valores Combustible consumido y Longitud horizontal
Combustible Consumido (galones) Longitud Horizontal (ft)
1 1,000.0 18.5
2 1,500.0 54.9
3 1,700.0 124.0
4 2,100.0 213.1
5 2,500.0 343.2
6 2,700.0 137.8
7 3,000.0 170.1
8 3,500.0 564.3
9 4,000.0 994.6
10 4,300.0 377.0

3. DIAGRAMA DE DISPERSIÓN

GRÁFICA ORIGINAL

plot(datos$Fuel.consumed..drilling.in.gallon., datos$Horizontal.Length,
     pch = 16, 
     col = rgb(0, 0, 0.8), 
     main = "Gráfica Nº1: Diagrama de Dispersión entre el Consumo 
     de Combustible y la Longitud Horizontal de los pozos de gas natural",
     xlab = "Consumo de Combustible (X)",
     ylab = "Longitud Horizontal (Y)")

GRÁFICA POST FILTRACIONES

x <- TPV$combustible
y <- TPV$longitud_horizontal

par(oma = c(1, 1, 1, 1))
plot(x, y, 
     pch = 16, 
     col = "blue", 
     main = "Gráfica Nº2: Diagrama de Dispersión entre el Consumo 
     de Combustible y la Longitud Horizontal de los pozos de gas natural",
     xlab = "Consumo de Combustible (X)",
     ylab = "Longitud Horizontal (Y)")
box(which = "outer", col = "black")

4. CONJETURA DEL MODELO

Debido a la similitud de la nube de puntos conjeturamos con un modelo Polinómico

Tranformacion Polinómica

xcuad <- x^2; xcub <- x^3; xcta <- x^4
regresion_polinomica <- lm(y ~ x + xcuad + xcub + xcta)

Cálculo de Parámetros

beta0 <- regresion_polinomica$coefficients[1] # Intercepto
beta0
## (Intercept) 
##   -3715.715
beta1 <- regresion_polinomica$coefficients[2]
beta1
##        x 
## 7.549303
beta2 <- regresion_polinomica$coefficients[3]
beta2
##        xcuad 
## -0.005200735
beta3 <- regresion_polinomica$coefficients[4]
beta3
##         xcub 
## 1.486144e-06
beta4 <- regresion_polinomica$coefficients[5]
beta4
##          xcta 
## -1.469856e-10
# Generar la gráfica funcional del modelo de grado 4
par(oma = c(1, 1, 1, 1))
plot(x, y, pch = 16, col = "blue",
     main = "Gráfica Nº 3: Comparación de la realidad con el
     modelo polinómico entre  el Consumo del combustible y 
     la Longitud horizontal de los pozos de gas natural",
     xlab = "Consumo de Combustible (X)", ylab = "Longitud Horizontal (Y)")

curve(beta0 + beta1*x + beta2*x^2 + beta3*x^3 + beta4*x^4, 
      from = min(x), to = max(x), add = TRUE, col = "red", lwd = 2)

# Generar el panel de la ecuación matemática de Grado 4
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "") 
eq_text_panel <- paste0(
  " Ecuación Polinómica (Grado 4) \n",
  " Y = β0 + β1*X + β2*X² + β3*X³ + β4*X⁴ \n\n",
  " Y = ", round(beta0, 2), 
  " + (", round(beta1, 4), ")*X",
  " + (", round(beta2, 6), ")*X² \n",
  " + (", round(beta3, 8), ")*X³",
  " + (", round(beta4, 10), ")*X⁴ \n\n",
  " Donde: X = Consumo de Combustible \n Y = Longitud Horizontal"
)

text(x = 1, y = 1,
     labels = eq_text_panel,
     cex = 1.3,      
     col = "blue", 
     font = 2)     
box(which = "outer", col = "black")

5. TEST DE APROBACIÓN Y RESTRICCIONES

CALCULO DE INDICADORES

Coeficiente de Pearson

r <- cor(y, predict(regresion_polinomica))
r*100
## [1] 87.11277
Test de Aprobación del Modelo Polinómico
Indicador Valor
Correlación de Pearson (r) 87.11 %
Tabla 2 de 2

RESTRICCIONES

par(oma = c(1, 1, 1, 1))
plot.new()
plot.window(xlim = c(0, 100), ylim = c(0, 100))

parrafo_1 <- "El modelo se debe limitar estrictamente al 
dominio de los datos observados (1000 ≤ X ≥ 4300) y 
truncarse para garantizar la no negatividad de las 
variables (X ≥ 0, Y ≥  0). Físicamente, se debe 
restringir su uso hasta el punto máximo de 
eficiencia (X  ≤ 3900), evitando extrapolar en 
los extremos donde el polinomio de grado 4 genera 
caídas y valores negativos artificiales ajenos a 
la realidad del pozo."

text(50, 55, parrafo_1, cex = 1.3, font = 3, col = "black")
box(which = "outer", col = "black")

6. CÁLCULO DE PRONÓSTICOS

x0 <- 3500
consumo_esp <- beta0 + beta1*x0 + beta2*x0^2 + beta3*x0^3 + beta4*x0^4
consumo_esp
## (Intercept) 
##    659.2498

7. CONCLUSIÓN

La relación entre el Consumo de Combustible (X) y la Longitud Horizontal (Y) de los pozos de gas natural mediante el modelo de regresión polinómica de Grado 4 cuya ecuación es Y = -3715.71 + (7.5493)* X + (-0.005201)X^2 + (1.49 ℮-06) X^3 + (-1℮-10)* X^4 ,donde el modelo demuestra una alta validez predictiva, respaldada por el Test de Pearson, el cual aprueba la correlación con un 87.11%