Eficiencia energética de los edificios en Aragón

Estadística Inferencial

Author

Danny Jair Yaguana

Published

February 27, 2025

Superficie (m2)

Variable cuantitativa continua

Se refiere al espacio ocupado en el plano terrestre bidimensional del edificio.

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 ...
area_200 <- data.frame(subset(datos, Superficie_m2 <=200, select = c(Superficie_m2)))
area<-area_200$Superficie_m2

Verificamos el nuevo tamaño muestral

n<-length(area)
n
[1] 132938

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 lognormal, por lo tanto, creamos el modelo y lo sobreponemos al histograma:

n<-length(area)
n
[1] 132938
histograma<-hist(area,freq = FALSE,main="Gráfica 2.Modelo de probabilidad lognormal de superficie (m2)
                 de los edificios en Áragon",
                 xlab="Superficie m2",ylab="Densidad de probabilidad",col="salmon")

Conjeturamos el modelo

histograma<-hist(area,freq = FALSE,main="Gráfica 2.1.Modelo de probabilidad lognormal de superficie (m2)
                 de los edificios en Áragon",
                 xlab="Superficie m2",ylab="Densidad de probabilidad",col="salmon")
h<-length(histograma$counts)

Logarea<-log(area)
ulog<-mean(Logarea)
sigmalog<-sd(Logarea)

x<-seq(min(area),max(area),0.01)
curve(dlnorm(x,ulog,sigmalog),type="l",add=TRUE,lwd=4,col="blue3")

Entonces, se observa un buen 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 eficacez al momento de evaluar un modelo.

Fo<-histograma$counts
Fo
 [1]    20   268  1171  4623 12415 19926 23470 18543 15865  9804  6375  4786
[13]  3536  2925  2461  1818  1617  1309  1064   942
P<-c(0)
for (i in 1:h) 
{P[i] <-(plnorm(histograma$breaks[i+1],ulog,sigmalog)-
            plnorm(histograma$breaks[i],ulog,sigmalog))}
Fe<-P*length(area)

Una forma rápida de ver la eficacia del modelo, es comparar el valor del tamaño muestral real y el tamaño muestral obtenido del modelo.

sum(Fe)
[1] 132200.3
n
[1] 132938

Test de Pearson

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

plot(Fo,Fe,main="Gráfica 2.2.Correlación de frecuencias en el modelo lognormal
                 de superficie",xlab="Frecuencia Observada",ylab="Frecuencia esperada",col="blue3")

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

Test de Chi-Cuadrado

El test de Chi-Cuadrado utiliza dos parámetro: grados de libertad (se refiere al numero 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] 19
# Nivel de significancia
nivel_significancia <- 0.05


#Frecuencia Observada porcentual
Fo<-(histograma$counts/n)*100
Fo
 [1]  0.01504461  0.20159774  0.88086176  3.47756097  9.33893996 14.98894221
 [7] 17.65484662 13.94860762 11.93413471  7.37486648  4.79546856  3.60017452
[13]  2.65988656  2.20027381  1.85123892  1.36755480  1.21635650  0.98466955
[19]  0.80037311  0.70860100
sum(Fo)
[1] 100
#Frecuencia esperada
Fe<-P*100
Fe
 [1] 1.308586e-05 3.755461e-02 9.541293e-01 4.587379e+00 9.844939e+00
 [6] 1.367553e+01 1.474768e+01 1.360389e+01 1.134810e+01 8.855384e+00
[11] 6.605329e+00 4.777428e+00 3.383329e+00 2.362154e+00 1.633802e+00
[16] 1.123439e+00 7.699843e-01 5.270231e-01 3.607566e-01 2.472303e-01
sum(Fe)
[1] 99.44506
x2<-sum((Fe-Fo)^2/Fe)
x2
[1] 22.35555
# Calcular el umbral de aceptación
umbral_aceptacion <- qchisq(1 - nivel_significancia, grados_libertad)
umbral_aceptacion
[1] 30.14353
x2<umbral_aceptacion
[1] TRUE

Resumen de test de bondad

Variable<-c("Superficie (m2)")
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 4.Resumen de test de bondad al modelo de probabilidad")
Tabla 4.Resumen de test de bondad al modelo de probabilidad
Variable Test Pearson (%) Chi Cuadrado Umbral de aceptación
Superficie (m2) 98.36 22.36 30.14

Cálculo de probabilidades

  • ¿Cuál es la probabilidad de que, al seleccionar cualquier edificio de Aragón, su area se encuentre entre 48 (m2) y 75.8 (m2)?
probabilidad_48_75.8<-plnorm(75.8,ulog,sigmalog)-
            plnorm(48,ulog,sigmalog)
probabilidad_48_75.8*100
[1] 38.90452
plot(x, dlnorm(x, ulog,sigmalog), col = "skyblue3", lwd = 1, xlim = c(0,200),main="Gráfica 2.3. Cálculo de probabilidades",ylab="Densidad de probabilidad",xlab="Superficie (m2)", xaxt="n")

# Definir el rango de la sección que quieres pintar
x <- seq(75.8, 48,-0.001)
y_section <- dlnorm(x, ulog,sigmalog)

# Pintar la sección de la curva
lines(x, y_section, col = "red", lwd = 2)

# Pintar el área debajo de la línea roja
polygon(c(x, rev(x)), 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))

# Ajustar la escala del eje x a intervalos de 25
axis(1, at = seq(0, 200, by = 25), labels = seq(0, 200, by = 25), las = 2)

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, ses 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 es el margen de error (desviación estandar de la media poblacional)

x<-mean(area)
x
[1] 80.26958
sigma<-sd(area)
sigma
[1] 32.95162
#P(x-2e<u<x+2e)=95%
e<-sigma/sqrt(n)
e
[1] 0.0903758
li<-x-2*e
li
[1] 80.08883
ls<-x+2*e
ls
[1] 80.45033
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 5. media poblacional")
Tabla 5. media poblacional
Limite superior Media poblacional Límite superior Desviación estándar poblacional
80.09 Superficie (m2) 80.45 0.0903758

Conclusiones

La variable superficie (m2) sigue un modelo de probabilidad lognormal aprobando los test de Pearson y Chi-Cuadrado, de esta manera, logramos calcular probabilidades, como por ejemplo, que al seleccionar aleatoriamente un edificio en la Comunidad Autónoma de Aragón la probabilidda de que su superficie este entre 48 (m2) y 75.8 (m2) es del 38.91%, y, mediante el teorema de límite central, sabemos que, su media aritmética poblacional se encuentra entre 80.09 (m2) y 80.45 (m2) con una confianza del 95%