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 y la demanda energética

Regresión múltiple lineal

Ahora conoceremos la correlación existente entre una variable dependiente y otro par de variable independientes mediante modelos de regresión, en este caso, es un plano en las tres dimesiones.

Estadística trivariable

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 <= 5000 & Superficie_m2 >= 1000 & 
                             Emision_CO2 <= 300 & Emision_CO2 >= 0 & Demanda_energética<500, 
                           select = c(Superficie_m2, Emision_CO2,Demanda_energética)))
str(nuevo)
'data.frame':   19317 obs. of  3 variables:
 $ Superficie_m2     : num  1893 1893 1893 1893 1893 ...
 $ Emision_CO2       : num  35.7 35.7 35.7 35.7 35.7 35.7 35.7 35.7 35.7 35.7 ...
 $ Demanda_energética: num  190 190 190 190 190 ...

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 independiente y tomamos los valores medios 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.

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 la media de Emision_CO2 por Superficie_m2 #####################################
# Instalar y cargar el paquete dplyr

library(dplyr)

# Usar dplyr para obtener la media de la variable dependiente para cada valor de la variable independiente
datos_media <- nuevo %>%
  group_by(Superficie_m2, Demanda_energética) %>% # Se agrega Anio_construccion
  summarise(Emision_CO2_media = mean(Emision_CO2, na.rm = TRUE))
`summarise()` has grouped output by 'Superficie_m2'. You can override using the
`.groups` argument.
# Filtrar los datos para que Superficie_m2 sea un valor entero y obtener las medias
nuevo <- datos_media %>% 
  filter(Superficie_m2 == as.integer(Superficie_m2))

Verificamos los nuevos intervalos y el tamaño muestral

min<-min(nuevo$Superficie_m2)
max<-max(nuevo$Superficie_m2)
minx<-min(nuevo$Demanda_energética)
maxx<-max(nuevo$Demanda_energética)
miny<-min(nuevo$Emision_CO2_media)
maxy<-max(nuevo$Emision_CO2_media)


n<-length(nuevo$Superficie_m2)
tabla_intervalos<-data.frame(min,max,minx,maxx,miny,maxy,n)
colnames(tabla_intervalos)<-c("Min. X","Máx. X","Min. X2","Máx. X2","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. X2 Máx. X2 Min. Y Máx.Y Tamaño muestral
1000 4980 3.62 493.8 2.72 231.5 871

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

y <- nuevo$Emision_CO2_media
x1 <- nuevo$Superficie_m2
x2 <- nuevo$Demanda_energética

length(y)
[1] 871
#4. sobreponer el modelo con la realidad
library(scatterplot3d)
regxyz <- scatterplot3d::scatterplot3d(x1,x2,y,main="Gráfica 3.6. Emisiones de CO2 en relación a la Superficie 
                                       y la demanda energética",
                                       xlab="Superficie (m2)",
                                       ylab="Demanda energética (KWh/m2*año)",
                                       zlab="Emisión de CO2 (kg)",angle=310,color ="red",
                                       zlim=c(0,150))

2)Conjeturamos el modelo de regresión en este caso es un plano en las tres dimensiones, asi que realizamos la regresión para obtener los coeficiente de la ecuación de tipo:

y=ax1+bx2+c

#Parametros
y <- nuevo$Emision_CO2_media
x1 <- nuevo$Superficie_m2
x2 <- nuevo$Demanda_energética

#3.ajuste del modelo y cálculo de parámetros

regresionmultiple <- lm(y~x1+x2)

#4. sobreponer el modelo con la realidad
library(scatterplot3d)
regxyz <- scatterplot3d::scatterplot3d(x1,x2,y,main="Gráfica 3.6. Emisiones de CO2 en relación a la Superficie 
                                       y la demanda energética",
                                       xlab="Superficie (m2)",
                                       ylab="Demanda energética (KWh/m2*año)",
                                       zlab="Emisión de CO2 (kg)",angle=310,color ="red",
                                       zlim=c(0,150))

