#Tema: EstadÃstica Descriptiva
#Fecha: 23/11/2025
#Autor:Anahi Sosa
#Carga de librerias
library(knitr)
library(kableExtra)
#Carga de datos
getwd()
## [1] "/cloud/project"
setwd("/cloud/project")
datos<- read.csv("china_water_pollution_data.csv",header = TRUE, sep = ",", dec = ".")
#Extracción Variable Cuantitativa Discreta
Recuento_coliformes<-datos$Coliform_Count_CFU_100mL
# Valores mÃnimos y máximos
min_val <- floor(min(Recuento_coliformes)/10)*10
max_val <- ceiling(max(Recuento_coliformes)/10)*10
# Crear intervalos adecuados
breaks <- seq(min_val, max_val, by = 10)
labels <- paste(head(breaks, -1), tail(breaks, -1), sep = "-")
intervalos <- cut(Recuento_coliformes,
breaks = breaks,
include.lowest = TRUE,
right = FALSE,
labels = labels)
# Tabla de frecuencia
TDF <- data.frame(table(intervalos))
ni <- TDF$Freq
hi <- ni / sum(ni)
# Frecuencias acumuladas
Ni_asc <- cumsum(ni)
Ni_desc <- rev(cumsum(rev(ni)))
Hi_asc <- round(cumsum(hi) * 100, 2)
Hi_desc <- round(rev(cumsum(rev(hi))) * 100, 2)
# Construcción de la tabla
TDF_Recuento_coliformes <- data.frame(
"Intervalos_recuento_coliformes" = TDF$intervalos,
"ni" = ni,
"`hi (%)`" = round(hi * 100, 2),
"Niasc" = Ni_asc,
"Nidesc" = Ni_desc,
"`Hi asc (%)`" = Hi_asc,
"`Hi desc (%)`" = Hi_desc
)
colnames(TDF_Recuento_coliformes) <- c("Intervalos de recuento de coliformes","ni","hi(%)",
"Ni asc","Ni desc","Hi asc(%)","Hi desc(%)")
# Fila de totales (MISMO ORDEN MISMOS NOMBRES)
totales <- data.frame(
"Intervalos_recuento_coliformes" = "TOTAL",
"ni" = sum(ni),
"`hi (%)`" = round(sum(hi*100), 2),
"Niasc" = "-",
"Nidesc" = "-",
"`Hi asc (%)`" = "-",
"`Hi desc (%)`" = "-"
)
colnames(totales) <- c("Intervalos de recuento de coliformes","ni","hi(%)",
"Ni asc","Ni desc","Hi asc(%)","Hi desc(%)")
TDF_Recuento_coliformes <- rbind(TDF_Recuento_coliformes, totales)
# Mostrar tabla
kable(TDF_Recuento_coliformes, align = 'c',
caption = "Tabla N°1. Distribución de Frecuencias del recuento de coliformes
(UFC por 100 mL)") %>%
kable_styling(full_width = FALSE, position = "center",
bootstrap_options = c("striped", "hover", "condensed"))
Tabla N°1. Distribución de Frecuencias del recuento de coliformes (UFC
por 100 mL)
|
Intervalos de recuento de coliformes
|
ni
|
hi(%)
|
Ni asc
|
Ni desc
|
Hi asc(%)
|
Hi desc(%)
|
|
60-70
|
2
|
0.07
|
2
|
3000
|
0.07
|
100
|
|
70-80
|
50
|
1.67
|
52
|
2998
|
1.73
|
99.93
|
|
80-90
|
386
|
12.87
|
438
|
2948
|
14.6
|
98.27
|
|
90-100
|
1043
|
34.77
|
1481
|
2562
|
49.37
|
85.4
|
|
100-110
|
1008
|
33.60
|
2489
|
1519
|
82.97
|
50.63
|
|
110-120
|
433
|
14.43
|
2922
|
511
|
97.4
|
17.03
|
|
120-130
|
73
|
2.43
|
2995
|
78
|
99.83
|
2.6
|
|
130-140
|
5
|
0.17
|
3000
|
5
|
100
|
0.17
|
|
TOTAL
|
3000
|
100.00
|
|
|
|
|
# GRAFICAS
# Diagrama de barrras local
TDF_sin_total <- TDF_Recuento_coliformes[1:8, ]
grafica <- barplot(
ni,
main = "Gráfica N°1: Distribución por intervalos de recuento de coliformes
(UFC 100mL) de estudio de contaminación del agua en China
en el año 2023",
xlab = "Recuento de coliformes (UFC 100mL)",
ylab = "Cantidad",
col = "skyblue",
ylim = c(0, max(ni)),
names.arg = TDF_sin_total$`Intervalos de recuento de coliformes`,
las = 2,
cex.names = 0.63
)
mtext("*Los lÃmites superiores de los intervalos son abiertos",
side = 1, line = 5, adj = 0, cex = 0.7)

hi_porcentaje <- TDF_sin_total$`hi(%)`
# Gráfico
barplot(
hi_porcentaje,
main = "Gráfica N°2: Distribución porcentual de recuento de coliformes
(UFC 100mL) de estudio de contaminación del agua en China
en el año 2023",
xlab = "Recuento de coliformes (UFC 100mL)",
ylab = "Porcentaje",
col = "skyblue",
names.arg = TDF_sin_total$`Intervalos de recuento de coliformes`,
las = 2,
cex.names = 0.63
)

# Diagrama de barrras global
TDF_sin_total <- TDF_Recuento_coliformes[1:8, ]
barplot(ni,
main="Gráfica N°3: Distribución por intervalos de recuento de coliformes
(UFC 100mL) de estudio de contaminación del agua en China
en el año 2023",
xlab = "Recuento de coliformes (UFC 100mL) ",
ylab = "Cantidad",
col = "skyblue",
ylim = c(0,3000),
names.arg = TDF_sin_total$`Intervalos de recuento de coliformes`,
las=2,
cex.names=0.63)

hi_porcentaje <- TDF_sin_total$`hi(%)`
barplot(hi_porcentaje,
main="Gráfica N°4: Distribución porcentual de recuento de coliformes
(UFC 100mL) de estudio de contaminación del agua en China
en el año 2023",
xlab = "Recuento de coliformes (UFC 100mL)",
ylab = "Porcentaje (%)",
col = "skyblue",
ylim = c(0,100),
names.arg = TDF_sin_total$`Intervalos de recuento de coliformes`,
las=2,
cex.names=0.63)
