Eficiencia energética de los edificios en Aragón

Estadística descriptiva

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

Día de emisión

Variable cuantitativa discreta

Periodo de tiempo representado en días que corresponde al momento de emisión.

Estadística descriptiva

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

Por la gran cantidad de datos, es mejor verificar el comportamiento general de la variable para saber si toca realizar el analisis estadístico en un cierto intervalo. Es así, que se crea un historama:

dia_emision0<-datos$Día_Emisión
n<-length(dia_emision0)
n
[1] 167479

Como tal, vemos que la variable tiene demasiados valores, entonces se decide agrupar por semana (intervalos).

datos$Grupo <- 0 
for (i in 1:length(datos$Día_Emisión)) 
{ if (datos$Día_Emisión[i] <= 7) { datos$Grupo[i] <- "01-07" }
  else if (datos$Día_Emisión[i] >= 8 & datos$Día_Emisión[i] <= 14) 
  { datos$Grupo[i] <- "08-14" } 
  else if (datos$Día_Emisión[i] >= 15 & datos$Día_Emisión[i] <= 21) 
  { datos$Grupo[i] <- "15-21" } 
  else if (datos$Día_Emisión[i] >= 22 & datos$Día_Emisión[i] <= 28) 
  { datos$Grupo[i] <- "22-27" } 
  else if (datos$Día_Emisión[i] >= 29) 
  { datos$Grupo[i] <- "29-31" } } 

Tabla de frecuencias

Realizamos la tabla con las frecuencias simples y las acumuladas:

dia_emision<-datos$Grupo
tabla_dia<-data.frame(table(dia_emision))
ni<-tabla_dia$Freq
n<-sum(ni)
n
[1] 167479
hi<- (ni/n)*100
Ni<- cumsum(ni)
Ni_dsc <- rev(cumsum(rev(ni)))
Hi<- cumsum(hi)
Hi_dsc <- rev(cumsum(rev(hi)))
Número<-1:length(ni)

TDF_dia_emision<-data.frame(Número,tabla_dia,round(hi,2),Ni,round(Hi,2),Ni_dsc,round(Hi_dsc,2))
colnames(TDF_dia_emision)<-c("N°","Intervalo","ni","hi (%)","Ni","Hi (%)","Ni_dsc","Hi_dsc (%)")

library(knitr)
Warning: package 'knitr' was built under R version 4.4.2
kable(TDF_dia_emision, format = "markdown", caption = "Tabla 1. Frecuencias de los valores de día de emisión")
Tabla 1. Frecuencias de los valores de día de emisión
Intervalo ni hi (%) Ni Hi (%) Ni_dsc Hi_dsc (%)
1 01-07 34723 20.73 34723 20.73 167479 100.00
2 08-14 38400 22.93 73123 43.66 132756 79.27
3 15-21 39180 23.39 112303 67.05 94356 56.34
4 22-27 41174 24.58 153477 91.64 55176 32.95
5 29-31 14002 8.36 167479 100.00 14002 8.36

Gráficas

Creamos el histograma con la frecuencia absoluta para visualizar el conteo de ocurrencias de los valores de la variable.

barplot(TDF_dia_emision$ni, space = 0,main = "Gráfica N°7.1.1.-Número de edificios en la
        Comunidad Autónoma de Aragón por días de emisión",ylab="Cantidad",xlab="Día de emisión",
        col = "skyblue",names.arg = TDF_dia_emision$Intervalo,axis.lty = 1,cex.names = 0.8,
        las=1,cex.axis = 0.7)

barplot(TDF_dia_emision$ni, space = 0,main = "Gráfica N°7.1.2.-Número de edificios en la
        Comunidad Autónoma de Aragón por días de emisión",ylab="Cantidad",xlab="Día de Emisión",
        col = "skyblue",names.arg = TDF_dia_emision$Intervalo,axis.lty = 1,cex.names = 0.8,las=1,cex.axis = 0.7,
        ylim = c(0,n))

Ahora, creamos el histograma con la frecuencia relativa para visualizar el porcentaje de ocurrencias de los valores.

barplot(TDF_dia_emision$`hi (%)`, space = 0,main = "Gráfica N°7.1.3.-Porcentaje de edificios por
        días de emisión en la Comunidad Autónoma de Aragón",ylab="Porcentaje (%)",xlab="Día de Emisión",
        col = "red3",names.arg = TDF_dia_emision$Intervalo,axis.lty = 1,cex.names = 0.8,las=1,cex.axis = 0.7)

barplot(TDF_dia_emision$`hi (%)`, space = 0,main = "Gráfica N°7.1.4.-Porcentaje de edificios por
        días de emisión en la Comunidad Autónoma de Aragón",ylab="Porcentaje (%)",xlab="Día de Emisión",
        col = "red3",names.arg = TDF_dia_emision$Intervalo,axis.lty = 1,cex.names = 0.8,las=1,cex.axis = 0.7,
        ylim = c(0,100))

Realizamos el diagrama de sector circular:

colores <- c(topo.colors(5))
etiqueta<- paste(TDF_dia_emision$`hi (%)`,"%",sep="")
pie(TDF_dia_emision$`hi (%)`,main = "Gráfica 7.1.5.-Porcentaje de edificios por día de emisión
    en la comunidad Autónoma de Aragón",
    labels = etiqueta,col = colores,cex=1)
legend("bottomright",legend = TDF_dia_emision$Intervalo,fill = colores,cex = 0.8,title = "Leyenda")

Se crea el diagrama de caja que nos ayuda con la representación de los cuartiles de la variable, donde el cuartil 2 representa la mediana de la variable. Además, nos representa los valores atípicos (outliers) en nuestro intervalo de estudio.

