# ==========================================================
# 1. CARGA DE LIBRERÍAS Y DATOS
# ==========================================================
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(knitr)
library(gt)
# Configuración de directorio y carga de archivo
setwd("C:/Users/HP/Documents/PROYECTO ESTADISTICA/RStudio")
datos <- read.csv("tablap.csv", header = TRUE, sep = ";", dec = ",")
# ==========================================================
# 2. TABLA PARES DE VALORES
# ==========================================================
# Extraer variables y asegurar formato numérico
profundidad <- as.numeric(datos$Vertical.depth.of.well)
produccion <- as.numeric(datos$Total.gas.production.by.2023)
# Crear TPV y limpiar datos (Omitir NA, Ceros y Negativos)
TPV <- data.frame(profundidad = profundidad, produccion = produccion)
TPV <- na.omit(TPV)
TPV <- TPV[TPV$profundidad > 0 & TPV$produccion > 0, ]
# Ordenar la tabla por profundidad
TPV <- TPV[order(TPV$profundidad), ]
# --- RESETEAR NUMERACIÓN DE FILAS ---
row.names(TPV) <- NULL
# --- MOSTRAR TABLA (Primeros 20 registros) ---
cat("TABLA DE PARES DE VALORES (Vista previa):\n")
## TABLA DE PARES DE VALORES (Vista previa):
print(head(TPV, 20))
## profundidad produccion
## 1 2209 42633
## 2 2360 72314
## 3 2634 100773
## 4 2760 60378
## 5 2780 191668
## 6 2788 207041
## 7 2795 163134
## 8 2842 117873
## 9 2870 235741
## 10 2880 144451
## 11 2894 260381
## 12 2910 95627
## 13 2936 209400
## 14 2937 233491
## 15 2961 93692
## 16 2964 31559
## 17 2971 97053
## 18 2973 283745
## 19 2991 381001
## 20 3012 50227
# Definición de variables finales para el modelo (100% de datos)
x <- TPV$profundidad
y <- TPV$produccion
# Selección aleatoria del 50% solo para representación visual
set.seed(123)
indice_visual <- sample(1:nrow(TPV), nrow(TPV) / 10)
# ==========================================================
# 3. DIAGRAMA DE DISPERSIÓN (VISTA 50%)
# ==========================================================
plot(x[indice_visual], y[indice_visual],
pch = 16,
col = "blue",
main = "Gráfica N°1: Diagrama de dispersión entre profundidad \n y producción total de gas",
xlab = "Profundidad vertical del pozo",
ylab = "Producción total de gas (2023)")

# ==========================================================
# 4. CONJETURA DEL MODELO (POTENCIAL)
# ==========================================================
# Transformación logarítmica para linealizar el modelo potencial
x1 <- log(x)
y1 <- log(y)
# Cálculo de parámetros sobre el 100% de los datos
regresion_Potencial <- lm(y1 ~ x1)
beta0 <- coef(regresion_Potencial)[1]
beta1 <- coef(regresion_Potencial)[2]
a <- exp(beta0) # Parámetro 'a'
b <- beta1 # Parámetro 'b' (exponente)
# Graficar comparación realidad vs modelo (Puntos al 50%)
plot(x[indice_visual], y[indice_visual],
pch = 16,
col = "blue",
main = "Gráfica N°2: Comparación de la realidad con el modelo potencial",
xlab = "Profundidad vertical",
ylab = "Producción de gas")
# Añadir curva del modelo
curve(a * x^b, from = min(x), to = max(x), add = TRUE, col = "red", lwd = 2)

# Mostrar Ecuación en pantalla
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")
eq <- paste0("Ecuación Potencial\n",
"Y = a * x^b\n",
"Y = ", round(a, 3), " * x^", round(b, 2))
text(1, 1, labels = eq, cex = 1.7, col = "blue", font = 2)

# ==========================================================
# 5. TEST DE APROBACIÓN Y RESTRICCIONES
# ==========================================================
# Test de Pearson (sobre datos transformados)
r <- cor(x1, y1)
cat("\nTest de Pearson (r*100):", round(r * 100, 2), "%\n")
##
## Test de Pearson (r*100): 74.31 %
# Restricciones
cat("\nRESTRICCIONES:\n")
##
## RESTRICCIONES:
cat("El modelo potencial requiere valores estrictamente positivos.
La confiabilidad disminuye si se intenta extrapolar fuera del rango observado.")
## El modelo potencial requiere valores estrictamente positivos.
## La confiabilidad disminuye si se intenta extrapolar fuera del rango observado.
# ==========================================================
# 6. CÁLCULO DE PRONÓSTICOS
# ==========================================================
x_pronostico <- 5000 # Ejemplo de profundidad
T_Esp <- a * (x_pronostico^b)
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")
text(x = 1, y = 1,
labels = paste0("¿Cuál sería la producción si se tiene \n una profundidad de ", x_pronostico, "?\n\n R = ", round(T_Esp, 2)),
cex = 1.5, col = "blue", font = 2)

# ==========================================================
# 7. CONCLUSIÓN
# ==========================================================
cat("\n--- CONCLUSIÓN ---\n")
##
## --- CONCLUSIÓN ---
cat(paste0("Entre la profundidad y la producción de gas existe una relación potencial, "))
## Entre la profundidad y la producción de gas existe una relación potencial,
cat(paste0("representada por el modelo f(x) = ", round(a, 3), " * x^", round(b, 2), ". "))
## representada por el modelo f(x) = 0 * x^4.54.
cat(paste0("Ejemplo: A una profundidad de ", x_pronostico, ", el modelo predice una producción de ", round(T_Esp, 2), "."))
## Ejemplo: A una profundidad de 5000, el modelo predice una producción de 759993.57.