Eficiencia energética de los edificios en Aragón

Estadística Inferencial

Author

Danny Jair Yaguana

Published

February 27, 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

Variable cuantitativa continua

Valor medible de la cantidad del compuesto gaseoso CO2, liberado a la atmósfera terrestre.

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 ...

Cargamos la variable

CO2_140 <- data.frame(subset(datos, Emision_CO2 <110, select = c(Emision_CO2)))
CO2<-CO2_140$Emision_CO2

Verificamos el nuevo tamaño muestral

n<-length(CO2)
n
[1] 160060

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

n<-length(CO2)
n
[1] 160060
histograma<-hist(CO2,freq = FALSE,main="Gráfica 1.Modelo de probabilidad normal de emisiones
                 de CO2 de los edificios en Áragon",
                 xlab="Emisiones de CO2 (kg)",ylab="Densidad de probabilidad",col="salmon")

Conjeturamos el modelo

histograma<-hist(CO2,freq = FALSE,main="Gráfica 1.1.Modelo de probabilidad normal de emisiones
                 de CO2 de los edificios en Áragon",
                 xlab="Emisiones de CO2 (kg)",ylab="Densidad de probabilidad",col="salmon")
h<-length(histograma$counts)
u<-mean(CO2)
sigma<-sd(CO2)

x<-seq(min(CO2),max(CO2),0.01)
curve(dnorm(x,u,sigma),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 eficaces al momento de evaluar un modelo.

#Frecuencia simple observada
Fo<-histograma$counts
Fo
 [1]   591  1075  2354  3600  5974  9072 11924 14591 15790 15705 15256 14045
[13] 11510 10197  7550  6143  4043  3375  2410  1992  1554  1309
P<-c(0)
for (i in 1:h) 
{P[i] <-(pnorm(histograma$breaks[i+1],u,sigma)-
           pnorm(histograma$breaks[i],u,sigma))}
Fe<-P*length(CO2)

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

sum(Fe)
[1] 158786
n
[1] 160060

Test de Pearson

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

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

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

Test de Chi-Cuadrado

El test de Chi-Cuadrado utiliza dos parámetros: 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] 21
# Nivel de significancia
nivel_significancia <- 0.05


#Frecuencia Observada porcentual
Fo<-(histograma$counts/n)*100
Fo
 [1] 0.3692365 0.6716231 1.4706985 2.2491566 3.7323504 5.6678745 7.4497064
 [8] 9.1159565 9.8650506 9.8119455 9.5314257 8.7748344 7.1910534 6.3707360
[15] 4.7169811 3.8379358 2.5259278 2.1085843 1.5056854 1.2445333 0.9708859
[22] 0.8178183
sum(Fo)
[1] 100
#Frecuencia esperada
Fe<-P*100
Fe
 [1] 0.5614238 0.9768094 1.6010700 2.4722517 3.5963110 4.9283812 6.3625918
 [8] 7.7383214 8.8663025 9.5702109 9.7315882 9.3224313 8.4131356 7.1526954
[15] 5.7288123 4.3225726 3.0725760 2.0575260 1.2979862 0.7713945 0.4318812
[22] 0.2277891
sum(Fe)
[1] 99.20406
x2<-sum((Fe-Fo)^2/Fe)
x2
[1] 4.012919
# Calcular el umbral de aceptación
umbral_aceptacion <- qchisq(1 - nivel_significancia, grados_libertad)
umbral_aceptacion
[1] 32.67057
x2<umbral_aceptacion
[1] TRUE

Resumen de test de bondad

Variable<-c("Emisiones de CO2")
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
Emisiones de CO2 97.99 4.01 32.67

Cálculo de probabilidades

  • ¿Cuál es la probabilidad de que, al seleccionar cualquier edificio de Aragón, este tenga una Emisión de CO2 entre 90.8 (Kg) y 109.59 (Kg)?

  • Tomar en cuenta que la muestra está en el rango de 2.30 y 110 Kg de CO2

probabilidad_120.59_139.8<-pnorm(109.59,u,sigma)-
  pnorm(90.8,u,sigma)
probabilidad_120.59_139.8*100
[1] 2.463413
plot(x, dnorm(x, u,sigma), col = "skyblue3", lwd = 1, xlim = c(0,110),main="Gráfica 1.3. Cálculo de probabilidades",ylab="Densidad de probabilidad",xlab="Emisiones de CO2", xaxt="n")

# Definir el rango de la sección que quieres pintar
x_section <- seq(90.8,109.59, 0.001)
y_section <- dnorm(x_section, u,sigma)

# 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))

# Ajustar la escala del eje x a intervalos de 10
axis(1, at = seq(0, 110, by = 10), labels = seq(0, 110, by = 10), 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, 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 poblacional)

x<-mean(CO2)
x
[1] 51.40107
sigma<-sd(CO2)
sigma
[1] 20.41673
#P(x-2e<u<x+2e)=95%
e<-sigma/sqrt(n)
e
[1] 0.05103226
li<-x-2*e
li
[1] 51.299
ls<-x+2*e
ls
[1] 51.50313
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
51.3 Emisiones de CO2 51.5 0.0510323

Conclusiones

La variable Emisiones de CO2 sigue un modelo de probabilidad normal 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 probabilidad de que su emisión este entre 90.8 (Kg) y 109.59 (Kg) de CO2 es del 2.46%, y, mediante el teorema de límite central, sabemos que, su media aritmética poblacional se encuentra entre 51.3 (Kg) y 51.5 (Kg) de CO2 con una confianza del 95%.