1. Carga de Datos, Libreria y Extracción de la Variable

#carga de librerias
library(kableExtra)
library(knitr)
library(magrittr)
library(dplyr)
## 
## Attaching package: '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
#carga de datos 
getwd()
## [1] "/cloud/project"
setwd("/cloud/project")
datos<- read.csv("china_water_pollution_data.csv",header = TRUE, sep = ",", 
                 dec = ".")
#extraccion variable cuantitativa continua
Indice_Calidad_Agua <- datos$Water_Quality_Index

2. Tabla de distribución de Frecuencia

#Tabla de distribución de frecuencia

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

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

TDFIndice_Calidad_Agua <- data.frame(
  Li, Ls, Mc, ni, round(hi, 2), Ni_asc, Ni_desc,  
  round(Hi_asc, 2), round(Hi_desc, 2)
)
colnames(TDFIndice_Calidad_Agua) <- c(
  "Lim inf",
  "Lim sup",
  "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="-")

TDFIndice_Calidad_Agua <-rbind(TDFIndice_Calidad_Agua,totales)

#Simplificación con el histograma
Hist_Indice_Calidad_Agua<-hist(Indice_Calidad_Agua,breaks = 8,plot = F)
k<-length(Hist_Indice_Calidad_Agua$breaks)
Li<-Hist_Indice_Calidad_Agua$breaks[1:(length(Hist_Indice_Calidad_Agua$breaks)-1
)]
Ls<-Hist_Indice_Calidad_Agua$breaks[2:length(Hist_Indice_Calidad_Agua$breaks)]
ni<-Hist_Indice_Calidad_Agua$counts
sum(ni)
## [1] 3000
Mc<-Hist_Indice_Calidad_Agua$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)))
TDFIndice_Calidad_Agua<-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(TDFIndice_Calidad_Agua) <- 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="-")

TDFIndice_Calidad_Agua_total<-rbind(TDFIndice_Calidad_Agua,totales)


library(knitr)
library(kableExtra)
kable(TDFIndice_Calidad_Agua_total, align = 'c', caption = "Tabla de
Frecuencias del Índice de Calidad del Agua 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 del Índice de Calidad del Agua 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 10 5 309 10.3 309 3000 10.3 100
10 20 15 301 10.03 610 2691 20.33 89.7
20 30 25 291 9.7 901 2390 30.03 79.67
30 40 35 280 9.33 1181 2099 39.37 69.97
40 50 45 301 10.03 1482 1819 49.4 60.63
50 60 55 306 10.2 1788 1518 59.6 50.6
60 70 65 309 10.3 2097 1212 69.9 40.4
70 80 75 287 9.57 2384 903 79.47 30.1
80 90 85 292 9.73 2676 616 89.2 20.53
90 100 95 324 10.8 3000 324 100 10.8
TOTAL
3000 100

3. Gráficas

3.1 Histograma

# GRAFICAS
#Histograma
hist(Indice_Calidad_Agua,breaks = 10,
     main = 
       "Gráfica N°1: Distribución del Índice de Calidad del Agua
       del estudio
     de contaminación del agua en China en el año 2023",
     xlab = " Índice de Calidad del Agua ",
     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_Indice_Calidad_Agua$breaks,labels = 
       Hist_Indice_Calidad_Agua$breaks,las=1,
     cex.axis=0.9)

3.2 Histograma Global

#Global

hist(Indice_Calidad_Agua, breaks = 10,
     main = 
       "Gráfica N°2: Distribución del Índice de Calidad 
       del Agua del estudio
     de contaminación del agua en China en el año 2023",
     xlab = " Índice de Calidad del Agua ",
     ylab = "Cantidad",
     ylim = c(0, length(Indice_Calidad_Agua)),
     col = "pink",
     cex.main = 1.3,
     cex.lab = 1,
     cex.axis = 0.9,
     xaxt = "n")
axis(1, at = Hist_Indice_Calidad_Agua$breaks,
     labels = Hist_Indice_Calidad_Agua$breaks, las = 1,
     cex.axis = 0.9)

3.3 Histograma Porcentual

barplot(
  height = round(TDFIndice_Calidad_Agua$hi,0),
  space=0,
  col = "skyblue",
  main =
    "Gráfica N°3: Distribución porcentual del Índice de Calidad 
    del Agua de estudio de contaminación del agua 
  en China en el año 2023 ",
  xlab="Índice de Calidad del Agua ",
  ylab="Porcentaje (%)",
  names.arg =round(TDFIndice_Calidad_Agua$MC,1),
  ylim = c(0,100))

3.4 Histograma Local

# Local
hist(Indice_Calidad_Agua, breaks = 10,
     main =
       "Gráfica N°4:Distribución porcentual para el Índice de Calidad
       del Agua de estudio de contaminación del agua en China 
     en el año 2023",
     xlab = "Índice de Calidad del Agua ",
     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_Indice_Calidad_Agua$breaks,
     labels = Hist_Indice_Calidad_Agua$breaks, las = 1,
     cex.axis = 0.9)

3.5 Histograma Porcentual Local

barplot(TDFIndice_Calidad_Agua$hi,space=0,
        col = "lightblue",
        main ="Gráfica N°5: Distribución porcentual 
        para del Índice de Calidad 
        del Agua Total de 
        estudio de contaminación del agua en China en el año 2023",
        xlab="Índice de Calidad del Agua ",
        ylab="Porcentaje (%)",
        ylim = c(0,20),
        names.arg = TDFIndice_Calidad_Agua$MC)

4. Diagrama de Caja

boxplot(Indice_Calidad_Agua,
        horizontal = TRUE,
        main = "Gráfica N°6:Distribución de frecuencia para del Índice 
        de Calidad del Agua de estudio de contaminación del agua en
        China en  el año 2023 ",
        xlab = " Índice de Calidad del Agua  ",
        col = "purple",
        outline = TRUE,
        pch = 1)

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.230   1.630   1.980   1.983   2.320   3.840
bp <- boxplot(Indice_Calidad_Agua,
              horizontal = TRUE,
              plot = FALSE)
valores_atipicos <- bp$out
min_atipico <- min(valores_atipicos)
## Warning in min(valores_atipicos): no non-missing arguments to min; returning
## Inf
max_atipico <- max(valores_atipicos)
## Warning in max(valores_atipicos): no non-missing arguments to max; returning
## -Inf
min_atipico
## [1] Inf
max_atipico
## [1] -Inf

5. Ojivas

5.1 Ojivas Ascendentes y Descendentes (ni)

# Diagrama de Ojiva Ascendente y Descendente
plot(Li, Ni_asc,
     main = 
       "Gráfica N°7: Distribución de frecuencias acumuladas Ascendente y 
     Descendente para el Índice de Calidad del Agua de estudio de
     contaminación del agua en China en el año 2023",
     xlab = "Índice de Calidad del Agua ",
     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)

5.2 Ojivas Ascendentes y Descendentes (hi)

# 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 el Índice de Calidad del Agua de estudio de contaminación 
     del agua en China en el año 2023",
     xlab = "Índice de Calidad del Agua ",
     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)

