UNIVERSIDAD CENTRAL DEL ECUADOR

#Facultad en Ingeniería en Geología, Minas, Petróleos y Ambiental**
#Ingeniería Ambiental**
#Fecha:** 15-05-2025


Carga de datos y tabla de frecuencias

# Cargar librerías
library(knitr)
library(kableExtra)
getwd()
## [1] "/cloud/project"
setwd("/cloud/project")
datos <- read.csv("water_pollution_disease.csv",header = TRUE,sep = ",",dec = ".")


#Extraccion variable Cuantitativa Discreta
Diarrea <- datos$Diarrheal.Cases.per.100.000.people

# Agrupar por intervalos
breaks <- seq(0, 500, by = 100) 
labels <- paste(head(breaks, -1), tail(breaks, -1) - 1, sep = "-") 
intervalos <- cut(Diarrea, breaks = breaks, include.lowest = TRUE, right = FALSE, labels = labels)
TDF_Diarrea <- data.frame(table(intervalos))
min <- min(Diarrea)
max <- max(Diarrea)



# Tabla de distribución de frecuencia

ni <- TDF_Diarrea$Freq
sum(ni)
## [1] 3000
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_Diarrea <- data.frame(TDF_Diarrea$intervalos,
                           ni,
                           round(hi * 100, 2),
                           Ni_asc,
                           Ni_desc,
                           round(Hi_asc * 100, 2),
                           round(Hi_desc * 100, 2))

colnames(TDF_Diarrea) <- c("Intervalos de diarrea","ni","hi(%)",
                            "Ni asc","Ni desc","Hi asc(%)","Hi desc(%)")
# crear de fila de totales
totales <- data.frame( Intervalos=" TOTAL ",
                       ni= sum(ni),
                       hi= sum(hi*100),
                       Ni_asc= "-",
                       Ni_des= "-",
                       Hi_asc= "-",
                       Hi_des= "-")
colnames(totales) <- c("Intervalos de diarrea","ni","hi(%)",
                       "Ni asc","Hi asc(%)","Ni desc","Hi desc(%)")

TDF_Diarrea_total <- rbind(TDF_Diarrea,totales)

library(knitr)
library(kableExtra)

kable(TDF_Diarrea_total, align = 'c',
      caption = "Tabla de Distribución de Frecuencias de casos de diarrea por cada 100.000 habitantes") %>%
  kable_styling(full_width = FALSE, position = "center",
                bootstrap_options = c("striped", "hover", "condensed"))
Tabla de Distribución de Frecuencias de casos de diarrea por cada 100.000 habitantes
Intervalos de diarrea ni hi(%) Ni asc Ni desc Hi asc(%) Hi desc(%)
0-99 587 19.57 587 3000 19.57 100
100-199 608 20.27 1195 2413 39.83 80.43
200-299 615 20.50 1810 1805 60.33 60.17
300-399 590 19.67 2400 1190 80 39.67
400-499 600 20.00 3000 600 100 20
TOTAL 3000 100.00
# GRAFICAS

# Diagrama de barrras local
barplot(ni,
        main="Gráfica N°1: Distribución por intervalos de casos de
      diarrea por cada 100.000 habitantes del estudio de
      contaminación del agua",
        xlab = "Casos de diarrea por cada 100.000 habitantes",
        ylab = "Cantidad",
        col = "skyblue",
        ylim = c(0,max(ni)),
        names.arg=TDF_Diarrea$`Intervalos de diarrea`,
        las=1,
        cex.names=0.8)

barplot(TDF_Diarrea$hi,
        main="Gráfica N°2: Distribución porcentual casos de diarrea 
        por cada 100.000 habitantes del estudio de contaminación del
        agua",
        xlab = "Casos de diarrea por cada 100.000 habitantes",
        ylab = "Porcentaje",
        col = "lightgreen",
        names.arg=TDF_Diarrea$`Intervalos de diarrea`,
        las=1,
        cex.names=0.8)

# Diagrama de barrras global
barplot(ni,
        main="Gráfica N°3: Distribución por intervalos de casos de 
        diarrea por cada 100.000 habitantes del estudio de
        contaminación del agua ",
        xlab = "Casos de diarrea por cada 100.000 habitantes",
        ylab = "Cantidad",
        col = "pink",
        ylim = c(0,3000),
        names.arg=TDF_Diarrea$`Intervalos de diarrea`,
        las=1,
        cex.names=0.8)

