Eficiencia energética de los edificios en Aragón

Estadística Inferencial

Author

Danny Jair Yaguana

Published

February 27, 2025

Consumo energético

Variable cuantitativa continua

Indica la cantidad de energía elecétrica utilizada por cada unidad de superficie del edificio durante un periodo de tiempo (hora y unidad de año).

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

str(datos)
'data.frame':   167479 obs. of  17 variables:
 $ Día_Emisión            : int  29 26 26 12 27 17 13 8 7 16 ...
 $ Mes_Emisión            : int  6 9 2 6 6 6 2 4 4 12 ...
 $ Año_Emisión            : int  2013 2013 2014 2013 2013 2013 2014 2014 2014 2013 ...
 $ Emision_CO2            : num  30.1 46.1 20.3 39.2 103.8 ...
 $ Clasificacion_Emisiones: chr  "E" "E" "D" "E" ...
 $ Demanda_energética     : num  142.3 174.4 94.2 187.7 409 ...
 $ Clasificacion_consumo  : chr  "E" "E" "D" "E" ...
 $ Tipo_edificio          : chr  "Vivienda individual" "Vivienda individual" "Vivienda individual" "Vivienda individual" ...
 $ Estado_edificio        : chr  "Existente" "Existente" "Existente" "Existente" ...
 $ Anio_construccion      : int  1962 1974 1999 1970 1965 1968 1966 1963 2006 1970 ...
 $ Superficie_m2          : num  49 81 72 65 46 ...
 $ Municipio              : chr  "ZARAGOZA" "ZARAGOZA" "ZARAGOZA" "ZARAGOZA" ...
 $ Provincia              : chr  "ZARAGOZA" "ZARAGOZA" "ZARAGOZA" "ZARAGOZA" ...
 $ Coordenadas._x         : num  674904 674063 671872 676129 674807 ...
 $ Coordenadas._y         : num  4612931 4612970 4612102 4613402 4613068 ...
 $ Anio_emision           : int  2013 2013 2014 2013 2013 2013 2014 2014 2014 2013 ...
 $ Dias_hasta_expiracion  : int  3652 3652 3652 3652 3652 3652 3652 3653 3653 3652 ...

Realizamos nuestro análisis en el intervalo de 200 a 1000 KWh/m2*año

consumo<-subset(datos,Demanda_energética<1000 & Demanda_energética>=200,select = c(Demanda_energética))
consumo<-consumo$Demanda_energética

Verificamos el nuevo tamaño muestral

n<-length(consumo)
n
[1] 111915

Estadística Inferencial

Ahora, pasamos de la muestra a la población por medio de modelos de probabilidad, como punto inicial, se realiza la conjetura del modelo.A simple vista, se puede decir que, la distribución de la variable sigue un comportamiento exponencial, por lo tanto, creamos el modelo y lo sobreponemos al histograma:

histograma<-hist(consumo,freq = FALSE,main="Gráfica 13.2.Modelo de probabilidad exponencial",
                 xlab="Consumo enegértico (KWh/m2*año)",ylab="Densidad de probabilidad",col="salmon")

Nota Importante.- para una mejor visualización del modelo sobre la gráfica, restamos el valor mínimo para que la gráfica empiece desde 0, sin embargo, al hacer las estimaciones tendríamos que volver a restar el mínimo para dar valores reales.

consumo<-consumo-min(consumo)

histograma<-hist(consumo,freq = FALSE,main="Gráfica 13.2.1.Modelo de probabilidad exponencial",
                 xlab="Consumo enegértico (KWh/m2*año)",ylab="Densidad de probabilidad",col="salmon")

# Parámetro lambda de la distribución exponencial calculado como el inverso de la media
lambda <-1/mean(consumo)
# Curva de la distribución exponencial
x <- seq(0, max(consumo),0.001)
y <- dexp(x,lambda)

# Dibujar la curva escalada
lines(x, y, col = "skyblue3", lwd=3)

Entonces, se observa el modelo, para comprobar la correlación entre la frecuencia observada (muestra) y la frecuencia esperada (población), se realizan los test de Pearson y de Chi-cuadrado que son muy eficácez al momento de evaluar un modelo.

#Frecuencia simple observada
Fo<-histograma$counts
Fo
 [1] 33703 29495 19033 12195  6918  3813  2230  1350  1686   484   389   227
[13]   176    89    80    47
#Frecuencia simple esperada
P<-c(0)
for (i in 1:16) 
{P[i] <-(pexp(histograma$breaks[i+1],lambda)-
           pexp(histograma$breaks[i],lambda))}
Fe<-P*length(consumo)
sum(Fe)
[1] 111812.8

Test de Pearson

Mide el grado de correlación entre la frecuencia observada y la frecuencia esperada de manera lineal.

plot(Fo,Fe, main="Gráfica 13.2.2.Correlación de las frecuencias del modelo exponencial",col="skyblue3",xlab = "Frecuencia Observada",ylab="Frecuencia Esperada")

Correlación<-cor(Fo,Fe)*100
Correlación
[1] 98.41595

Test de Chi-Cuadrado