6. Indicadores

# Media aritmética
media <- round(mean(Indice_Calidad_Agua), 2)
media
## [1] 50.26
# Moda
max_ni <- max(TDFIndice_Calidad_Agua$ni)
moda <- TDFIndice_Calidad_Agua$MC[TDFIndice_Calidad_Agua$ni == max_ni]
moda
## [1] 95
# Mediana
mediana <- median(Indice_Calidad_Agua)
mediana
## [1] 50.6
# Varianza
varianza <- var(Indice_Calidad_Agua)
varianza
## [1] 847.1381
# Desviación Estándar
sd <- sd(Indice_Calidad_Agua)
sd
## [1] 29.10564
# Coeficiente de Variación
cv <- round((sd / media) * 100, 2)
cv
## [1] 57.91
# Asimetría
library(e1071)
asimetria <- skewness(Indice_Calidad_Agua, type = 2)
asimetria
## [1] -0.01243507
#Curtosis
curtosis <- kurtosis(Indice_Calidad_Agua)
curtosis
## [1] -1.202119

7. Tabla de indicadores

tabla_indicadores <- data.frame("Variable" =c("Índice de Calidad del Agua "),
                                "Rango" = 
                                  c("[0;99.95]"),
                                "X" = c(media),
                                "Me" = 
                                  c(round(mediana,2)),
                                "Mo" = c(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" = 
                                  "No existen")
library(knitr)
kable(tabla_indicadores, align = 'c', caption = 
        "Conclusiones de la variable
      Indice de Calidad del Agua")
Conclusiones de la variable Indice de Calidad del Agua
Variable Rango X Me Mo V Sd Cv As K Valores.Atipicos
Índice de Calidad del Agua [0;99.95] 50.26 50.6 95 847.14 29.11 57.91 -0.01 -1.2 No existen

8. Conclusiones

La variable Índice de calidad del agua fluctua entre [0;99.95], y sus valores giran entorno a 50.6 con una desviación estadandar de 29.11, siendo un conjunto de valores heterogeneo. Los valores se acumulan de manera parcialmente debil en la parte alta de la variable. Con lo anterior el comportamiento de la variable es medianamente malo pues se inclina hacia una escala un valores altos de contaminación.