#Tema: Estadística Descriptiva
#Fecha: 23/11/2025
#Autor:Anahi Sosa
#Carga de librerias
library(knitr)
library(kableExtra)
1. Carga de Datos
#Carga de datos
getwd()
## [1] "/cloud/project"
setwd("/cloud/project")
datos<- read.csv("china_water_pollution_data.csv",header = TRUE, sep = ",",
dec = ".")
3. Tabla de distribución de frecuencia
# 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 de recuento de 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 de 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 de 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
|
|
|
|
|
4. Gráficas
4.1 Diagrama de barras Local
# 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
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(%)`
4.2 Digrama de barras Porcentual Local
# Gráfico
barplot(
hi_porcentaje,
main = "Gráfica N°2: Distribución porcentual de recuento de coliformes
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
)

4.3 Diagrama de barras Global
# 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 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)

4.4 Diagrama de barras Porcentual Global
hi_porcentaje <- TDF_sin_total$`hi(%)`
barplot(hi_porcentaje,
main="Gráfica N°4: Distribución porcentual de recuento de coliformes
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)

5. Diagrama de Caja
# Diagrama de Caja
boxplot(Recuento_coliformes,
horizontal = TRUE,
main = "Gráfica N°5:Distribución del recuento de coliformes
en el estudio de contaminación del agua en China en el año 2023 ",
xlab = "Unidades Formadoras de Colonias (UFC) por cada 100mL de
agua",
col = "orange",
pch = 1)

summary(Recuento_coliformes)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 69 93 100 100 107 136
6. Ojivas
6.1 Ojivas Ascendente y Descendente (ni)
# Diagrama de Ojiva Ascendente y Descendente
# Eliminar la fila TOTAL para el gráfico
TDF_sin_total <- TDF_Recuento_coliformes[
TDF_Recuento_coliformes$`Intervalos de recuento de coliformes` != "TOTAL",
]
# Crear posiciones en el eje X
x_pos <- 1:nrow(TDF_sin_total)
# Extraer Ni descendente
Ni_desc <- TDF_sin_total$`Ni desc`
Ni_asc <- TDF_sin_total$`Ni asc`
Hi_desc <- TDF_sin_total$`Hi desc`
Hi_asc <- TDF_sin_total$`Hi asc`
plot(x_pos, Ni_desc,
main = "Gráfica N°6: Ojiva ascendente y descendente del recuento de
coliformes en el estudio de contaminación del agua en China
en el año 2023 ",
xlab = "Unidades Formadoras de Colonias (UFC) por cada 100mL de agua",
ylab = "Cantidad",
col = "orange",
type = "p",
lwd = 3,
xaxt="n")
lines(x_pos,Ni_asc,
col = "green",
type = "p",
lwd = 3)
axis(side = 1, at = x_pos, labels = TDF_sin_total$`Intervalos de recuento de
coliformes`, las = 2, cex.axis = 0.7)

6.2 Ojiva Ascendente y Descendente (hi)
# Diagrama de Ojiva Ascendente y Descendente Porcentual
plot(x_pos, Hi_desc,
main = "Gráfica N°7:Ojiva ascendente y descendente del recuento de
coliformes en el estudio de contaminación del agua en China
en el año 2023 ",
xlab = " Unidades Formadoras de Colonias (UFC) por cada 100mL de agua",
ylab = "Porcentaje (%)",
col = "red",
type = "p",
lwd = 2,
xaxt="n")
lines(x_pos, Hi_asc,
col = "blue",
type = "p",
lwd = 3)
axis(side = 1, at = x_pos, labels = TDF_sin_total$`Intervalos de recuento de
coliformes`, las = 2, cex.axis = 0.7)

7. Indicadores Estadísticos
7.1 Indicadores de Tendencia Cental
# Media aritmética
media <- round(mean(Recuento_coliformes), 2)
media
## [1] 100
# Moda
max_ni <- max(TDF_Recuento_coliformes$ni)
moda <- TDF_Recuento_coliformes$MC[TDF_Recuento_coliformes$ni == max_ni]
moda
## NULL
# Mediana
mediana <- median(Recuento_coliformes)
mediana
## [1] 100
7.2 Indicadores de Dispersión
# INDICADORES DE DISPERSIÓN #
# Varianza
varianza <- var(Recuento_coliformes)
varianza
## [1] 99.84261
# Desviación Estándar
sd <- sd(Recuento_coliformes)
sd
## [1] 9.992127
# Coeficiente de Variación
cv <- round((sd / media) * 100, 2)
cv
## [1] 9.99
8. Tabla Resumen
tabla_indicadores <- data.frame("Variable" =c("Recuento de coliformes por
cada 100ml)"),
"Rango" = c("[60;140]"),
"X" = c(media),
"Me" = c(round(mediana,2)),
"Mo" = c("No hay moda"),
"V" = c(round(varianza,2)),
"Sd" = c(round(sd,2)),
"Cv" = c(cv),
"As" = c(round(asimetria,2)),
"K" = c(round(curtosis,2)),
"Valores Atipicos" = "[69;136]")
library(knitr)
kable(tabla_indicadores, align = 'c', caption = "Conclusiones de la variable
Recuento de coliformes por cada 100 ml")
Conclusiones de la variable Recuento de coliformes por cada 100
ml
| Recuento de coliformes por |
|
|
|
|
|
|
|
|
|
|
| cada 100ml) |
[60;140] |
100 |
100 |
No hay moda |
99.84 |
9.99 |
9.99 |
0.08 |
-0.07 |
[69;136] |
9. Conclusión
La variable Recuento de Coliformes (UFC 100ml) fluctua entre 60 y
140, y sus valores giran entorno a 100, con una desviación estandar de
9.99 siendo un conjunto de valores heterogéneo. Los valores se acumulan
de manera moderada en la parte baja de la variable. Con valores atípicos
que parte de 69 hasta 140, por lo anterior el Recuento de Coliformes
(UFC 100ml) es siendo moderadamente bueno para el caso de analisis de
contaminación del agua en China en el año 2023.