file.exists("~/INGENIERÍA AMBIENTAL/Semestre 3/Estadística y Probabilidad/Proyecto Eficiencia Energética Aragón/1.Datos")[1] TRUE
Estadística descriptiva
file.exists("~/INGENIERÍA AMBIENTAL/Semestre 3/Estadística y Probabilidad/Proyecto Eficiencia Energética Aragón/1.Datos")[1] TRUE
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<-datos$Emision_CO2
n<-length(CO2)
n[1] 167479
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 para saber el intervalo donde se agrupan los datos:
Histo_CO2 <-hist(CO2, main = "Gráfica N°12.1.00.-Distribución de frecuencia de las
emisiones de CO2 de los edificios en la Comunidad Autónoma de Aragón",
ylab="Cantidad",xlab="Emisiones de CO2 (kg)",
col="brown")Una mejor visualización de la variable en Aragón:
Imagen 1. Mapa de las emisiones de CO2 en la Comunidad Autónoma de Aragón.
Como tal, vemos que la variable se agrupa en un intervalo dado, entonces obtenemos un subconjunto de la variable para ese intervalo y revisamos el nuevo tamaño muestral.
CO2_5000 <- data.frame(subset(datos, Superficie_m2 <5000, select = c(Superficie_m2)))
CO2<-CO2_5000$Superficie_m2
n<-length(CO2)
n[1] 167450
A continuación, creamos nuevamente un histograma para saber si es necesario analizar otro subconjunto o con que que tenemos es el ideal:
Histo_CO2 <-hist(CO2, main = "Gráfica N°12.1.01.-Distribución de frecuencia de las
emisiones de CO2 de los edificios en la Comunidad Autónoma de Aragón",
ylab="Cantidad",xlab="Emisiones de CO2 (kg)",
col="brown")Como se observa, es necesario una nueva división, en este caso, se a seleccionado el intervalo que comprenden los valores entre 0 y 140 de la variables .
CO2_140 <- data.frame(subset(datos, Superficie_m2 <140, select = c(Superficie_m2)))
CO2<-CO2_140$Superficie_m2Verificamos el nuevo tamaño muestral
n<-length(CO2)
n[1] 123445
Por teoría, solo es recomendable hacer hasta tres divisiones de un conjunto de datos, entonces, procedemos a crear la tabla de frecuencias:
Mediante la ley de Sturges, encontramos el valor total de intervalos que se recomienda para nuestro tamaño muestral:
k <-round(1+3.3*log10(n),0)
k[1] 18
Y encontramos el rango, amplitud, límites de los intervalos, marca de clase, frecuencias y frecuencias acumuladas.
summary(CO2) Min. 1st Qu. Median Mean 3rd Qu. Max.
2.30 56.80 70.00 73.82 88.38 139.99
min<-summary(CO2)[1]
minMin.
2.3
max<-summary(CO2)[6]
max Max.
139.99
R<-max-min
A<-R/k
Li<-seq(min,max-A,by=A)
Ls<-seq(min+A,max,by=A)
Mc<-(Ls+Li)/2
ni <- c(0)
for (i in 1:k) {
if(i==k)
I <- subset(CO2, CO2>=Li[i] & CO2<=Ls[i])
else
I <- subset(CO2, CO2>=Li[i] & CO2<=Ls[i])
ni[i] <- length(I)
}
n<-sum(ni)
hi<- (ni/n)*100
Ni<- cumsum(ni)
Ni_dsc <- rev(cumsum(rev(ni)))
Hi<- cumsum(hi)
Hi_dsc <- rev(cumsum(rev(hi)))
TDF_CO2<-data.frame(Li,Ls,Mc,ni,round(hi,2),Ni,round(Hi,2),Ni_dsc,round(Hi_dsc,2))
options(scipen=999)
colnames(TDF_CO2)<-c("Li","Ls","Marca de Clase","ni","hi (%)","Ni","Hi (%)","Ni_dsc","Hi_dsc (%)")
library(knitr)Warning: package 'knitr' was built under R version 4.4.2
kable(TDF_CO2, format = "markdown", caption = "Tabla 1. Frecuencias")| Li | Ls | Marca de Clase | ni | hi (%) | Ni | Hi (%) | Ni_dsc | Hi_dsc (%) |
|---|---|---|---|---|---|---|---|---|
| 2.300000 | 9.949444 | 6.124722 | 17 | 0.01 | 17 | 0.01 | 123445 | 100.00 |
| 9.949444 | 17.598889 | 13.774167 | 150 | 0.12 | 167 | 0.14 | 123428 | 99.99 |
| 17.598889 | 25.248333 | 21.423611 | 542 | 0.44 | 709 | 0.57 | 123278 | 99.86 |
| 25.248333 | 32.897778 | 29.073056 | 1329 | 1.08 | 2038 | 1.65 | 122736 | 99.43 |
| 32.897778 | 40.547222 | 36.722500 | 4366 | 3.54 | 6404 | 5.19 | 121407 | 98.35 |
| 40.547222 | 48.196667 | 44.371944 | 9097 | 7.37 | 15501 | 12.56 | 117041 | 94.81 |
| 48.196667 | 55.846111 | 52.021389 | 13441 | 10.89 | 28942 | 23.45 | 107944 | 87.44 |
| 55.846111 | 63.495556 | 59.670833 | 17004 | 13.77 | 45946 | 37.22 | 94503 | 76.55 |
| 63.495556 | 71.145000 | 67.320278 | 18009 | 14.59 | 63955 | 51.81 | 77499 | 62.78 |
| 71.145000 | 78.794444 | 74.969722 | 13531 | 10.96 | 77486 | 62.77 | 59490 | 48.19 |
| 78.794444 | 86.443889 | 82.619167 | 12300 | 9.96 | 89786 | 72.73 | 45959 | 37.23 |
| 86.443889 | 94.093333 | 90.268611 | 10709 | 8.68 | 100495 | 81.41 | 33659 | 27.27 |
| 94.093333 | 101.742778 | 97.918056 | 6530 | 5.29 | 107025 | 86.70 | 22950 | 18.59 |
| 101.742778 | 109.392222 | 105.567500 | 4802 | 3.89 | 111827 | 90.59 | 16420 | 13.30 |
| 109.392222 | 117.041667 | 113.216944 | 3940 | 3.19 | 115767 | 93.78 | 11618 | 9.41 |
| 117.041667 | 124.691111 | 120.866389 | 3009 | 2.44 | 118776 | 96.22 | 7678 | 6.22 |
| 124.691111 | 132.340556 | 128.515833 | 2656 | 2.15 | 121432 | 98.37 | 4669 | 3.78 |
| 132.340556 | 139.990000 | 136.165278 | 2013 | 1.63 | 123445 | 100.00 | 2013 | 1.63 |
Como se oberva, la tabla es muy complicada de visualizar por los números decimales, y la cantidad de datos, entonces creamos una nueva tabla simplificada con ayuda del histograma de R.
#Simplificacion (LOCAL PORPORCIONES, MIN Y MAXIMO)
Histo_CO2 <-hist(CO2, main = "Gráfica N°12.1.02.-Distribución de frecuencia de las
emisiones de CO2 de los edificios en la Comunidad Autónoma de Aragón",
ylab="Cantidad",xlab="Emisiones de CO2 (kg)",
col="brown")h<-length(Histo_CO2$counts)
j<-length(Histo_CO2$counts)+1
min_s<- Histo_CO2$breaks[1]
max_s<- Histo_CO2$breaks[j]
R_s<-(max_s+min_s)/2
A_s<-R_s/h
A_s[1] 5
Li_s <- Histo_CO2$breaks[1:h]
Li_s [1] 0 10 20 30 40 50 60 70 80 90 100 110 120 130
Ls_s <-Histo_CO2$breaks[2:j]
Ls_s [1] 10 20 30 40 50 60 70 80 90 100 110 120 130 140
MCs<-Histo_CO2$mids
MCs [1] 5 15 25 35 45 55 65 75 85 95 105 115 125 135
#De la gráfica sacamos ahora la nueva tabla de frecuencias.
ni_s<-Histo_CO2$counts
n<-sum(ni_s)
n[1] 123445
hi<-ni_s/n*100
Ni_s<-cumsum(ni_s)
Hi<-cumsum(hi)
Ni_dsc<-rev(cumsum(rev(ni_s)))
Hi_dsc<-rev(cumsum(rev(hi)))
TDFsimplificado<-data.frame(Li_s,Ls_s,MCs,ni_s,round(hi,2),Ni_s,round(Hi,2),Ni_dsc,round(Hi_dsc,2))
colnames(TDFsimplificado)<-c("Li","Ls","MC","ni","hi (%)","Ni","Hi (%)","Ni_dsc","Hi_dsc (%)")
library(knitr)
kable(TDFsimplificado, format = "markdown", caption = "Tabla 2. Frecuencias de la variable simplificada")| Li | Ls | MC | ni | hi (%) | Ni | Hi (%) | Ni_dsc | Hi_dsc (%) |
|---|---|---|---|---|---|---|---|---|
| 0 | 10 | 5 | 20 | 0.02 | 20 | 0.02 | 123445 | 100.00 |
| 10 | 20 | 15 | 268 | 0.22 | 288 | 0.23 | 123425 | 99.98 |
| 20 | 30 | 25 | 1171 | 0.95 | 1459 | 1.18 | 123157 | 99.77 |
| 30 | 40 | 35 | 4623 | 3.74 | 6082 | 4.93 | 121986 | 98.82 |
| 40 | 50 | 45 | 12415 | 10.06 | 18497 | 14.98 | 117363 | 95.07 |
| 50 | 60 | 55 | 19926 | 16.14 | 38423 | 31.13 | 104948 | 85.02 |
| 60 | 70 | 65 | 23470 | 19.01 | 61893 | 50.14 | 85022 | 68.87 |
| 70 | 80 | 75 | 18543 | 15.02 | 80436 | 65.16 | 61552 | 49.86 |
| 80 | 90 | 85 | 15865 | 12.85 | 96301 | 78.01 | 43009 | 34.84 |
| 90 | 100 | 95 | 9804 | 7.94 | 106105 | 85.95 | 27144 | 21.99 |
| 100 | 110 | 105 | 6375 | 5.16 | 112480 | 91.12 | 17340 | 14.05 |
| 110 | 120 | 115 | 4786 | 3.88 | 117266 | 94.99 | 10965 | 8.88 |
| 120 | 130 | 125 | 3536 | 2.86 | 120802 | 97.86 | 6179 | 5.01 |
| 130 | 140 | 135 | 2643 | 2.14 | 123445 | 100.00 | 2643 | 2.14 |
Creamos el histograma con la frecuencia absoluta para visualizar el conteo de ocurrencias de los valores de la variable.
hist(CO2, main = "Gráfica N°12.1.1.-Distribución de frecuencia de las
emisiones de CO2 de los edificios en la Comunidad Autónoma de Aragón",ylab="Cantidad",xlab="Emisiones de CO2 (kg)",
col = "skyblue") hist(CO2, main = "Gráfica N°12.1.2.-Distribución de frecuencia de las
emisiones de CO2 de los edificios en la Comunidad Autónoma de Aragón",ylab="Cantidad",xlab="Emisiones de CO2 (kg)",
col = "skyblue",ylim=c(0,n))Ahora, creamos el histograma con la frecuencia relativa para visualizar el porcentaje de ocurrencias de los valores.
barplot(TDFsimplificado$`hi (%)`, space = 0,main = "Gráfica N°12.1.3.-Porcentaje de las
emisiones de CO2 de los edificios en la Comunidad Autónoma de Aragón",ylab="Porcentaje (%)",xlab="Emisiones de CO2 (kg)",
col = "red3",names.arg = TDFsimplificado$MC,axis.lty = 1,cex.names = 0.8)barplot(TDFsimplificado$`hi (%)`, space = 0,main = "Gráfica N°12.1.4.-Porcentaje de las
emisiones de CO2 de los edificios en la Comunidad Autónoma de Aragón",ylab="Porcentaje (%)",xlab="Emisiones de CO2 (kg)",
col = "red3",names.arg = TDFsimplificado$MC,axis.lty = 1,cex.names = 0.8,
ylim = c(0,100))A diferencia de las demás variables, las de tipo continuas no aceptan el diagrama de sector circular por el motivo de que la probabilidad de que se repita un suceso en casi o es cero, así que se omite y 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(CO2, horizontal = T, col = "salmon",
main= "Gráfica N°12.1.5.-Distribución de las emisiones de CO2 de los
edificios de la Comunidad Autónoma de Aragón", xlab="Emisiones de CO2 (Kg)")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.
x<-1:h
plot(x,TDFsimplificado$Ni, type = "b",col="green3",ylab = "Cantidad",
xlab="Emisiones de CO2 (kg)", main= "Gráfica N°12.1.6.-Distribución de las emisiones de CO2
de los edificios de la Comunidad Autónoma de Aragón",xaxt="n")
lines(TDFsimplificado$Ni_dsc, add=TRUE,type="b")Warning in plot.xy(xy.coords(x, y), type = type, ...): "add" es un parámetro
gráfico inválido
axis(1,at=x,labels = TDFsimplificado$MC, cex.axis=0.7)
legend("right", legend = c("Ni ascendente", "Ni descendente"), col = c("green3", "black"), lty = 1, pch = 0.4,
cex = 0.6, pt.cex = 1)plot(x,TDFsimplificado$`Hi (%)`, type = "b",col="green3",ylab = "Porcentaje (%)",
xlab="Emisiones de CO2 (kg)", main= "Gráfica N°12.1.7.-Distribución del porcentaje de las emisiones de CO2
, de los edificios de la Comunidad Autónoma de Aragón",xaxt="n")
axis(1,at=x,labels = TDFsimplificado$MC, cex.axis=0.7)
lines(TDFsimplificado$Hi_dsc, add=TRUE,type="b")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", "black"), lty = 1, pch = 0.4,
cex = 0.6, pt.cex = 1)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(CO2)
rs<-max(CO2)
mediana<-median(CO2)
mediana[1] 70
media_aritmetica<-mean(CO2)
media_aritmetica[1] 73.82297
desviación_estandar<-sd(CO2)
desviación_estandar[1] 23.7569
coeficiente_variabilidad <- (desviación_estandar/media_aritmetica) * 100
coeficiente_variabilidad[1] 32.1809
library(e1071)Warning: package 'e1071' was built under R version 4.4.2
coeficiente_asimetria <- skewness(CO2)
coeficiente_asimetria[1] 0.5500305
curtosis<-kurtosis(CO2)
curtosis[1] -0.05145367
# Identificar los valores atípicos
outliers<-boxplot.stats(CO2)$out
# Contar los valores atípicos
num_outliers <- length(outliers)
num_outliers[1] 1102
minimooutliers<-min(outliers)
minimooutliers[1] 2.3
max1<-caja$stats[1]
max1[1] 9.5
min2<-caja$stats[5]
maximooutliers<-max(outliers)
maximooutliers[1] 139.99
Variable<-c("Emisiones de CO2")
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 3. Indicadores estadíticos de la variable Emisiones de CO2")| Variable | minimo | máximo | x | Me | s | Cv (%) | As | K |
|---|---|---|---|---|---|---|---|---|
| Emisiones de CO2 | 2.3 | 139.99 | 73.82 | 70 | 23.76 | 32.18 | 0.55 | -0.05 |
Tabla_outliers<-data.frame(num_outliers,minimooutliers,max1,min2,maximooutliers)
colnames(Tabla_outliers)<-c("Outliers","minimo 1","máximo 1","mínimo 2","máximo")
library(knitr)
kable(Tabla_outliers, format = "markdown", caption = "Tabla 4. Outliers de la variable")| Outliers | minimo 1 | máximo 1 | mínimo 2 | máximo |
|---|---|---|---|---|
| 1102 | 2.3 | 9.5 | 135.75 | 139.99 |
Las Emisiones de CO2 de los edificos de la Comunidad Autónoma de Aragón, fructua entre 2.30 (Kg) a 139.99 (Kg), los valores están en torno a 73.82 (kg) que tiene una desviación estándar de 23.76 (kg). El conjunto de datos es débilmente homogeneo con una acumulación de datos en los valores centrales de la variable levente segada a la derecha con una concentración mediana de los datos. Además, presenta valores atípicos, con un total de 1102 valores que se dividen en dos grupos, desde 2.3 a 9.5 y desde 135.75 a 139.99. Por lo antes mencionado, el comportamiento de la variable es levemente beneficiosa para el medioambiente porque, aunque los valores de emisiones no son altas y son muy elevadas comparada con otras ciudades, la tendencia de la variable se concentra en el centro.