Facultad en Ingeniería en Geología, Minas, Petróleos y
Ambiental
Ingeniería Ambiental
Fecha: 15-05-2025
#Carga de datos
getwd()## [1] "/cloud/project"setwd("/cloud/project")
datos <- read.csv("water_pollution_disease.csv",header = TRUE,sep = ",",dec
                  = ".")
#Extraccion variable Cuantitativa Continua
Nivel_pH <- na.omit (datos$pH.Level)
#Tabla de distribución de frecuencia
#Manualmente
min <-min(Nivel_pH)
max <-max(Nivel_pH)
R <-max-min
K <- floor(1+3.33*log10(length(Nivel_pH)))
A <-R/K
Li <-round(seq(from=min,to=max-A,by=A),2)
Ls <-round(seq(from=min+A,to=max,by=A),2)
Mc <-(Li+Ls)/2
ni<-c()
for (i in 1:K) {
  if (i < K) {
    ni[i] <- length(subset(Nivel_pH, Nivel_pH >= Li[i] & Nivel_pH < Ls[i]))
  } else {
    ni[i] <- length(subset(Nivel_pH, Nivel_pH >= Li[i] & Nivel_pH <= 
                             Ls[i]))
  }
}
sum(ni)## [1] 3000hi <-ni/sum(ni)*100
Ni_asc<-cumsum(ni)
Hi_asc<-cumsum(hi)
Ni_desc<-rev(cumsum(rev(ni)))
Hi_desc<-rev(cumsum(rev(hi)))
TDFnivel_pH <- data.frame(
  Li, Ls, Mc, ni, round(hi, 2), Ni_asc, Ni_desc, round(Hi_asc, 2), round(Hi_desc, 2)
)
colnames(TDFnivel_pH) <-  
  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="-")
