# 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 = ",")
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 | ||
| N° | 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 |
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")
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")
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")
x0 <- 3500
consumo_esp <- beta0 + beta1*x0 + beta2*x0^2 + beta3*x0^3 + beta4*x0^4
consumo_esp
## (Intercept)
## 659.2498
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%