barplot(TDF_Diarrea$hi,
        main="Gráfica N°4: Distribución porcentual de casos de  
       diarrea por cada 100.000 habitantes del estudio de 
       contaminación del agua",
        xlab = "Casos de diarrea por cada 100.000 habitantes",
        ylab = "Porcentaje (%)",
        col = "skyblue",
        ylim = c(0,100),
        names.arg=TDF_Diarrea$`Intervalos de diarrea`,
        las=1,
        cex.names=0.8)

# Diagrama de Ojiva Ascendente y Descendente
x_pos <- 1:length(TDF_Diarrea$`Intervalos de diarrea`)
plot(x_pos ,Ni_desc,
     main = "Gráfica N°5:Ojivas Ascendentes y Descendentes de 
      frecuencias absolutas de casos de diarrea ",
     xlab = "Casos de diarrea por cada 100.000 habitantes ",
     ylab = "Cantidad",
     col = "orange",
     type = "p",
     lwd = 3,
     xaxt="n")
lines(x_pos,Ni_asc,
      col = "green",
      type = "p",
      lwd = 3)
axis(side = 1, at = x_pos, labels = TDF_Diarrea$`Intervalos de diarrea`, las = 1, cex.axis = 0.9)

# Diagrama de Ojiva Ascendente y Descendente Porcentual
x_por <- 1:length(TDF_Diarrea$hi)
plot(x_pos, Hi_desc * 100,
     main = "Gráfica N°6: Ojivas Ascendentes y Descendentes de
    frecuencias relativas de casos de diarrea ",
     xlab = " Casos de diarrea por cada 100.000 habitantes",
     ylab = "Porcentaje (%)",
     col = "red",
     type = "p",
     lwd = 2,
     xaxt="n")
lines(x_pos, Hi_asc * 100,
      col = "blue",
      type = "p",
      lwd = 3)
axis(side = 1, at = x_pos, labels = TDF_Diarrea$`Intervalos de diarrea`, las = 1, cex.axis = 0.9)

# Diagrama de Caja

boxplot(Diarrea,
        horizontal = TRUE,
        main = "Gráfica N°7: Distribución de frecuencia de casos de 
        diarrea por cada 100.000 habitantes del estudio de 
        contaminación del agua",
        xlab = " Casos de diarrea por cada 100.000 habitantes",
        col = "purple",
        pch = 1)

# INDICADORES ESTADISTICOS

# Indicadores de Tendencia Central

# Media aritmética
media <- round(mean(Diarrea), 2)
media
## [1] 249.78
# Moda
max_frecuencia <- max(TDF_Diarrea$ni)
moda <- TDF_Diarrea$`Intervalos de diarrea`[TDF_Diarrea$ni == max_frecuencia]
moda
## [1] 200-299
## Levels: 0-99 100-199 200-299 300-399 400-499
# Mediana
mediana <- median(Diarrea)
mediana
## [1] 248
# INDICADORES DE DISPERSIÓN #

# Varianza
varianza <- var(Diarrea)
varianza
## [1] 20768.14
# Desviación Estándar
sd <- sd(Diarrea)
sd
## [1] 144.1115
# Coeficiente de Variación
cv <- round((sd / media) * 100, 2)
cv
## [1] 57.7
# INDICADORES DE FORMA #

# Asimetría
library(e1071)
asimetria <- skewness(Diarrea, type = 2)
asimetria
## [1] 0.01165831
#Curtosis
curtosis <- kurtosis(Diarrea)
curtosis
## [1] -1.193617
tabla_indicadores <- data.frame("Variable" =c("Casos de diarrea por cada 100.000 habitantes"),
                                "Rango" = c("[0 ;499]"),
                                "X" = c(round(media,0)),
                                "Me" = c(round(mediana,2)),
                                "Mo" = c("No hay moda"),
                                "V" = c(round(varianza,0)),
                                "Sd" = c(round(sd,0)),
                                "Cv" = c(round(cv,0)),
                                "As" = c(round(asimetria,2)),
                                "K" = c(round(curtosis,2)),
                                "Valores Atipicos" = "No hay presencia de valores atípicos")
library(knitr)
kable(tabla_indicadores, align = 'c', 
      caption = "Conclusiones de la variable casos de diarrea por cada 100.000 habitantes que se llevo a cabo el estudio de contaminación del agua")
Conclusiones de la variable casos de diarrea por cada 100.000 habitantes que se llevo a cabo el estudio de contaminación del agua
Variable Rango X Me Mo V Sd Cv As K Valores.Atipicos
Casos de diarrea por cada 100.000 habitantes [0 ;499] 250 248 No hay moda 20768 144 58 0.01 -1.19 No hay presencia de valores atípicos