1.Carga de datos

# Librerías
library(kableExtra)
library(knitr)
library(magrittr)
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
library(e1071)

# Cargar datos
datos <- read.csv("china_water_pollution_data.csv",
                  header = TRUE,
                  sep = ",",
                  dec = ".")
Conductividad <- datos$Conductivity_uS_cm

2. Extrancción de la variable

Conductividad <- na.omit(Conductividad)
Conductividad <- Conductividad[Conductividad >= 0]

n <- length(Conductividad)
n
## [1] 3000

3. Tabla de distribución de frecuencia

3.1 Construcción manual (Regla de Sturges)

minimo <- min(Conductividad)
maximo <- max(Conductividad)

R <- maximo - minimo
K <- floor(1 + 3.322 * log10(n))
A <- R / K

Li <- round(seq(from = minimo, to = maximo - A, by = A),2)
Ls <- round(seq(from = minimo + A, to = maximo, by = A),2)
Mc <- (Li + Ls)/2

ni <- numeric(K)

for (i in 1:K) {
  if (i < K) {
    ni[i] <- sum(Conductividad >= Li[i] & Conductividad < Ls[i])
  } else {
    ni[i] <- sum(Conductividad >= Li[i] & Conductividad <= Ls[i])
  }
}

hi <- ni/sum(ni)*100
Ni_asc <- cumsum(ni)
Hi_asc <- cumsum(hi)

TDF_Conductividad <- data.frame(Li, Ls, Mc, ni, round(hi,2), Ni_asc, round(Hi_asc,2))

colnames(TDF_Conductividad) <- c("Lim inf","Lim sup","MC","ni","hi(%)","Ni asc","Hi asc(%)")

kable(TDF_Conductividad, align="c",
      caption="Tabla de Frecuencias de la Conductividad según la Regla de Sturges") %>%
  kable_styling(full_width = FALSE)
Tabla de Frecuencias de la Conductividad según la Regla de Sturges
Lim inf Lim sup MC ni hi(%) Ni asc Hi asc(%)
136.85 195.69 166.270 5 0.17 5 0.17
195.69 254.52 225.105 21 0.70 26 0.87
254.52 313.36 283.940 79 2.63 105 3.50
313.36 372.20 342.780 201 6.70 306 10.20
372.20 431.03 401.615 452 15.07 758 25.27
431.03 489.87 460.450 658 21.93 1416 47.20
489.87 548.71 519.290 707 23.57 2123 70.77
548.71 607.54 578.125 476 15.87 2599 86.63
607.54 666.38 636.960 272 9.07 2871 95.70
666.38 725.22 695.800 104 3.47 2975 99.17
725.22 784.05 754.635 19 0.63 2994 99.80
784.05 842.89 813.470 6 0.20 3000 100.00

3.2. Simplificación

La tabla de distribución de frecuencias de la Conductividad fue construida inicialmente aplicando la Regla de Sturges para determinar el número óptimo de clases.

Posteriormente, el procedimiento se simplificó utilizando la función hist(), obteniendo automáticamente los intervalos y frecuencias, confirmando los resultados obtenidos manualmente.

Hist_Conductividad <- hist(Conductividad,
                     breaks = K,
                     plot = FALSE)

Li <- Hist_Conductividad$breaks[-length(Hist_Conductividad$breaks)]
Ls <- Hist_Conductividad$breaks[-1]
ni <- Hist_Conductividad$counts
hi <- round((ni/sum(ni))*100,2)

TDF_simplificada <- data.frame(
  Lim_inf = round(Li,2),
  Lim_sup = round(Ls,2),
  ni = ni,
  hi = hi
)

kable(TDF_simplificada,
      align="c",
      caption="Tabla simplificada obtenida mediante hist()")
Tabla simplificada obtenida mediante hist()
Lim_inf Lim_sup ni hi
100 150 1 0.03
150 200 5 0.17
200 250 15 0.50
250 300 55 1.83
300 350 124 4.13
350 400 287 9.57
400 450 458 15.27
450 500 598 19.93
500 550 593 19.77
550 600 413 13.77
600 650 267 8.90
650 700 129 4.30
700 750 38 1.27
750 800 15 0.50
800 850 2 0.07

4. Gráficas

4.1 Histograma

hist(Conductividad, breaks = 10,
     main = "Gráfica N°1: Distribución de Conductividad
     en el estudio de contaminación del agua
     en China en el año 2023",
     xlab = "Conductividad (µS/cm)",
     ylab = "Cantidad",
     ylim = c(0, max(ni)),
     col = "lightgreen")

4.2 Histograma general