El test de Chi-Cuadrado utiliza dos parámetro: grados de libertad (se refiere al número de valores libres de variar dentro de intervalos de la variable, (k-1), y nivel de significancia (probabilidad de cometer un error, valores de 0.05,0.1,0.15)

  • Para validar el modelo, se compara el valor de chi-cuadrado calculado con el umbral de aceptación de chi-cuadrado correspondiente a los grados de libertad y el nivel de significancia deseado.

  • Si el valor de chi-cuadrado calculado es mayor que el umbral de aceptación, se rechaza el modelo, indicando que hay una diferencia significativa.

#Grados de libertad
grados_libertad <- length(histograma$counts)-1
grados_libertad
[1] 15
# Nivel de significancia
nivel_significancia <- 0.05


#Frecuencia Observada porcentual
Fo<-(histograma$counts/n)*100
Fo
 [1] 30.11481928 26.35482286 17.00665684 10.89666265  6.18147701  3.40704999
 [7]  1.99258366  1.20627262  1.50650047  0.43247107  0.34758522  0.20283251
[13]  0.15726221  0.07952464  0.07148282  0.04199616
sum(Fo)
[1] 100
#Frecuencia esperada
Fe<-P*100
Fe
 [1] 35.42830793 22.87665790 14.77184510  9.53843033  6.15912586  3.97705178
 [7]  2.56804963  1.65823310  1.07074917  0.69140086  0.44644923  0.28827982
[13]  0.18614716  0.12019837  0.07761412  0.05011675
sum(Fe)
[1] 99.90866
x2<-sum((Fe-Fo)^2/Fe)
x2
[1] 2.53272
# Calcular el umbral de aceptación
umbral_aceptacion <- qchisq(1 - nivel_significancia, grados_libertad)
umbral_aceptacion
[1] 24.99579
x2<umbral_aceptacion
[1] TRUE

Resumen de test de bondad

Variable<-c("Consumo energético KWh/m2*año")
tabla_resumen<-data.frame(Variable,round(Correlación,2),round(x2,2),round(umbral_aceptacion,2))
colnames(tabla_resumen)<-c("Variable","Test Pearson (%)","Chi Cuadrado","Umbral de aceptación")
library(knitr)
Warning: package 'knitr' was built under R version 4.4.2
kable(tabla_resumen, format = "markdown", caption = "Tabla 1.Resumen de test de bondad al modelo de probabilidad")
Tabla 1.Resumen de test de bondad al modelo de probabilidad
Variable Test Pearson (%) Chi Cuadrado Umbral de aceptación
Consumo energético KWh/m2*año 98.42 2.53 25

Cálculo de probabilidades

  • ¿Cuál es la probabilidad de que, al seleccionar cualquier edificio de Aragón, su consumo energético se encuentre entre 450 KWh/m2*año y 500 KWh/m2 año?
probabilidad_500_450<-pexp(500-200,lambda)-
  pexp(450-200,lambda)
probabilidad_500_450*100
[1] 3.977052
plot(x, dexp(x, lambda), col = "skyblue3", lwd = 2, xlim = c(0,400),main="Gráfica 13.2.3. Cálculo de probabilidades",ylab="Densidad de probabilidad",xlab="Consumo energético")
# Definir el rango de la sección que quieres pintar
x_section <- seq(250, 300, by = 0.1)
y_section <- dexp(x_section, lambda)
# Pintar la sección de la curva
lines(x_section, y_section, col = "red", lwd = 2)
# Pintar el área debajo de la línea roja
polygon(c(x_section, rev(x_section)), c(y_section, rep(0, length(y_section))), col = rgb(1, 0, 0, 0.6))
# Añadir leyenda
legend("topright", legend = c("Modelo", "Área de Probabilidad"), col = c("skyblue3", "red"), lwd = 2, pch = c(NA, 15))

Teorema de límite central

El teorema de límite central nos indica que, aunque las variables individuales no sigan una distribución normal, la distribución de las medias aritméticas de n conjuntos muestrales es normal, y por lo tanto, podemos obtener la media poblacional mediante intervalos de confianza, con tres postulados principales:

Donde, x es la media aritmética muestral y e es el margen de error (desviación estándar de la media poblacional)

x<-mean(consumo)
x
[1] 114.3134
sigma<-sd(consumo)
sigma
[1] 103.8825
#P(x-2e<u<x+2e)=95%
e<-sigma/sqrt(n)
e
[1] 0.3105262
li<-x-2*e
li
[1] 113.6923
ls<-x+2*e
ls
[1] 114.9344
tabla_media<-data.frame(round(li,2),Variable,round(ls,2),e)
colnames(tabla_media)<-c("Limite superior","Media poblacional","Límite superior", "Desviación estándar poblacional")
library(knitr)
kable(tabla_media, format = "markdown", caption = "Tabla 2. media poblacional")
Tabla 2. media poblacional
Limite superior Media poblacional Límite superior Desviación estándar poblacional
113.69 Consumo energético KWh/m2*año 114.93 0.3105262

Conclusiones

El consumo energético de los edificios en Aragón, entre 200 y 1000 KWh/m2*año sigue un modelo de probabilidad exponencial aprobando el test de Pearson, de esta manera, logramos calcular probabilidades, como por ejemplo, que al seleccionar aleatoriamente un edificio en la Comunidad Autónoma de Aragón la probabilidad de que su consumo energético sea de 450 KWh/m2año y 500 KWh/m2año es del 3.97%, y, mediante el teorema de límite central, sabemos que, su media aritmética poblacional se encuentra entre 313.69 (KWh/m2año) y 314.93 (KWh/m2año) con una confianza del 95%.