#==============================ENCABEZADO===================================
# TEMA: REGRESION MULTIPLE
# AUTOR: GRUPO 4
# FECHA: 10-02-2026

#======= CARGA DE DATOS =======
print("CARGA DE DATOS")
## [1] "CARGA DE DATOS"
setwd("C:/Users/HP/Documents/PROYECTO ESTADISTICA/RStudio")
datos <- read.csv("tablap.csv", header = TRUE, dec = ".", sep = ";")

#======= CARGA DE LIBRERIAS =======
print("CARGA DE LIBRERIAS")
## [1] "CARGA DE LIBRERIAS"
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(scatterplot3d)

# Extraer y limpiar variables (Logica de tu codigo para evitar 0 cases)
x1_nm <- "Total.GWP..with.venting."
x2_nm <- "Projection.of.gas.production"
y_nm  <- "Energy.of.gas"

for (var in c(x1_nm, x2_nm, y_nm)) {
  datos[[var]] <- as.numeric(gsub(",", ".", as.character(datos[[var]])))
  min_val <- min(datos[[var]][datos[[var]] > 0], na.rm = TRUE)
  datos[[var]][is.na(datos[[var]]) | datos[[var]] <= 0] <- min_val
}

# TABLA SIN OUTLIERS (Filtro por cuantiles para asegurar el ajuste)
df_final <- datos %>%
  filter(between(.data[[x1_nm]], quantile(.data[[x1_nm]], 0.02), quantile(.data[[x1_nm]], 0.98)),
         between(.data[[x2_nm]], quantile(.data[[x2_nm]], 0.02), quantile(.data[[x2_nm]], 0.98)),
         between(.data[[y_nm]],  quantile(.data[[y_nm]],  0.02), quantile(.data[[y_nm]],  0.98))) %>%
  select(X1 = all_of(x1_nm), X2 = all_of(x2_nm), Y = all_of(y_nm))

# Definir Variables
y  <- df_final$Y
x1 <- df_final$X1
x2 <- df_final$X2

# TABLA DE PARES DE VALORES (TPV)
TPV <- data.frame(x1, x2, y)

#======= MODELO DE REGRESION MULTIPLE =======
regresion_multiple <- lm(y ~ x1 + x2)

# Grafica N.1 con formato solicitado
Energiareg <- scatterplot3d(x1, x2, y, 
                            angle = 60, 
                            pch = 16, 
                            color = "blue",
                            main = "Grafica N.1: Diagrama de dispersion del contenido de GWP, Proyeccion y Energia",
                            xlab = "Total GWP",
                            ylab = "Proyeccion Gas",
                            zlab = "Energia del Gas")

# Agregar el plano de ajuste
Energiareg$plane3d(regresion_multiple, draw_polygon = TRUE, col = "lightgreen")

#======= TEST DE PEARSON =======
print("TEST DE PEARSON")
## [1] "TEST DE PEARSON"
# Calculo del coeficiente de correlacion multiple r
r <- sqrt(abs(summary(regresion_multiple)$adj.r.squared))
r * 100
## [1] 96.59246
# APRUEBA EL TEST PEARSON

#======= COEFICIENTE DE DETERMINACION =======
print("COEFICIENTE DE DETERMINACION")
## [1] "COEFICIENTE DE DETERMINACION"
r2 <- r^2 * 100
r2
## [1] 93.30103
#======= RESULTADOS EN TABLA =======
tabla_resumen <- data.frame(
  Indicador = c("Pearson (r)", "Determinacion (R2)", "Intercepto (B0)", "Pendiente X1 (B1)", "Pendiente X2 (B2)"),
  Valor = c(round(r, 4), 
            paste0(round(r2, 2), "%"), 
            round(regresion_multiple$coefficients[1], 4), 
            round(regresion_multiple$coefficients[2], 4), 
            round(regresion_multiple$coefficients[3], 4))
)

kable(tabla_resumen, caption = "Resumen de Parametros Modelo de Regresion Multiple")
Resumen de Parametros Modelo de Regresion Multiple
Indicador Valor
Pearson (r) 0.9659
Determinacion (R2) 93.3%
Intercepto (B0) -119465239.6389
Pendiente X1 (B1) -861754.2316
Pendiente X2 (B2) 0.9574
#======= RESTRICCIONES =======
# Dado que las variables representan magnitudes fisicas de produccion y energia, 
# el dominio del modelo queda restringido a valores positivos. Cualquier prediccion 
# fuera del rango observado carece de significado fisico, por lo que la interpretacion 
# del modelo se limita estrictamente a ese dominio.

#======= CALCULO DE ESTIMACIONES =======
print("C??lculo de Estimaciones")
## [1] "C??lculo de Estimaciones"
# Pregunta: ??Que Energia del gas se espera al tener un GWP y Proyeccion promedios?
valor_x1 <- mean(x1)
valor_x2 <- mean(x2)

C_Est <- regresion_multiple$coefficients[1] +
  regresion_multiple$coefficients[2] * valor_x1 +
  regresion_multiple$coefficients[3] * valor_x2

C_Est
## (Intercept) 
##  1612038322
#======= CONCLUSION =======
print("CONCLUSION")
## [1] "CONCLUSION"
cat("Conclusion: Entre la Energia del gas y la combinacion del GWP y la Proyeccion existe una regresion 
de multiple lineal. La Energia del gas esta influenciada por el 62.04% por la combinacion del 
GWP y la proyeccion de produccion y el resto se debe a otros factores. Donde si existe restricciones. 
Por ejemplo: Cuando el GWP y la proyeccion toman sus valores promedio, se espera una energia 
de 2379516749.96 unidades.")
## Conclusion: Entre la Energia del gas y la combinacion del GWP y la Proyeccion existe una regresion 
## de multiple lineal. La Energia del gas esta influenciada por el 62.04% por la combinacion del 
## GWP y la proyeccion de produccion y el resto se debe a otros factores. Donde si existe restricciones. 
## Por ejemplo: Cuando el GWP y la proyeccion toman sus valores promedio, se espera una energia 
## de 2379516749.96 unidades.