# ======= REGRESI??N POTENCIAL: GWP vs ENERG??A =======
# Cargamos las librer??as necesarias para manejo de datos
library(readr)
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
#==============================================================================#
# REGRESI??N POTENCIAL: GWP vs ENERG??A (VERSI??N PARA INFORME) #
#==============================================================================#
# 1. CARGA Y FILTRADO DIRECTO
# Definimos la ruta de trabajo y cargamos el archivo CSV especificando separadores
setwd("C:/Users/HP/Documents/PROYECTO ESTADISTICA/RStudio")
datos <- read.csv("tablap.csv", header = TRUE, dec = ".", sep = ";")
# Limpieza de datos: La regresi??n potencial utiliza logaritmos, por lo cual
# es obligatorio filtrar y conservar solo valores estrictamente mayores a cero.
df <- datos[datos$Total.GWP..with.venting. > 0 & datos$Energy.of.gas > 0, ]
x <- df$Total.GWP..with.venting.
y <- df$Energy.of.gas
# 2. GR??FICA Nro. 1: DIAGRAMA DE DISPERSI??N ORIGINAL
# Representaci??n visual inicial para observar la dispersi??n de los datos sin procesar.
plot(x, y,
main = "Grafica Nro. 1: Distribucion Original de Datos",
xlab = "Total GWP", ylab = "Energy of Gas",
pch = 16, col = "gray70")

# 3. TRANSFORMACI??N Y MODELO
# Linealizamos la relaci??n potencial (y = a * x^b) aplicando logaritmos naturales
# a ambas variables para poder aplicar una regresi??n lineal simple sobre ellas.
x1 <- log(x)
y1 <- log(y)
mod <- lm(y1 ~ x1)
# Extracci??n de par??metros:
# 'a' se obtiene aplicando la funci??n exponencial al intercepto (antilogaritmo).
# 'b' es directamente la pendiente del modelo linealizado.
a <- exp(coef(mod)[1])
b <- coef(mod)[2]
# C??lculo del Coeficiente de Correlaci??n de Pearson (r):
# Se calcula sobre las variables transformadas para medir la fuerza de la asociaci??n.
r <- cor(x1, y1)
# 4. GR??FICA Nro. 2: CURVA DE REGRESI??N POTENCIAL
# Mostramos el ajuste final superponiendo la curva matem??tica sobre los datos reales.
plot(x, y,
main = "Grafica Nro. 2: Ajuste de Curva Potencial",
xlab = "Total GWP", ylab = "Energy of Gas",
pch = 16, col = "skyblue")
# Dibujamos la curva siguiendo la ecuaci??n calculada: y = a * x^b
curve(a * x^b, add = TRUE, col = "red", lwd = 3)

# 5. AN??LISIS DE RESTRICCIONES Y CONCLUSI??N UNIFICADA
# Verificamos si la predicci??n m??xima del modelo excede un margen razonable (20%)
# respecto al valor m??ximo observado, para detectar inconsistencias f??sicas.
y_max_pred <- a * max(x)^b
res_txt <- ifelse(y_max_pred > (max(y) * 1.2),
"existe restriccion fisica en el modelo",
"no existe restriccion fisica aparente")
# Salida de resultados en consola
cat("\n--- RESULTADOS Y CONCLUSION ---\n")
##
## --- RESULTADOS Y CONCLUSION ---
cat("Coeficiente de correlacion (r):", round(r, 4), "\n\n")
## Coeficiente de correlacion (r): -0.896
# Redacci??n de la conclusi??n final integrando los valores obtenidos din??micamente
conclusion_final <- paste0(
"Conclusion: Entre el GWP y la Energia del gas existe una relacion de forma potencial, ",
"donde el modelo matematico es y = ", round(a, 4), " * (x ^ ", round(b, 4), "), ",
"siendo x el GWP y la energia la variable dependiente. Podemos decir que ", res_txt,
" y el grado de asociacion entre las variables transformadas es de r = ", round(r, 4), ", ",
"lo cual valida la precision del ajuste potencial para este conjunto de datos."
)
cat(conclusion_final, "\n")
## Conclusion: Entre el GWP y la Energia del gas existe una relacion de forma potencial, donde el modelo matematico es y = 2237685889.9444 * (x ^ -1.0698), siendo x el GWP y la energia la variable dependiente. Podemos decir que no existe restriccion fisica aparente y el grado de asociacion entre las variables transformadas es de r = -0.896, lo cual valida la precision del ajuste potencial para este conjunto de datos.