hist(Conductividad, breaks = 10,
     main = "Gráfica N°2: Distribución general de la onductividad
     en el estudio de contaminación del agua en China 2023",
     xlab = "Conductividad (µS/cm)",
     ylab = "Cantidad",
     ylim = c(0, max(ni)),
     col = "lightgreen")

4.3 Histograma Porcentual General

barplot(
  height = TDF_Conductividad$`hi(%)`,
  space = 0,
  col = "skyblue",
  main = "Gráfica N°3: Distribución porcentual de Conductividad
  en el estudio de contaminación del agua en China 2023",
  xlab = "Conductividad (µS/cm)",
  ylab = "Porcentaje (%)",
  names.arg = TDF_Conductividad$MC,
  ylim = c(0,100)
)

5. Diagrama de Caja

boxplot(Conductividad,
        horizontal = TRUE,
        main = "Gráfica N°6: Diagrama de caja de la Conductividad
        en el estudio de contaminación del agua en China 2023",
        xlab = "Conductividad (µS/cm)",
        col = "green",
        outline = TRUE)

summary(Conductividad)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   136.8   430.2   496.3   496.6   561.3   842.9

6. Ojivas

6.1 Ojivas Ascendentes y Descendentes (ni)

Ni_asc <- cumsum(ni)
Ni_desc <- rev(cumsum(rev(ni)))

plot(Ls, Ni_asc,
     type = "o",
     col = "orange",
     lwd = 3,
     xlab = "Conductividad (µS/cm)",
     ylab = "Frecuencia acumulada",
     main = "Gráfica N°7: Ojiva Ascendente y Descendente")

lines(Li, Ni_desc,
      type = "o",
      col = "green",
      lwd = 3)

6.2 Ojivas Ascendentes y Descendentes (hi)

Hi_asc <- cumsum(hi)
Hi_desc <- rev(cumsum(rev(hi)))

plot(Ls, Hi_asc,
     type = "o",
     col = "blue",
     lwd = 3,
     xlab = "Conductividad (µS/cm)",
     ylab = "Porcentaje acumulado (%)",
     main = "Gráfica N°8: Ojiva porcentual Ascendente y Descendente")

lines(Li, Hi_desc,
      type = "o",
      col = "red",
      lwd = 3)

7. Indicadores Estadísticos

7.1 Indicadores de Tendencia Central

media <- round(mean(Conductividad),2)
mediana <- median(Conductividad)

max_ni <- max(TDF_Conductividad$ni)
moda <- TDF_Conductividad$MC[TDF_Conductividad$ni == max_ni]

media
## [1] 496.56
mediana
## [1] 496.315
moda
## [1] 519.29

7.2 Indicadores de Dispersión

varianza <- var(Conductividad)
sd <- sd(Conductividad)
cv <- round((sd/media)*100,2)

varianza
## [1] 9776.187
sd
## [1] 98.8746
cv
## [1] 19.91

7.3 Indicadores de Forma

library(e1071)

asimetria <- skewness(Conductividad, type = 2)
curtosis <- kurtosis(Conductividad)

asimetria
## [1] -0.03012506
curtosis
## [1] 0.03063271

8. Tabla de Resumen

tabla_indicadores <- data.frame(
  "Variable" = "Conductividad (µS/cm)",
  "Rango" = paste0("[",min(Conductividad),";",max(Conductividad),"]"),
  "X" = media,
  "Me" = round(mediana,2),
  "Mo" = moda,
  "V" = round(varianza,2),
  "Sd" = round(sd,2),
  "Cv" = cv,
  "As" = round(asimetria,2),
  "K" = round(curtosis,2)
)

kable(tabla_indicadores, align='c',
      caption="Conclusiones de la variable Conductividad (µS/cm)")
Conclusiones de la variable Conductividad (µS/cm)
Variable Rango X Me Mo V Sd Cv As K
Conductividad (µS/cm) [136.85;842.89] 496.56 496.32 519.29 9776.19 98.87 19.91 -0.03 0.03

9. Conclusión

La variable Conductividad (µS/cm) fluctúa entre 136.85 y 842.89 µS/cm, y sus valores giran en torno a 496.56 µS/cm, con una desviación estándar de 98.87 µS/cm, siendo un conjunto de datos con variabilidad moderada (CV = 19.91%). Los valores se distribuyen de manera prácticamente simétrica (As ≈ -0.03), lo que indica que no existe una concentración marcada hacia valores bajos o altos, y presentan una curtosis cercana a cero (K = 0.03), evidenciando una distribución aproximadamente normal. Por lo anterior, el comportamiento de la variable Conductividad (µS/cm) puede considerarse estable y representativo para el análisis de la calidad del agua en China durante el año 2023.