# Estadística Descriptiva: Conductividad
# Autor: Camila Zambrano
# Fecha: 03/12/2025
# Carga de librerías
library(knitr)
library(kableExtra)

1. Carga de datos

# Establecer directorio y cargar datos
## [1] "~/Camila/Estadística/R"
setwd("C:/Users/Usuario/Documents/Camila/Estadística/R")
datos <- read.csv("china_water_pollution_data.csv",header = TRUE, sep = ";",
  dec = "," )

2. Extracción de la variable

# Extraer variable cuantitativa discreta
Conductividad <- datos$Conductivity_uS_cm

3. Tabla de distribución de frecuencia

# Manualmente
min <-min(Conductividad)
max <-max(Conductividad)
R <-max-min
K <- floor(1+3.33*log10(length(Conductividad)))
A <-R/K
Li <-round(seq(from=min,to=max-A,by=A),2)
Li[1] <- min(Conductividad)

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(Conductividad >= Li[i] & Conductividad < Ls[i])
  } else {
    ni[i] <- sum(Conductividad >= Li[i] & Conductividad <= Ls[i])
  }
}

sum(ni)
## [1] 3000
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_Conductividad <- data.frame(
  Li, Ls, Mc, ni, round(hi, 2), Ni_asc, Ni_desc, round(Hi_asc, 2), round(Hi_desc, 2)
)

colnames(TDF_Conductividad)<- 
  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_Conductividad<-rbind(TDF_Conductividad,totales)

#Simplificación con el histograma
Hist_Conductividad<-hist(Conductividad,breaks = 8,plot = F)
k<-length(Hist_Conductividad$breaks)
Li<-Hist_Conductividad$breaks[1:(length(Hist_Conductividad$breaks)-1)]
Ls<-Hist_Conductividad$breaks[2:length(Hist_Conductividad$breaks)]
ni<-Hist_Conductividad$counts
sum(ni)
## [1] 3000
Mc<-Hist_Conductividad$mids
hi<-(ni/sum(ni))
sum(hi)
## [1] 1
Ni_asc<-cumsum(ni)
Hi_asc<-cumsum(hi)
Ni_desc<-rev(cumsum(rev(ni)))
Hi_desc<-rev(cumsum(rev(hi)))
TDF_Conductividad<-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_Conductividad)<-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_Conductividad_total<-rbind(TDF_Conductividad,totales)

