Eficiencia energética de los edificios en Aragón

Modelos de regresión

Author

Danny Jair Yaguana

Published

February 25, 2025

file.exists("~/INGENIERÍA AMBIENTAL/Semestre 3/Estadística y Probabilidad/Proyecto Eficiencia Energética Aragón/1.Datos")
[1] TRUE

Emisiones de CO2 en función de la superficie

Regresión simple polinómica

Ahora conoceremos la correlación existente entre una variable y otra mediante modelos de regresión.

Estadística bivariable

Buscamos el directorio de trabajo y cargamos la tabla de datos o el dataset:

setwd("~/INGENIERÍA AMBIENTAL/Semestre 3/Estadística y Probabilidad/Proyecto Eficiencia Energética Aragón/1.Datos")

library(readr)
datos <- read.csv("Edificios_Reales.csv", sep = ";", dec = ".")

Verificamos que rstudio nos lea correctamente los datos

nuevo <- data.frame(subset(datos, Superficie_m2 <= 1000 & Emision_CO2 <= 200, select = c(Superficie_m2, Emision_CO2)))
str(nuevo)
'data.frame':   146250 obs. of  2 variables:
 $ Superficie_m2: num  49 81 72 65 46 ...
 $ Emision_CO2  : num  30.1 46.1 20.3 39.2 103.8 ...

Depuración realizamos la depuración de los datos para poder observar el conportamiento de las variables en cierto intervalo y poder conjeturar el modelo. En este caso, solo tomamos los valores enteros de la variable demanda energética y tomamos los valores máximos de la variable dependiente para cada valor de la variable independiente. En el último paso, para que se vea de mejor manera la relación de la nube de puntos con el modelo, escogemos un número dado de filas de manera aleatoria para evitar la acumulación de puntos en una sola zona.

# Filtrar para que solo queden valores enteros en la variable independiente
library(dplyr)
Warning: package 'dplyr' was built under R version 4.4.2

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
nuevo <- nuevo %>% 
  filter(Superficie_m2 == as.integer(Superficie_m2))

######################## Obtener el valor máximo de Emision_CO2 por Superficie_m2 #####################################
# Instalar y cargar el paquete dplyr

library(dplyr)

# Usar dplyr para obtener los valores máximos de la variable dependiente para cada valor de la variable independiente
datos_max <- datos %>%
  group_by(Superficie_m2) %>%
  summarise(Emision_CO2_max = max(Emision_CO2, na.rm = TRUE))

# Filtrar los datos para que Superficie_m2 sea un valor entero y obtener las maxs
datos_max <- datos_max %>% 
  filter(Superficie_m2 == as.integer(Superficie_m2))

# Filtrar los datos para la gráfica
nuevo <- data.frame(subset(datos_max, Superficie_m2 <= 500& Emision_CO2_max <= 500 , select = c(Superficie_m2, Emision_CO2_max)))
str(nuevo)
'data.frame':   479 obs. of  2 variables:
 $ Superficie_m2  : num  3 6 7 8 10 11 12 13 14 15 ...
 $ Emision_CO2_max: num  121.6 155.2 63.1 35.1 112.2 ...

Verificamos los nuevos intervalos y el tamaño muestral

min<-min(nuevo$Superficie_m2)
max<-max(nuevo$Superficie_m2)
miny<-min(nuevo$Emision_CO2_max)
maxy<-max(nuevo$Emision_CO2_max)
n<-length(nuevo$Superficie_m2)
tabla_intervalos<-data.frame(min,max,miny,maxy,n)
colnames(tabla_intervalos)<-c("Min. X","Máx. X","Min. Y","Máx.Y","Tamaño muestral")

library(knitr)
Warning: package 'knitr' was built under R version 4.4.2
kable(tabla_intervalos, format = "markdown", caption = "Tabla 1. Resumen de depuración")
Tabla 1. Resumen de depuración
Min. X Máx. X Min. Y Máx.Y Tamaño muestral
3 500 12.43 299 479

1) Identificamos la variable dependiente y la independiente y relizamos diagrama de disperción.

y <- nuevo$Emision_CO2_max
x <- nuevo$Superficie_m2

