# ==========================================================
# 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.