# Estadística Descriptiva: Nivel de Contaminación
# Autor: Camila Zambrano
# Fecha: 03/12/2025
# Carga de librerías
library(knitr)
library(kableExtra)
#Carga de datos
getwd()
## [1] "C:/Users/Usuario/Documents/Camila/Estadística"
setwd("~/Camila/Estadística/R")
datos<- read.csv("china_water_pollution_data.csv",header = TRUE, sep = ";",
dec = ",")
#Extracción Variable Cuantitativa Discreta
Turbidez <- datos$Turbidity_NTU # CAMBIADO
#Tabla de distribución de frecuencia
#Manualmente
min <- min(Turbidez)
max <- max(Turbidez)
R <- max - min
K <- floor(1 + 3.33 * log10(length(Turbidez)))
A <- R / K
Li <- round(seq(from = min, to = max - A, by = A), 2)
Li[1] <- min(Turbidez)
Ls <- round(seq(from = min + A, to = max, by = A), 2)
Mc <- (Li + Ls) / 2
tol <- 1e-9
ni <- numeric(K)
for (i in 1:K) {
if (i < K) {
ni[i] <- sum(Turbidez >= Li[i] - tol & Turbidez < Ls[i] + tol)
} else {
ni[i] <- sum(Turbidez >= Li[i] - tol & Turbidez <= Ls[i] + tol)
}
}
sum(ni)
## [1] 3010
hi <- ni/sum(ni)*100
Ni_asc <- cumsum(ni)
Hi_asc <- cumsum(hi)
Ni_desc <- rev(cumsum(rev(ni)))
Hi_desc <- rev(cumsum(rev(hi)))
TDF_Turbidez <- data.frame(
Li, Ls, Mc, ni, round(hi, 2), Ni_asc, Ni_desc, round(Hi_asc, 2), round(Hi_desc, 2)
)
colnames(TDF_Turbidez)<-
c("Li","Ls","Mc","ni","hi","Ni_asc(%)","Ni_desc(%)","Hi_asc","Hi_desc")
#Crear fila de totales
totales <- c(
Li="-",
Ls="-",
Mc="-",
ni=sum(ni),
hi=sum(hi),
Ni_asc="-",
Ni_desc="-",
Hi_asc="-",
Hi_desc="-")
TDF_Turbidez <- rbind(TDF_Turbidez, totales)
#Simplificación con el histograma
Hist_Turbidez <- hist(Turbidez, breaks = 8, plot = F)
k <- length(Hist_Turbidez$breaks)
Li <- Hist_Turbidez$breaks[1:(length(Hist_Turbidez$breaks)-1)]
Ls <- Hist_Turbidez$breaks[2:length(Hist_Turbidez$breaks)]
ni <- Hist_Turbidez$counts
sum(ni)
## [1] 3000
Mc <- Hist_Turbidez$mids
hi <- (ni/sum(ni))
Ni_asc <- cumsum(ni)
Hi_asc <- cumsum(hi)
Ni_desc <- rev(cumsum(rev(ni)))
Hi_desc <- rev(cumsum(rev(hi)))
TDF_Turbidez <- data.frame(Li = round(Li,2),
Ls = round(Ls,2),
Mc = round(Mc,2),
ni = 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_Turbidez) <- c("Lim inf","Lim sup","MC","ni","hi(%)","Ni asc",
"Ni desc","Hi asc(%)","Hi desc(%)")
#Crear fila de totales
totales <- c(Li="TOTAL",
Ls="-",
Mc="-",
ni=sum(ni),
hi=sum(hi*100),
Ni_asc="-",
Ni_desc="-",
Hi_asc="-",
Hi_desc="-")
TDF_Turbidez_total <- rbind(TDF_Turbidez, totales)
kable(TDF_Turbidez_total, align = 'c', caption =
"Tabla de Frecuencias de Turbidez
de estudio de contaminación del agua en China en el año 2023") %>%
kable_styling(full_width = FALSE, position = "center",
bootstrap_options = c("striped", "hover", "condensed"))
Tabla de Frecuencias de Turbidez de estudio de contaminación del agua en
China en el año 2023
|
Lim inf
|
Lim sup
|
MC
|
ni
|
hi(%)
|
Ni asc
|
Ni desc
|
Hi asc(%)
|
Hi desc(%)
|
|
0
|
5
|
2.5
|
1911
|
63.7
|
1911
|
3000
|
63.7
|
100
|
|
5
|
10
|
7.5
|
678
|
22.6
|
2589
|
1089
|
86.3
|
36.3
|
|
10
|
15
|
12.5
|
272
|
9.07
|
2861
|
411
|
95.37
|
13.7
|
|
15
|
20
|
17.5
|
94
|
3.13
|
2955
|
139
|
98.5
|
4.63
|
|
20
|
25
|
22.5
|
32
|
1.07
|
2987
|
45
|
99.57
|
1.5
|
|
25
|
30
|
27.5
|
6
|
0.2
|
2993
|
13
|
99.77
|
0.43
|
|
30
|
35
|
32.5
|
4
|
0.13
|
2997
|
7
|
99.9
|
0.23
|
|
35
|
40
|
37.5
|
1
|
0.03
|
2998
|
3
|
99.93
|
0.1
|
|
40
|
45
|
42.5
|
1
|
0.03
|
2999
|
2
|
99.97
|
0.07
|
|
45
|
50
|
47.5
|
1
|
0.03
|
3000
|
1
|
100
|
0.03
|
|
TOTAL
|
|
|
3000
|
100
|
|
|
|
|
# GRAFICAS
#Histograma
hist(Turbidez, breaks = 10,
main = "Gráfica N°1: Distribución de la cantidad de turbidez
de estudio de contaminación del agua en China en el año 2023",
xlab = "Turbidez (NTU)",
ylab = "Cantidad",
ylim = c(0,max(ni)),
col = "pink",
cex.main=1.3,
cex.lab=1,
cex.axis=0.9,
xaxt="n")
axis(1,at=Hist_Turbidez$breaks,labels = Hist_Turbidez$breaks,las=1,
cex.axis=0.9)

#Global
hist(Turbidez, breaks = 10,
main = "Gráfica N°2: Distribución de la cantidad de turbidez
de estudio de contaminación del agua en China en el año 2023",
xlab = "Turbidez (NTU)",
ylab = "Cantidad",
ylim = c(0, length(Turbidez)),
col = "lightgreen",
cex.main = 1.3,
cex.lab = 1,
cex.axis = 0.9,
xaxt = "n")
axis(1, at = Hist_Turbidez$breaks,
labels = Hist_Turbidez$breaks, las = 1,
cex.axis = 0.9)

# Barplot de porcentajes
barplot(TDF_Turbidez$hi,
space=0,
col = "skyblue",
main ="Gráfica N°3: Distribución porcentual de frecuencias relativas
para la turbidez de estudio de contaminación del agua en China en el año 2023 ",
xlab="Turbidez (NTU)",
ylab="Porcentaje",
names.arg =round(TDF_Turbidez$MC),
ylim = c(0,100))

# Local
hist(Turbidez, breaks = 10,
main ="Gráfica N°4: Distribución porcentual para la turbidez
de estudio de contaminación del agua en China en el año 2023",
xlab = "Turbidez (NTU)",
ylab = "Cantidad",
ylim = c(0,max(ni)),
col = "purple",
cex.main = 1.3,
cex.lab = 1,
cex.axis = 0.9,
xaxt = "n")
axis(1, at = Hist_Turbidez$breaks,
labels = Hist_Turbidez$breaks, las = 1,
cex.axis = 0.9)

# Barplot de porcentajes
barplot(TDF_Turbidez$hi,space=0,
col = "lightblue",
main ="Gráfica N°5: Distribución porcentual para la turbidez
de estudio de contaminación del agua en China en el año 2023",
xlab="Turbidez (NTU)",
ylab="Porcentaje",
ylim = c(0,70),
names.arg = round(TDF_Turbidez$MC))

# Diagrama de Caja
boxplot(Turbidez,
horizontal = TRUE,
main = "Gráfica N°6: Distribución de frecuencia para la turbidez
de estudio de contaminación del agua en China
en el año 2023 ",
xlab = "Turbidez (NTU)",
col = "purple",
outline = TRUE,
pch = 1)

# Diagrama de Ojiva Ascendente y Descendente
plot(Li, Ni_asc,
main = "Gráfica N°7: Distribución de frecuencias acumuladas Ascendente y
Descendente para la turbidez de estudio de contaminación del agua en China
en el año 2023",
xlab = "Turbidez (NTU)",
ylab = "Cantidad",
xlim = c(min(Li), max(Ls)),
col = "lightblue",
cex.axis = 0.8,
type = "o",
lwd = 3,
las = 1,
xaxt = "n")
lines(Ls, Ni_desc,
col = "pink",
type = "o",
lwd = 3)
axis(1, at = Li, las = 1)

# Diagrama de Ojiva Porcentual
plot(Li, Hi_desc *100,
main = "Gráfica N°8: Distribución porcentual acumulada Ascendente y
Descendente para la turbidez de estudio de contaminación del agua en China
en el año 2023",
xlab = "Turbidez (NTU)",
ylab = "Porcentaje",
xlim = c(min(Li), max(Ls)),
col = "red",
cex.axis = 0.8,
type = "o",
lwd = 3,
las = 1,
xaxt = "n")
lines(Ls, Hi_asc *100,
col = "blue",
type = "o",
lwd = 3)
axis(1, at = Li, las = 1)

# INDICADORES ESTADISTICOS
# Indicadores de Tendencia Central
media <- round(mean(Turbidez), 2)
media
## [1] 4.95
# Moda
max_ni <- max(TDF_Turbidez$ni)
moda <- TDF_Turbidez$MC[TDF_Turbidez$ni == max_ni]
moda
## [1] 2.5
# Mediana
mediana <- median(Turbidez)
mediana
## [1] 3.445
# VARIANZA Y DESVIACIÓN TÍPICA
varianza <- var(Turbidez)
sd <- sd(Turbidez)
cv <- round((sd / media) * 100, 2)
# Asimetría y curtosis
library(e1071)
asimetria <- skewness(Turbidez, type = 2)
curtosis <- kurtosis(Turbidez)
# TABLA FINAL
tabla_indicadores <- data.frame("Variable" = c("Turbidez (NTU)"),
"Rango" = c(paste0("[", round(min(Turbidez),2),
";", round(max(Turbidez),2), "]")),
"X" = c(media),
"Me" = c(round(mediana,2)),
"Mo" = c(round(moda,2)),
"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" = "Sí existen")
kable(tabla_indicadores, align = 'c', caption =
"Conclusiones de la variable turbidez (NTU)")
Conclusiones de la variable turbidez (NTU)
| Turbidez (NTU) |
[0;47.48] |
4.95 |
3.45 |
2.5 |
24.11 |
4.91 |
99.2 |
1.96 |
6.07 |
Sí existen |