# Tema: Estadística Descriptiva
# Autor: Camila Zambrano
# Fecha: 30/05/2026
0.Carga de librerías
library(knitr)
library(kableExtra)
library(readr)
library(gt)
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following object is masked from 'package:kableExtra':
##
## group_rows
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
1. Leer datos
setwd("~/CAMILA")
datos <- read.csv("city_day.csv",
header = TRUE,
sep = ",", dec = "." )
2. Selección de la variable
habitantes <- datos$Número.de.habitantes
3. Conteo (frecuencia)
# Valores mínimos y máximos
min <- min(habitantes)
max <- max(habitantes)
cortes <- c(0, 8000000, 16000000, 24000000, 32000000, 34000000)
intervalos_legibles <- paste(
format(head(cortes, -1), big.mark = ",", scientific = FALSE, trim = TRUE),
format(tail(cortes, -1), big.mark = ",", scientific = FALSE, trim = TRUE),
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
# Frecuencias accumuladas
Ni_asc <- cumsum(ni)
Hi_asc <- cumsum(hi)
Ni_dsc <- rev(cumsum(rev(ni)))
Hi_dsc <- rev(cumsum(rev(hi)))
4. Tabla de distribución de frecuencia
TDF_habitantes <- data.frame(
as.character(levels(habitantes_cut)),
ni,
"hi(%)" = round(hi * 100, 2),
"Ni asc" = Ni_asc,
"Ni dsc" = Ni_dsc,
"Hi asc(%)" = round(Hi_asc * 100, 2),
"Hi dsc(%)" = round(Hi_dsc * 100, 2)
)
colnames(TDF_habitantes) <- c("Intervalos de número de habitantes","ni","hi(%)",
"Ni asc","Ni dsc","Hi asc","Hi dsc")
totales <- data.frame( TDF_habitantes=" TOTAL ",
ni= sum(ni),
hi= sum(hi*100),
Ni_asc= "-",
Ni_dsc= "-",
Hi_asc= "-",
Hi_dsc= "-")
colnames(totales) <- c("Intervalos de número de habitantes","ni","hi(%)",
"Ni asc","Hi asc","Ni dsc","Hi dsc")
TDF_numerohabitantes <- rbind(TDF_habitantes,totales)
#Creación tabla
tabla_habitantes <- TDF_numerohabitantes %>%
gt() %>%
tab_header(
title = md("*Tabla N°1*"),
subtitle = md("**Distribucion de frecuencia del número de habitantes por
ciudad en el análisis sobre la calidad del aire en India**")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 1")
) %>%
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_habitantes
| Tabla N°1 |
| Distribucion de frecuencia del número de habitantes por
ciudad en el análisis sobre la calidad del aire en India |
| Intervalos de número de habitantes |
ni |
hi(%) |
Ni asc |
Ni dsc |
Hi asc |
Hi dsc |
| 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 1 |
5. Gráficas de distribución de frecuencia
5.1 Histograma
Diagrama de barras general
par(mar = c(8, 6, 4, 2))
barplot(ni,
main="Gráfica N°1: Distribución de habitantes por intervalos
en las ciudades sobre el análisis sobre la calidad del aire en India",
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))

Diagrama de barras con relación al todo
barplot(ni,
main="Gráfica N°2: Distribución de habitantes por intervalos
en las ciudades sobre el análisis de la calidad del aire en India",
xlab = "Número de habitantes",
ylab = "Cantidad",
col = "lightgreen",
ylim = c(0,29531),
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))

5.2 Histograma porcentual
Histograma porcentual general
barplot(TDF_habitantes$`hi(%)`,
main="Gráfica N°3: Distribución de habitantes por intervalos
en las ciudades sobre el análisis de la calidad del aire en India",
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))

Histograma porcentual con relación al todo
barplot(TDF_habitantes$`hi(%)`,
main="Gráfica N°4: Distribución de habitantes por intervalos
en las ciudades sobre el análisis de la calidad del aire en India",
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))

6. Diagrama de cajas
options(scipen = 999)
boxplot(habitantes,
horizontal = TRUE,
main = "Gráfica N°5: Distribución del número de habitantes en las
ciudades sobre el análisis de la calidad del aire
en India",
xlab = " Número de habitantes",
col = "turquoise",
pch = 1)

7. Ojivas
7.1 Ojivas Ascendentes y Descendentes (ni)
par(mar = c(9, 6, 4, 2))
x_pos <- 1:length(TDF_habitantes$`Intervalos de número de habitantes`)
plot(x_pos ,Ni_dsc,
main = "Gráfica N°6: Distribución de Número de habitantes por ciudades
sobre el análisis de la calidad del aire en India",
xlab = " Número de habitantes",
ylab = "Cantidad",
col = "orange",
type = "o",
lwd = 3,
xaxt="n",
mgp = c(5, 1, 0),
ylim = c(0, max(c(Ni_asc, Ni_dsc))))
lines(x_pos,Ni_asc,
col = "green",
type = "o",
lwd = 3)
axis(side = 1, at = x_pos, labels = TDF_habitantes$`Intervalos de número de
habitantes`,
las = 2, cex.axis = 0.4)

7.2 Ojivas Ascendentes y Descendentes (hi)
par(mar = c(9, 6, 4, 2))
x_por <- 1:length(TDF_habitantes$`Intervalos de número de habitantes`)
plot(x_pos, Hi_dsc * 100,
main = "Gráfica N°7: Distribución de Número de havitantes por ciudad sobre
el análisis de la calidad del aire en India",
xlab = " Número de habitantes",
ylab = "Porcentaje",
col = "red",
type = "o",
mgp = c(5, 1, 0),
lwd = 2,
xaxt="n")
lines(x_pos, Hi_asc * 100,
col = "blue",
type = "o",
lwd = 3)
axis(side = 1, at = x_pos, labels = TDF_habitantes$`Intervalos de número de
habitantes`,
las = 2, cex.axis = 0.4)

8. Indicadores Estadísticos
8.1 Indicadores de Tendencia Central
# Media aritmética
media <- mean(habitantes)
media
## [1] 8512278
# Mediana
mediana <- median(habitantes)
mediana
## [1] 3900000
# Moda
Mo <- "[0 - 8,000,000]"
8.2 Inidicadores de Dispersión
# Varianza
varianza <- var(habitantes)
varianza
## [1] 86969315752243
# Desviación estándar
sd <- sd(habitantes)
sd
## [1] 9325734
# Coeficiente de variación
cv <- round((sd / media)*100, 2)
cv
## [1] 109.56
9. Conclusiones
La variable número de habitantes fluctúa entre 8000 y 33800000, y sus
valores giran entorno a 3900000 con una desviación estándar de 9325734,
siendo un conjunto de valores muy heterogéneo. El conjunto de valores se
concentra fuertemente en la parte alta de la variable. Con la presencia
de valores atípicos del intervalo 10230 a 12238.