# 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"
## [1] "~/Camila/Estadística/R"

# Establecer directorio y cargar datos
setwd("~/Camila/Estadística/R")
datos<- read.csv("china_water_pollution_data.csv",header = TRUE, sep = ";", 
                 dec = ",")

#Extracción Variable Cuantitativa Discreta
Conductividad<-datos$Conductivity_uS_cm

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

sum(ni)
## [1] 3000
## [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
## [1] 3000
Mc<-Hist_Conductividad$mids
hi<-(ni/sum(ni))
sum(hi)
## [1] 1
## [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
# GRAFICAS
#Histograma
hist(Conductividad,breaks = 10,
     main = "Gráfica N°1: Distribución de la cantidad de 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)

#Global
hist(Conductividad, breaks = 10,
     main = "Gráfica N°2: Distribución de la cantidad de 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)

# Barplot de porcentajes
barplot(TDF_Conductividad$hi,
        space=0,
        col = "skyblue",
        main ="Gráfica N°3: Distribución porcentual de frecuencias relativas 
        para 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))

# Local
hist(Conductividad, breaks = 10,
     main ="Gráfica N°4: Distribución porcentual para la conductividadd
     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 = "purple",
     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)

# Barplot de porcentajes
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 = round(TDF_Conductividad$MC))

# 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)

# 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 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 = "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 Ascendente y Descendente Porcentual
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)

# INDICADORES ESTADISTICOS

# Indicadores de Tendencia Central

# Media aritmética
media <- round(mean(Conductividad), 2)
media
## [1] 496.56
## [1] 496.56

# Moda
max_ni <- max(TDF_Conductividad$ni)
moda <- TDF_Conductividad$MC[TDF_Conductividad$ni == max_ni]
moda
## [1] 450
## [1] 450

# Mediana
mediana <- median(Conductividad)
mediana
## [1] 496.315
## [1] 496.315

# INDICADORES DE DISPERSIÓN

# Varianza
varianza <- var(Conductividad)
varianza
## [1] 9776.187
## [1] 9776.187

# Desviación Estándar
sd <- sd(Conductividad)
sd
## [1] 98.8746
## [1] 98.8746

# Coeficiente de Variación
cv <- round((sd / media) * 100, 2)
cv
## [1] 19.91
## [1] 19.91

# INDICADORES DE FORMA

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

#Curtosis
curtosis <- kurtosis(Conductividad)
curtosis
## [1] 0.03063271
## [1] 0.03063271

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" = "Sí existen")
library(knitr)
kable(tabla_indicadores, align = 'c', caption = "Conclusiones de la variable
      conductividad en (µS/cm)")
Conclusiones de la variable conductividad en (µ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 Sí existen