UNIVERSIDAD CENTRAL DEL ECUADOR
FIGEMPA
Ingeniería Ambiental
#ESTADISTICA DESCRIPTIVA
#Lorien Arcentales
#30/11/2025
#Carga de paquetes
library(gt)
library(dplyr)
#Carga de datos
datos<-read.csv("city_day.csv", header = TRUE, dec = ".",
sep = ",")
#Extraer variable
options(scipen = 999)
habitantes<-datos$Número.de.habitantes
#TDF_habitantes
# Definir los cortes (intervalos), ajusta según tus datos
min <- min(habitantes)
max <- max(habitantes)
cortes <- c(0, 8000000, 16000000, 24000000, 32000000, 34000000)
intervalos_legibles <- paste(
format(head(cortes, -1), big.mark = ","),
format(tail(cortes, -1), big.mark = ","),
sep = " - "
)
habitantes_cut <- cut(
datos$Número.de.habitantes,
breaks = cortes,
right = TRUE,
labels = intervalos_legibles
)
TDF_habitantes<- data.frame(table(habitantes_cut))
ni <- TDF_habitantes$Freq
sum(ni)
## [1] 29531
hi <- (ni/sum(ni))
sum(hi)
## [1] 1
Ni_asc <- cumsum(ni)
Hi_asc <- cumsum(hi)
Ni_desc <- rev(cumsum(rev(ni)))
Hi_desc <- rev(cumsum(rev(hi)))
TDF_habitantes <- data.frame(
as.character(levels(habitantes_cut)),
ni,
"hi(%)" = round(hi * 100, 2),
"Ni asc" = Ni_asc,
"Ni desc" = Ni_desc,
"Hi asc(%)" = round(Hi_asc * 100, 2),
"Hi desc(%)" = round(Hi_desc * 100, 2)
)
colnames(TDF_habitantes) <- c("Intervalos de número de habitantes","ni","hi(%)",
"Ni asc","Ni desc","Hi asc(%)","Hi desc(%)")
totales <- data.frame( TDF_habitantes=" TOTAL ",
ni= sum(ni),
hi= sum(hi*100),
Ni_asc= "-",
Ni_des= "-",
Hi_asc= "-",
Hi_des= "-")
colnames(totales) <- c("Intervalos de número de habitantes","ni","hi(%)",
"Ni asc","Hi asc(%)","Ni desc","Hi desc(%)")
TDF_numerohabitantes<- rbind(TDF_habitantes,totales)
#Creación tabla
library(gt)
library(dplyr)
TDF_numerohabitantes %>%
gt() %>%
tab_header(
title = md("*Tabla Nro. 6*"),
subtitle = md("**Distribucion de frecuencia del número de habitantes por ciudad, estudio calidad del aire en India entre 2015-2020 **")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 2\n Fuente:https://www.kaggle.com/datasets/rohanrao/air-quality-data-in-india")
) %>%
tab_options(
table.border.top.color = "black",
table.border.bottom.color = "black",
table.border.top.style = "solid",
table.border.bottom.style = "solid",
column_labels.border.top.color = "black",
column_labels.border.bottom.color = "black",
column_labels.border.bottom.width = px(2),
row.striping.include_table_body = TRUE,
heading.border.bottom.color = "black",
heading.border.bottom.width = px(2),
table_body.hlines.color = "gray",
table_body.border.bottom.color = "black"
)
| Tabla Nro. 6 | ||||||
| **Distribucion de frecuencia del número de habitantes por ciudad, estudio calidad del aire en India entre 2015-2020 ** | ||||||
| Intervalos de número de habitantes | ni | hi(%) | Ni asc | Ni desc | Hi asc(%) | Hi desc(%) |
|---|---|---|---|---|---|---|
| 0 - 8,000,000 | 16666 | 56.44 | 16666 | 29531 | 56.44 | 100 |
| 8,000,000 - 16,000,000 | 8847 | 29.96 | 25513 | 12865 | 86.39 | 43.56 |
| 16,000,000 - 24,000,000 | 2009 | 6.80 | 27522 | 4018 | 93.2 | 13.61 |
| 24,000,000 - 32,000,000 | 0 | 0.00 | 27522 | 2009 | 93.2 | 6.8 |
| 32,000,000 - 34,000,000 | 2009 | 6.80 | 29531 | 2009 | 100 | 6.8 |
| TOTAL | 29531 | 100.00 | - | - | - | - |
| Autor: Grupo 2 Fuente:https://www.kaggle.com/datasets/rohanrao/air-quality-data-in-india | ||||||
# GRAFICAS
# Diagrama de barrras local
par(mar = c(8, 6, 4, 2))
barplot(ni,
main="Gráfica N°1: Distribución de habitantes por intervalos
en las ciudades del estudio,
calidad del aire en India entre 2015-2020",
xlab = "Número de habitantes",
ylab = "Cantidad",
col = "blue",
ylim = c(0,max(ni)),
names.arg=TDF_habitantes$`Intervalos de número de habitantes`,
las=2,
cex.names=0.4,
cex.axis = 0.7,
cex.main = 0.9,
mgp = c(5, 1 , 0))
mtext("*En los intervalos los limites superiores son cerrados",
side = 1, line = 6, adj = 0, cex = 0.7)
barplot(TDF_habitantes$`hi(%)`,
main="Gráfica N°2: Distribución de habitantes por intervalos
en las ciudades del estudio,
calidad del aire en India entre 2015-2020",
xlab = "Número de habitantes",
ylab = "Porcentaje %",
col = "lightblue",
names.arg=TDF_habitantes$`Intervalos de número de habitantes`,
las=2,
cex.names=0.4,
cex.axis = 0.9,
cex.main = 0.9,
mgp = c(5, 1, 0))
# Diagrama de barrras global
barplot(ni,
main="Gráfica N°3: Distribución de habitantes por intervalos
en las ciudades del estudio,calidad del aire en India entre 2015-2020",
xlab = "Número de habitantes",
ylab = "Cantidad",
col = "lightgreen",
ylim = c(0,30000),
names.arg=TDF_habitantes$`Intervalos de número de habitantes`,
las=2,
cex.names=0.4,
cex.axis = 0.9,
cex.main = 0.9,
mgp = c(5, 1, 0))
barplot(TDF_habitantes$`hi(%)`,
main="Gráfica N°4:Distribución de habitantes por intervalos
en las ciudades del estudio,calidad del aire en India entre 2015-2020",
xlab = "Número de habitantes",
ylab = "Porcentaje (%)",
col = "green",
ylim = c(0,100),
names.arg=TDF_habitantes$`Intervalos de número de habitantes`,
las=2,
cex.names=0.4,
cex.axis = 0.9,
cex.main = 0.9,
mgp = c(5, 1, 0))
# Diagrama de Caja
boxplot(habitantes,
horizontal = TRUE,
main = "Gráfica N°5: Distribución del número de habitantes en las
ciudades del estudio,calidad del aire
en India entre 2015-2020",
xlab = " Número de habitantes",
col = "turquoise",
pch = 1)
# Diagrama de Ojiva Ascendente y Descendente
par(mar = c(9, 6, 4, 2))
x_pos <- 1:length(TDF_habitantes$`Intervalos de número de habitantes`)
plot(x_pos ,Ni_desc,
main = "Gráfica N°5: ",
xlab = " Número de habitantes",
ylab = "Cantidad",
col = "orange",
type = "p",
lwd = 3,
xaxt="n",
mgp = c(5, 1, 0),
ylim = c(0, max(c(Ni_asc, Ni_desc))))
lines(x_pos,Ni_asc,
col = "green",
type = "p",
lwd = 3)
axis(side = 1, at = x_pos, labels = TDF_habitantes$`Intervalos de número de habitantes`,
las = 2, cex.axis = 0.4)
# Diagrama de Ojiva Ascendente y Descendente Porcentual
par(mar = c(9, 6, 4, 2))
x_por <- 1:length(TDF_habitantes$`Intervalos de número de habitantes`)
plot(x_pos, Hi_desc * 100,
main = "Gráfica N°6: ",
xlab = " Número de habitantes",
ylab = "Porcentaje (%)",
col = "red",
type = "p",
mgp = c(5, 1, 0),
lwd = 2,
xaxt="n")
lines(x_pos, Hi_asc * 100,
col = "blue",
type = "p",
lwd = 3)
axis(side = 1, at = x_pos, labels = TDF_habitantes$`Intervalos de número de habitantes`,
las = 2, cex.axis = 0.4)