library(knitr)
library(kableExtra)
kable(TDF_Conductividad_total, align = 'c', caption = "Tabla de Frecuencias de
Conductividad 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 Conductividad 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(%)
100 200 150 6 0.2 6 3000 0.2 100
200 300 250 70 2.33 76 2994 2.53 99.8
300 400 350 411 13.7 487 2924 16.23 97.47
400 500 450 1056 35.2 1543 2513 51.43 83.77
500 600 550 1006 33.53 2549 1457 84.97 48.57
600 700 650 396 13.2 2945 451 98.17 15.03
700 800 750 53 1.77 2998 55 99.93 1.83
800 900 850 2 0.07 3000 2 100 0.07
TOTAL
3000 100

4. Gráficas

4.1 Histograma

hist(Conductividad,breaks = 10,
     main = "Gráfica N°1: Distribución de la conductividad de 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 = "pink",
     cex.main=1.3,
     cex.lab=1,
     cex.axis=0.9,
     xaxt="n")
axis(1,at=Hist_Conductividad$breaks,labels = Hist_Conductividad$breaks,las=1,
     cex.axis=0.9)

4.2 Histograma Global

hist(Conductividad, breaks = 10,
     main = 
       "Gráfica N°2: Distribución de la conductividad 
       de estudio de contaminación del agua en China en el año 2023",
     xlab = "Conductividad (µS/cm)",
     ylab = "Cantidad",
     ylim = c(0, length(Conductividad)),
     col = "lightgreen",
     cex.main = 1.3,
     cex.lab = 1,
     cex.axis = 0.9,
     xaxt = "n")
axis(1, at = Hist_Conductividad$breaks,
     labels = Hist_Conductividad$breaks, las = 1,
     cex.axis = 0.9)

4.3 Histograma Porcentual Global

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

4.4 Histograma Local

hist(Conductividad, breaks = 10,
     main =
       "Gráfica N°4: Distribución porcentual para la conductividad 
       de 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 = "pink",
     cex.main = 1.3,
     cex.lab = 1,
     cex.axis = 0.9,
     xaxt = "n")
axis(1, at = Hist_Conductividad$breaks,
     labels = Hist_Conductividad$breaks, las = 1,
     cex.axis = 0.9)

4.5 Histograma Porcentual Local

barplot(TDF_Conductividad$hi,space=0,
        col = "lightblue",
        main ="Gráfica N°5: Distribución porcentual para la conductividad 
        de estudio de contaminación del agua en China en el año 2023",
        xlab="Conductividad (µS/cm)",
        ylab="Porcentaje",
        ylim = c(0,40),
        names.arg = TDF_Conductividad$MC)

5. Diagrama de Caja

boxplot(Conductividad,
        horizontal = TRUE,
        main = "Gráfica N°6: Distribución de frecuencia para la conductividad
        de estudio de contaminación del agua en China en el año 2023 ",
        xlab = "Conductividad (µS/cm)",
        col = "purple",
        outline = TRUE,
        pch = 1)

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 Ascendente y Descendente (ni)

plot(Li, Ni_asc,
     main = "Gráfica N°7: Distribución de frecuencias acumuladas Ascendente y 
     Descendente para la conductividad de estudio de contaminación del agua en China
     en el año 2023",
     xlab = "Conductividad (µS/cm)",
     ylab = "Cantidad",
     xlim = c(min(Li), max(Ls)),
     col = "orange",
     cex.axis = 0.8,
     type = "o",
     lwd = 3,
     las = 1,
     xaxt = "n")

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

axis(1, at = Li, las = 1)

6.2 Ojivas Ascendente y Descendente (hi)

plot(Li, Hi_desc *100,
     main = "Gráfica N°8: Distribución porcentual acumulada Ascendente y 
     Descendente para la conductividad de estudio de contaminación 
     del agua en China en el año 2023",
     xlab = "Conductividad (µS/cm)",
     ylab = "Cantidad",
     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)

7. Indicadores Estadísticos

7.1 Indicadores de Tendencia Central

# Media aritmética
media <- round(mean(Conductividad), 2)
media
## [1] 496.56
# Moda
max_ni <- max(TDF_Conductividad$ni)
moda <- TDF_Conductividad$MC[TDF_Conductividad$ni == max_ni]
moda
## [1] 450
# Mediana
mediana <- median(Conductividad)
mediana
## [1] 496.315

7.2 Indicadores de Dispersión

# Varianza
varianza <- var(Conductividad)
varianza
## [1] 9776.187
# Desviación Estándar
sd <- sd(Conductividad)
sd
## [1] 98.8746
# Coeficiente de Variación
cv <- round((sd / media) * 100, 2)
cv
## [1] 19.91

7.3 Indicadores de Forma

# Asimetría
library(e1071)
asimetria <- skewness(Conductividad, type = 2)
asimetria
## [1] -0.03012506
#Curtosis
curtosis <- kurtosis(Conductividad)
curtosis
## [1] 0.03063271

8. Tabla resumen

tabla_indicadores <- data.frame("Variable" =c("Conductividad (µS/cm)"),
                                "Rango" = c("[136.85;842.49]"),
                                "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" = "[136.8;842.9]")

library(knitr)
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 Valores.Atipicos
Conductividad (µS/cm) [136.85;842.49] 496.56 496.32 450 9776.19 98.87 19.91 -0.03 0.03 [136.8;842.9]

9. Conclusión