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

#craga 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
Oxigeno_disuelto <- datos$Dissolved_Oxygen_mg_L

2. Tabla de Distribución de Frecuencia

#Tabla de distribución de frecuencia

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

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


sum(ni)
## [1] 2997
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)))

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

colnames(TDFOxigeno_disuelto)<-  
  c("Li","Ls","Mc","ni","hi","Ni_asc(%)","Ni_desc(%)","H
    i_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="-")

TDFOxigeno_disuelto<-rbind(TDFOxigeno_disuelto,totales)

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

TDFOxigeno_disuelto_total<-rbind(TDFOxigeno_disuelto,totales)


library(knitr)
library(kableExtra)
kable(TDFOxigeno_disuelto_total, align = 'c', caption = "Tabla de
Frecuencias de Nitrógeno Total 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 Nitrógeno Total de estudio de contaminación del agua en China en el año 2023
Lim inf Lim sup
MC
0 2 1 4 0.13 4 3000 0.13 100
2 4 3 55 1.83 59 2996 1.97 99.87
4 6 5 413 13.77 472 2941 15.73 98.03
6 8 7 1017 33.9 1489 2528 49.63 84.27
8 10 9 1042 34.73 2531 1511 84.37 50.37
10 12 11 412 13.73 2943 469 98.1 15.63
12 14 13 54 1.8 2997 57 99.9 1.9
14 16 15 3 0.1 3000 3 100 0.1
TOTAL
3000 100

3. Gráficas

# GRAFICAS
#Histograma
hist(Oxigeno_disuelto,breaks = 10,
     main = 
       "Gráfica N°1: Distribución de la cantidad de Oxígeno Disuelto de estudio
     de contaminación del agua en China en el año 2023",
     xlab = " Oxígeno Disuelto (mg/L) ",
     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_Oxigeno_disuelto$breaks,labels = 
       Hist_Oxigeno_disuelto$breaks,las=1,
     cex.axis=0.9)

#Global
hist(Oxigeno_disuelto, breaks = 10,
     main = 
       "Gráfica N°2: Distribución de la cantidad de Oxígeno Disuelto de estudio
     de contaminación del agua en China en el año 2023",
     xlab = " Oxígeno Disuelto(mg/L)",
     ylab = "Cantidad",
     ylim = c(0, length(Oxigeno_disuelto)),
     col = "pink",
     cex.main = 1.3,
     cex.lab = 1,
     cex.axis = 0.9,
     xaxt = "n")
axis(1, at = Hist_Oxigeno_disuelto$breaks,
     labels = Hist_Oxigeno_disuelto$breaks, las = 1,
     cex.axis = 0.9)

barplot(
  height = round(TDFOxigeno_disuelto$hi,0),
  space=0,
  col = "skyblue",
  main =
    "Gráfica N°3: Distribución porcentual de Oxígeno Disuelto de estudio
        de contaminación del agua en China en el año 2023 ",
  xlab="Oxígeno Disuelto (mg/L)",
  ylab="Porcentaje (%)",
  names.arg =round(TDFOxigeno_disuelto$MC,1),
  ylim = c(0,100))

# Local
hist(Oxigeno_disuelto, breaks = 10,
     main =
       "Gráfica N°4:Distribución porcentual para el Oxígeno Disuelto de estudio
     de contaminación del agua en China en el año 2023",
     xlab = "Oxígeno Disuelto (mg/L)",
     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_Oxigeno_disuelto$breaks,
     labels = Hist_Oxigeno_disuelto$breaks, las = 1,
     cex.axis = 0.9)

barplot(TDFOxigeno_disuelto$hi,space=0,
        col = "lightblue",
        main ="Gráfica N°5: Distribución porcentual para el Oxígeno Disuelto de 
        estudio
        de contaminación del agua en China en el año 2023",
        xlab="Oxígeno Disuelto (mg/L)",
        ylab="Porcentaje (%)",
        ylim = c(0,40),
        names.arg = TDFOxigeno_disuelto$MC)

# Diagrama de Caja

boxplot(Oxigeno_disuelto,
        horizontal = TRUE,
        main = "Gráfica N°6:Distribución de frecuencia para el Oxígeno Disuelto
        de estudio de contaminación del agua en China en el año 2023 ",
        xlab = " Nitrógeno Total (mg/L) ",
        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(Oxigeno_disuelto,
              horizontal = TRUE,
              plot = FALSE)
valores_atipicos <- bp$out
min_atipico <- min(valores_atipicos)
max_atipico <- max(valores_atipicos)

min_atipico
## [1] 1.47
max_atipico
## [1] 14.49
# 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 Oxígeno Disuelto de estudio de contaminación del 
     agua en China en el año 2023",
     xlab = "Oxígeno Disuelto (mg/L)",
     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)

# 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 Oxígeno Disuelto de estudio de contaminación del
     agua en China en el año 2023",
     xlab = "Oxígeno Disuelto (mg/L)",
     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)

4. Indicadores

# Media aritmética
media <- round(mean(Oxigeno_disuelto), 2)
media
## [1] 8.01
# Moda
max_ni <- max(TDFOxigeno_disuelto$ni)
moda <- TDFOxigeno_disuelto$MC[TDFOxigeno_disuelto$ni == max_ni]
moda
## [1] 9
# Mediana
mediana <- median(Oxigeno_disuelto)
mediana
## [1] 8.03
# Varianza
varianza <- var(Oxigeno_disuelto)
varianza
## [1] 3.898718
# Desviación Estándar
sd <- sd(Oxigeno_disuelto)
sd
## [1] 1.974517
# Coeficiente de Variación
cv <- round((sd / media) * 100, 2)
cv
## [1] 24.65
# Asimetría
library(e1071)
asimetria <- skewness(Oxigeno_disuelto, type = 2)
asimetria
## [1] 0.005597006
#Curtosis
curtosis <- kurtosis(Oxigeno_disuelto)
curtosis
## [1] -0.1355801

5. Tabla de Indicadores

tabla_indicadores <- data.frame("Variable" =c("Nitrógeno Total
                                              (mg/L)"),
                                "Rango" = 
                                  c("[1.47;14.49]"),
                                "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" = 
                                  "[1.47;14.49]")
library(knitr)
kable(tabla_indicadores, align = 'c', caption = 
        "Conclusiones de la variable
     Oxígeno Disuelto (mg/L)")
Conclusiones de la variable Oxígeno Disuelto (mg/L)
Variable Rango X Me Mo V Sd Cv As K Valores.Atipicos
Nitrógeno Total
(mg/L) [1.47;14.49] 8.01 8.03 9 3.9 1.97 24.65 0.01 -0.14 [1.47;14.49]

6. Conclusión