# ==========================================================
# 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)
## Warning: package 'gt' was built under R version 4.5.3
# Evitar la notación científica
options(scipen = 999)

# Configuración de directorio y carga de archivo
setwd("C:/Users/HP/Documents/PROYECTO ESTADISTICA/RStudio")
datos_completos <- read.csv("tablap.csv", header = TRUE, dec = ",", sep = ";")

# --- MUESTREO: TRABAJAR CON EL 2% DE LOS DATOS ---
set.seed(123) 
datos <- datos_completos %>% sample_frac(0.05)

cat("Tamaño total del dataset:", nrow(datos_completos), "filas.\n")
## Tamaño total del dataset: 12561 filas.
cat("Muestra utilizada (2%):", nrow(datos), "filas.\n")
## Muestra utilizada (2%): 628 filas.
# ==========================================================
# 2. TABLA PARES DE VALORES
# ==========================================================
# Extraer variables y asegurar formato numérico (escalado /100)
impacto_pad <- as.numeric(datos$Impact.concrete.production..pad.) / 100
gas_prod    <- as.numeric(datos$Total.gas.production.by.2023) / 100

# Crear TPV
TPV <- data.frame(impacto_pad = impacto_pad, gas_prod = gas_prod)

# Limpieza de datos: Omitir NA, Negativos y Ceros
TPV <- na.omit(TPV)
TPV <- TPV[TPV$impacto_pad > 0 & TPV$gas_prod > 0, ]

# Ordenar la tabla por la variable independiente
TPV <- TPV[order(TPV$impacto_pad), ]

# Definición de variables finales
x <- TPV$impacto_pad # Variable independiente
y <- TPV$gas_prod    # Variable dependiente

# ==========================================================
# 3. DIAGRAMA DE DISPERSIÓN
# ==========================================================
plot(x, y,
     pch = 16,
     col = "blue",
     main = "Gráfica N°1: Diagrama de dispersión entre Impacto Pad \n y Producción de Gas",
     xlab = "Impact concrete production pad / 100",
     ylab = "Total gas production / 100")

# ==========================================================
# 4. CONJETURA DEL MODELO
# ==========================================================
# Cálculo de parámetros lineales
regresion_lineal <- lm(y ~ x)
a_intercepto <- coef(regresion_lineal)[1]
b_pendiente  <- coef(regresion_lineal)[2]

# Gráfica comparativa con la recta de regresión
plot(x, y,
     pch = 16,
     col = "blue",
     main = "Gráfica N°2: Comparación de la realidad con el modelo lineal",
     xlab = "Impact concrete production pad / 100",
     ylab = "Total gas production / 100")

abline(regresion_lineal, col = "red", lwd = 2)

# Mostrar Ecuación Lineal
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")
eq_text <- paste0("Ecuación lineal\n Y = bx + a\n Y = ", 
                  round(b_pendiente, 4), "x + ", round(a_intercepto, 4))
text(x = 1, y = 1, labels = eq_text, cex = 2, col = "blue", font = 6)

# ==========================================================
# 5. TEST DE APROBACIÓN Y RESTRICCIONES
# ==========================================================
# Test de Pearson
r <- cor(x, y)
cat("Test de Pearson (r*100):", round(r * 100, 2), "%\n")
## Test de Pearson (r*100): 85.43 %
# Coeficiente de determinación (R^2)
r2 <- r^2
cat("Coeficiente de determinación (R2*100):", round(r2 * 100, 2), "%\n")
## Coeficiente de determinación (R2*100): 72.98 %
# Restricciones
cat("\nRESTRICCIONES:\n")
## 
## RESTRICCIONES:
cat("Existe restricción física: la producción de gas no puede ser negativa.")
## Existe restricción física: la producción de gas no puede ser negativa.
if(a_intercepto < 0) {
  cat("\nEl modelo sugiere valores negativos para pads muy pequeños (cerca de x=0).")
}

# ==========================================================
# 6. CÁLCULO DE PRONÓSTICOS
# ==========================================================
x_test <- round(mean(x), 2)
G_Esp <- (b_pendiente * x_test) + a_intercepto

plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")
text(x = 1, y = 1,
     labels = paste0("¿Qué producción de gas se espera\n para un impacto de pad de ", x_test, "?\n\n R = ", round(G_Esp, 4)),
     cex = 2, col = "blue", font = 6)

# ==========================================================
# 7. CONCLUSIÓN
# ==========================================================
cat("\n--- CONCLUSIÓN ---\n")
## 
## --- CONCLUSIÓN ---
cat(paste0("Entre el impacto y la producción de gas existe una relación tipo lineal "))
## Entre el impacto y la producción de gas existe una relación tipo lineal
cat(paste0("representada por el modelo f(x) = ", round(b_pendiente, 4), "x + ", round(a_intercepto, 4), ". "))
## representada por el modelo f(x) = 0.7809x + 54.4352.
cat(paste0("La variabilidad de X influye en un ", round(r2 * 100, 2), "% sobre la producción de gas. "))
## La variabilidad de X influye en un 72.98% sobre la producción de gas.
cat(paste0("Ejemplo: Para un pad de ", x_test, " unidades, se espera una producción de ", round(G_Esp, 2), "."))
## Ejemplo: Para un pad de 379.66 unidades, se espera una producción de 350.92.