caja<-boxplot(datos$Día_Emisión, horizontal = T, col = "salmon", 
        main= "Gráfica N°7.1.6.-Distribución de los edificios según su
        día de emisión en la Comunidad Autónoma de Aragón",xlab="Día de Emisión")

Adicionalmente, se crean las ojivas que nos representa las frecuencias acumuladas y, de igual manera, el intercepto de las gráficas de la ojiva ascendente y la descendente representa la mediana en el eje horizontal.

tabla<-data.frame(table(dia_emision0))
ni<-tabla$Freq
n<-sum(ni)
n
[1] 167479
hi<- (ni/n)*100
Ni<- cumsum(ni)
Ni_dsc <- rev(cumsum(rev(ni)))
Hi<- cumsum(hi)
Hi_dsc <- rev(cumsum(rev(hi)))

x<-1:5
plot(Ni, type = "b",col="green3",ylab = "Cantidad",
     xlab="Día de emisión", main= "Gráfica N°7.1.7.-Distribución de los edificios 
     de la Comunidad Autónoma de Aragón según su día de emisión")
lines(Ni_dsc,add=TRUE,type = "b",col="red3")
Warning in plot.xy(xy.coords(x, y), type = type, ...): "add" es un parámetro
gráfico inválido
legend("right", legend = c("Ni ascendente", "Ni descendente"), col = c("green3", "red3"), lty = 1, pch = 0.4,
       cex = 0.8, pt.cex = 1)

plot(Hi, type = "b",col="green3",ylab = "Porcentaje (%)",
     xlab="Día de emisión", main= "Gráfica N°7.1.8.-Distribución de los edificios 
     de la Comunidad Autónoma de Aragón según su día de emisión")
lines(Hi_dsc,add=TRUE,type = "b",col="red3")
Warning in plot.xy(xy.coords(x, y), type = type, ...): "add" es un parámetro
gráfico inválido
legend("right", legend = c("Hi ascendente", "Hi descendente"), col = c("green3", "red3"), lty = 1, pch = 0.4,
       cex = 0.8, pt.cex = 1)

Indicadores

Los indicadores estadísticos son valores numéricos que resumen, describen y analizan características de un conjunto de datos. Estos indicadores permiten simplificar y entender grandes volúmenes de información de manera más eficiente. Se utilizan para tomar decisiones informadas.

ri<-min(dia_emision0)
rs<-max(dia_emision0)
mediana<-median(dia_emision0)
mediana
[1] 16
media_aritmetica<-mean(dia_emision0)
media_aritmetica
[1] 16.22258
desviación_estandar<-sd(dia_emision0)
desviación_estandar
[1] 8.704765
coeficiente_variabilidad <- (desviación_estandar/media_aritmetica) * 100 
coeficiente_variabilidad
[1] 53.65833
library(e1071)
Warning: package 'e1071' was built under R version 4.4.2
coeficiente_asimetria <- skewness(dia_emision0) 
coeficiente_asimetria
[1] -0.05810843
curtosis<-kurtosis(dia_emision0)
curtosis
[1] -1.168891
Variable<-c("Dia de emisión")
# Identificar los valores atípicos 
outliers<-boxplot.stats(dia_emision0)$out 
# Contar los valores atípicos 
num_outliers <- length(outliers) 
num_outliers
[1] 0
minimooutliers<-min(outliers)
Warning in min(outliers): ningún argumento finito para min; retornando Inf
minimooutliers
[1] Inf
max1<-caja$stats[1]
max1
[1] 1
min2<-caja$stats[5]
maximooutliers<-max(outliers)
Warning in max(outliers): ningun argumento finito para max; retornando -Inf
maximooutliers
[1] -Inf
Tabla_indicadores<-data.frame(Variable,ri,rs,round(media_aritmetica,2),mediana,round(desviación_estandar,2), round(coeficiente_variabilidad,2), round(coeficiente_asimetria,2),round(curtosis,2))
colnames(Tabla_indicadores)<-c("Variable","minimo","máximo","x","Me","s","Cv (%)","As","K")

library(knitr)
kable(Tabla_indicadores, format = "markdown", caption = "Tabla 2. Indicadores estadíticos de la variable Día de emision")
Tabla 2. Indicadores estadíticos de la variable Día de emision
Variable minimo máximo x Me s Cv (%) As K
Dia de emisión 1 31 16.22 16 8.7 53.66 -0.06 -1.17
Tabla_outliers<-data.frame(num_outliers)

colnames(Tabla_outliers)<-c("Outliers")

library(knitr)
kable(Tabla_outliers, format = "markdown", caption = "Tabla 3. Outliers de la variable")
Tabla 3. Outliers de la variable
Outliers
0

Conclusiones

La variable “Día de emisión” esta comprendida en un rango entre el 1 y 31. La media de los días de emisión es 16.22, con una mediana de 16 y una dispersión estándar de 8.7 días, lo que indica una dispersión moderada de los valores. El coeficiente de variación del 53.66 % sugiere una variabilidad relativamente alta en la distribución de los días de emisión. La distribución de los datos es aproximadamente simétrica, con un coeficiente de asimetría de -0.06, y presenta una curtosis de -1.17, lo que indica una distribución más plana en comparación con una distribución normal. En cuanto a los valores atípicos, no se han identificado valores atípicos en la variable “Día de emisión”, lo que sugiere que todas las emisiones registradas siguen un patrón coherente dentro de los meses sin valores extremos.Lo que sugiere que las emisiones de CO₂ se reparten de manera regular en el tiempo sin concentraciones excesivas en días específicos.