TDFnivel_pH<-rbind(TDFnivel_pH,totales)
#Simplificación con el histograma
Hist_Nivel_pH<-hist(Nivel_pH,breaks = 8,plot = F)
k<-length(Hist_Nivel_pH$breaks)
Li<-Hist_Nivel_pH$breaks[1:(length(Hist_Nivel_pH$breaks)-1)]
Ls<-Hist_Nivel_pH$breaks[2:length(Hist_Nivel_pH$breaks)]
ni<-Hist_Nivel_pH$counts
sum(ni)## [1] 3000Mc<-Hist_Nivel_pH$mids
hi<-(ni/sum(ni))
sum(hi)## [1] 1Ni_asc<-cumsum(ni)
Hi_asc<-cumsum(hi)
Ni_desc<-rev(cumsum(rev(ni)))
Hi_desc<-rev(cumsum(rev(hi)))
TDFnivel_pH<-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(TDFnivel_pH)<-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="-")
TDFnivel_pH_total<-rbind(TDFnivel_pH,totales)
library(knitr)
library(kableExtra)
kable(TDFnivel_pH_total, align = 'c', caption = "Tabla de Frecuencias de 
      Concentración de pH en el Agua") %>%
  kable_styling(full_width = FALSE, position = "center", bootstrap_options 
                = c("striped", "hover", "condensed"))| Lim inf | Lim sup | MC | ni | hi(%) | Ni asc | Ni desc | Hi asc(%) | |
|---|---|---|---|---|---|---|---|---|
| 6 | 6.5 | 6.25 | 601 | 20.03 | 601 | 3000 | 20.03 | 100 | 
| 6.5 | 7 | 6.75 | 594 | 19.8 | 1195 | 2399 | 39.83 | 79.97 | 
| 7 | 7.5 | 7.25 | 602 | 20.07 | 1797 | 1805 | 59.9 | 60.17 | 
| 7.5 | 8 | 7.75 | 600 | 20 | 2397 | 1203 | 79.9 | 40.1 | 
| 8 | 8.5 | 8.25 | 603 | 20.1 | 3000 | 603 | 100 | 20.1 | 
| TOTAL |  |  | 3000 | 100 |  |  |  |  | 
#Gráficas
#Histograma
hist(Nivel_pH,breaks = 10,
     main = "Gráfica N°1: Distribución de niveles de pH de los 
      países del estudio de contaminación del agua",
     xlab = "Tasa de concentración de pH(%)",
     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_Nivel_pH$breaks,labels = Hist_Nivel_pH$breaks,las=1,
     cex.axis=0.9)#Global
hist(Nivel_pH, breaks = 10,
     main = "Gráfica N°2: Distribución de niveles de concentración de pH en
     los países del estudio de contaminación del agua",
     xlab = "Tasa de concentración de pH(%)",
     ylab = "Cantidad",
     ylim = c(0, length(Nivel_pH)),
     col = "pink",
     cex.main = 1.3,
     cex.lab = 1,
     cex.axis = 0.9,
     xaxt = "n")
axis(1, at = Hist_Nivel_pH$breaks,
     labels = Hist_Nivel_pH$breaks, las = 1,
     cex.axis = 0.9)barplot(TDFnivel_pH$hi,
        space=0,
        col = "skyblue",
        main ="Gráfica N°3: Distribución porcentual de frecuencias 
        relativas para concentración de pH de los paises en el estudio de 
         contaminación del agua ",
        xlab="Tasa de concentración de pH(%)",
        ylab="Porcentaje (%)",
        names.arg= TDFnivel_pH$MC,
        ylim = c(0,100))# Local
hist(Nivel_pH, breaks = 10,
     main ="Gráfica N°4:Distribución porcentual para concentración de pH 
      de los países en el estudio de contaminación del agua",
     xlab = "Tasa de concentración de pH(%)",
     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_Nivel_pH$breaks,
     labels = Hist_Nivel_pH$breaks, las = 1,
     cex.axis = 0.9)barplot(TDFnivel_pH$hi,space=0,
        col = "lightblue",
        main ="Gráfica N°5: Distribución porcentual para concentración de 
        pH de los países en el estudio de contaminación del agua ",
        xlab="Tasa de concentración de pH(%)",
        ylab="Porcentaje (%)",
        ylim = c(0,12),
        names.arg = TDFnivel_pH$MC)# Diagrama de Ojiva Ascendente y Descendente
plot(Li ,Ni_desc,
     main = "Gráfica N°6: Distribución de frecuencias acumuladas Ascendente
     y Descendente para concentración de pH de los países en el estudio de
    contaminación de el agua",
     xlab = " Tasa de concentración de pH(%)",
     ylab = "Cantidad",
     xlim = c(0,10),
     col = "orange",
     cex.axis=0.8,
     type = "o",
     lwd = 3,
     las=1,
     xaxt="n")
lines(Ls,Ni_asc,
      col = "green",
      type = "o",
      lwd = 3)
axis(1, at = seq(0, 10, by = 1))# Diagrama de Ojiva Ascendente y Descendente Porcentual
plot(Li, Hi_desc * 100,
     main = "Gráfica N°7: Distribución porcentual acumulada Ascendente y
    Descendente para concentración de pH de los países en el estudio de
    contaminación de el agua  ",
     xlab = " Tasa de concentración de pH(%)",
     ylab = "Porcentaje (%)",
     xlim = c(0,10),
     col = "red",
     type = "o",
     lwd = 2,
     xaxt="n")
lines(Ls, Hi_asc * 100,
      col = "blue",
      type = "o",
      lwd = 3)
axis(1, at = seq(0,10,by=1))# Diagrama de Caja
boxplot(Nivel_pH,
        horizontal = TRUE,
        main = "Gráfica N°8:Distribución de frecuencia para  concentración 
        de pH de los países en el estudio de contaminación de el agua ",
        xlab = " Tasa de concentración de pH(%)",
        col = "purple",
        outline = TRUE,
        pch = 1)# INDICADORES ESTADISTICOS
# Indicadores de Tendencia Central
# Media aritmética
media <- round(mean(Nivel_pH), 2)
media## [1] 7.26# Moda
max_ni <- max(TDFnivel_pH$ni)
moda <- TDFnivel_pH$MC[TDFnivel_pH$ni == max_ni]
moda## [1] 8.25# Mediana
mediana <- median(Nivel_pH)
mediana## [1] 7.28# INDICADORES DE DISPERSIÓN #
# Varianza
varianza <- var(Nivel_pH)
varianza## [1] 0.5190677# Desviación Estándar
sd <- sd(Nivel_pH)
sd## [1] 0.7204635# Coeficiente de Variación
cv <- round((sd / media) * 100, 2)
cv## [1] 9.92# INDICADORES DE FORMA #
# Asimetría
library(e1071)
asimetria <- skewness(Nivel_pH, type = 2)
asimetria## [1] -0.01665424#Curtosis
curtosis <- kurtosis(Nivel_pH)
curtosis## [1] -1.207522tabla_indicadores <- data.frame("Variable" =c("Tasa de concentración de 
                                              pH(%)"),
                                "Rango" = c("[1.1;9.99]"),
                                "X" = c(media),
                                "Me" = c(round(mediana,2)),
                                "Mo" = c("No hay 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 hay presencia de 
                                valores atipicos")
library(knitr)
kable(tabla_indicadores, align = 'c', caption = "Conclusiones de la 
variable concentración de pH en el agua")| Variable | Rango | X | Me | Mo | V | Sd | Cv | As | K | Valores.Atipicos | 
|---|---|---|---|---|---|---|---|---|---|---|
| Tasa de concentración de | ||||||||||
| pH(%) | [1.1;9.99] | 7.26 | 7.28 | No hay moda | 0.52 | 0.72 | 9.92 | -0.02 | -1.21 | No hay presencia de | 
| valores atipicos |