#4. sobreponer el modelo con la realidad
regxyz$plane3d(regresionmultiple) 

library(scatterplot3d)
regxyz <- scatterplot3d::scatterplot3d(x1,x2,y,main="Gráfica 3.6. Emisiones de CO2 en relación a la Superficie 
                                       y la demanda energética",
                                       xlab="Superficie (m2)",
                                       ylab="Demanda energética (KWh/m2*año)",
                                       zlab="Emisión de CO2 (kg)",angle=210,color ="red",
                                       zlim=c(0,150))

#4. sobreponer el modelo con la realidad
regxyz$plane3d(regresionmultiple)

library(scatterplot3d)
regxyz <- scatterplot3d::scatterplot3d(x1,x2,y,main="Gráfica 3.6. Emisiones de CO2 en relación a la Superficie 
y la demanda energética",
                                       xlab="Superficie (m2)",
                                       ylab="Demanda energética (KWh/m2*año)",
                                       zlab="Emisión de CO2 (kg)",angle=350,color ="red",
                                       zlim=c(0,150))

#4. sobreponer el modelo con la realidad
regxyz$plane3d(regresionmultiple)

3) Test de Pearson

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

r <- cor(y,x1+x2)*100
r
[1] 1.78733

Como el valor nos da muy bajo, y en la gráfica 3.6. vemos que es una buena regresión para la nube de puntos, entonces analizamos la correlación de las variables por separado:

r1 <- cor(y,x1)*100
r1
[1] -6.421967
r_2<-cor(y,x1)^2
r_2
[1] 0.004124166
r2 <- cor(y,x2)*100
r2
[1] 87.6354
r_3<-cor(y,x2)^2*100
r_3
[1] 76.79964

Tabla de resumen

Variables<-c("Superficie", "Consumo Energético","Emisión de CO2")
Unidades<-c("m2","Kwh/m2*año","Kg")
Tipo<-c("Independiente","Independiente","Dependiente")
Test<-c(round(r1,2),round(r2,2),"  ")
Correlación<-c(round(r_2,2),round(r_3,2),"  ")
Tabla_resumen<-data.frame(Variables,Unidades,Tipo,Test,Correlación)

library(knitr)
kable(Tabla_resumen, format = "markdown", caption = "Tabla 2. Resumen de variables")
Tabla 2. Resumen de variables
Variables Unidades Tipo Test Correlación
Superficie m2 Independiente -6.42 0
Consumo Energético Kwh/m2*año Independiente 87.64 76.8
Emisión de CO2 Kg Dependiente

4)Restricciones: en este tipo de variables, el dominio de ambas es todos los reales positivos unidos al cero, por lo que no presenta restricciones.

Restricciones=0

5)Cálculo de probabilidades

a<-regresionmultiple$coefficients[2]
a
           x1 
-0.0001005316 
b<-regresionmultiple$coefficients[3]
b
       x2 
0.2112165 
c<-regresionmultiple$coefficients[1]
c
(Intercept) 
  0.6609215 

La ecuación de la regresión es:

y=0.66-0.0001005x1+0.2112165x2

  • ¿CUÁL SERÁ LA EMISIÓN DE CO2 (Kg) DE UN EDICIFIO QUE TIENE UNA SUPERFICIE DE 256.46(m2) y tiene un consumo energético de 112.23(KWh/m2*año)?
x1<-256.46
x2<-112.23
y<-a*x1+b*x2+c
y
      x1 
24.33997 

Conclusiones

Entre la Superficie en (m2), el Consumo Energético en (KWh/m2 año) y las Emisiones de CO2 en (Kg) existe una relación de tipo múltiple lineal y su ecuacion es y=0.66-0.0001005x1+0.2112165x2, donde Emisiones de CO2 es mi variable dependiente, la superficie y el consumo energético son mis variables independientes, no presenta restricciones en el conjunto de los reales, y entonces, por ejemplo, si tenemos una superficie de 256.46 m2 y un consumo energético de 112.23(KWh/m2*año), tenemos una emisión de 24.34 Kg de CO2.