plot(x,y, main="Gráfica 3.5. Emisiones de CO2 (Kg) en función de la superficie",
     xlab = "Superficie (m2)", ylab="Emisión de CO2 (Kg)", col="salmon", ylim=c(0,300),xlim=c(0,500))

2)Conjeturamos el modelo de regresión en este caso parece ser de tipo polinómico de orden tres, asi que realizamos la regresión para obtener los coeficiente de la ecuación de tipo:

y=a+bx+cx2+dx3

para ello, debemos linealizar las variables para poder hacer una regresión lineal y obtener los coeficientes a,b, c y d.

#Parametros

xcuadrado <- x^2
xcubo <- x^3

regresionpolinomica <-lm(y~x+xcuadrado+xcubo)
regresionpolinomica

Call:
lm(formula = y ~ x + xcuadrado + xcubo)

Coefficients:
(Intercept)            x    xcuadrado        xcubo  
  1.967e+02    5.471e-01   -4.797e-03    6.548e-06  
B0 <- regresionpolinomica$coefficients[1]
B1 <- regresionpolinomica$coefficients[2]
B2 <- regresionpolinomica$coefficients[3]
B3 <- regresionpolinomica$coefficients[4]


#Gráfica de regresión
plot(x,y, main="Gráfica 3.5. Emisiones de CO2 (Kg) en función de la superficie",
     xlab = "Superficie (m2)", ylab="Emisión de CO2 (Kg)", col="salmon", ylim=c(0,300),xlim=c(0,500))
curve(B0+(B1*x)+(B2*x^2)+(B3*x^3),add=TRUE,col="green")

3) Test de Pearson

Ahora debemos saber la correlación entre las variables de manera lineal:

r <- cor(y,x+xcuadrado+xcubo)*100 
r
[1] -65.3415

Tabla de resumen

Variables<-c("Superficie","Emisión de CO2")
Unidades<-c("m2","Kg")
Tipo<-c("Independiente","Dependiente")
Test<-c(" ",round(r,2))
Tabla_resumen<-data.frame(Variables,Unidades,Tipo,Test)

library(knitr)
kable(Tabla_resumen, format = "markdown", caption = "Tabla 2. Resumen de variables")
Tabla 2. Resumen de variables
Variables Unidades Tipo Test
Superficie m2 Independiente
Emisión de CO2 Kg Dependiente -65.34

4)Restricciones: en este tipo de variables, el dominio de ambas es todos los reales positivos unidos al cero, sin embargo, la curva en algún momento cruza el eje horizontal transpasando al eje negativo y, por lo tanto mi modelo ya no funciona para esos casos, así, que encontramos el punto de corte con el eje x.

  library(polynom)
Warning: package 'polynom' was built under R version 4.4.2
# Definir los coeficientes del polinomio
coeficientes <- c(B3, B2, B1, B0)

# Crear el polinomio
polinomio <- polynomial(coeficientes)

# Encontrar las raíces del polinomio
raices <- solve(polinomio)
raices
[1] -0.006967311+0.0000000000i  0.002092906-0.0006308002i
[3]  0.002092906+0.0006308002i

5) Estimaciones: obtenemos la ecuación de la regresión por medio de los coeficientes y calculamos estimaciones.

B0
(Intercept) 
   196.6955 
B1
        x 
0.5471081 
B2
   xcuadrado 
-0.004796556 
B3
       xcubo 
6.548183e-06 

La ecuación de la regresión es:

y=196.70+0.55x-0.005x^2+6.548183*10^(-06) (x^3)

  • ¿CUÁL SERÁ LA EMISIÓN DE CO2 (Kg) DE UN EDICIFIO QUE TIENE UNA SUPERFICIE DE 400 (m2)?
x<-400
y<-B0+B1*x+B2*x^2+B3*x^3
y
(Intercept) 
   67.17353 

Conclusiones

Entre la Superficie en (m2) y las Emisiones de CO2 en (Kg) existe una relación de tipo polinómica inversamente proporcional y su ecuacion es y=196.70+0.55x-0.005x^2+6.548183*10^(-06) (x^3), donde Emisiones de CO2 es mi variable dependiente y la superficie es mi variable independiente aprobando el test de Pearson con un 65,34%, no presenta restricciones en el conjunto de los reales, y entonces, por ejemplo, si tenemos una superficie de 400 m2, tenemos una emisión de 67,17 Kg de CO2.