#Tema: Estadística Descriptiva
#Fecha: 23/11/2025
#Autor:Anahi Sosa
#Carga de librerias
library(knitr)
library(kableExtra)

#Carga de datos
getwd()
## [1] "/cloud/project"
setwd("/cloud/project")
datos<- read.csv("china_water_pollution_data.csv",header = TRUE, sep = ",", dec = ".")
#Extracción Variable Cuantitativa Discreta
Recuento_coliformes<-datos$Coliform_Count_CFU_100mL
# Valores mínimos y máximos
min_val <- floor(min(Recuento_coliformes)/10)*10
max_val <- ceiling(max(Recuento_coliformes)/10)*10

# Crear intervalos adecuados
breaks <- seq(min_val, max_val, by = 10)
labels <- paste(head(breaks, -1), tail(breaks, -1), sep = "-")

intervalos <- cut(Recuento_coliformes,
                  breaks = breaks,
                  include.lowest = TRUE,
                  right = FALSE,
                  labels = labels)

# Tabla de frecuencia
TDF <- data.frame(table(intervalos))

ni <- TDF$Freq
hi <- ni / sum(ni)

# Frecuencias acumuladas
Ni_asc  <- cumsum(ni)
Ni_desc <- rev(cumsum(rev(ni)))
Hi_asc  <- round(cumsum(hi) * 100, 2)
Hi_desc <- round(rev(cumsum(rev(hi))) * 100, 2)

# Construcción de la tabla
TDF_Recuento_coliformes <- data.frame(
  "Intervalos_recuento_coliformes" = TDF$intervalos,
  "ni" = ni,
  "`hi (%)`" = round(hi * 100, 2),
  "Niasc" = Ni_asc,
  "Nidesc" = Ni_desc,
  "`Hi asc (%)`" = Hi_asc,
  "`Hi desc (%)`" = Hi_desc
)
colnames(TDF_Recuento_coliformes) <- c("Intervalos de recuento de coliformes","ni","hi(%)",
                            "Ni asc","Ni desc","Hi asc(%)","Hi desc(%)")

# Fila de totales (MISMO ORDEN MISMOS NOMBRES)
totales <- data.frame(
  "Intervalos_recuento_coliformes" = "TOTAL",
  "ni" = sum(ni),
  "`hi (%)`" = round(sum(hi*100), 2),
  "Niasc" = "-",
  "Nidesc" = "-",
  "`Hi asc (%)`" = "-",
  "`Hi desc (%)`" = "-"
)
colnames(totales) <- c("Intervalos de recuento de coliformes","ni","hi(%)",
                            "Ni asc","Ni desc","Hi asc(%)","Hi desc(%)")
TDF_Recuento_coliformes <- rbind(TDF_Recuento_coliformes, totales)

# Mostrar tabla
kable(TDF_Recuento_coliformes, align = 'c',
      caption = "Tabla N°1. Distribución de Frecuencias del recuento de coliformes 
      (UFC por 100 mL)") %>%
  kable_styling(full_width = FALSE, position = "center",
                bootstrap_options = c("striped", "hover", "condensed"))
Tabla N°1. Distribución de Frecuencias del recuento de coliformes (UFC por 100 mL)
Intervalos de recuento de coliformes ni hi(%) Ni asc Ni desc Hi asc(%) Hi desc(%)
60-70 2 0.07 2 3000 0.07 100
70-80 50 1.67 52 2998 1.73 99.93
80-90 386 12.87 438 2948 14.6 98.27
90-100 1043 34.77 1481 2562 49.37 85.4
100-110 1008 33.60 2489 1519 82.97 50.63
110-120 433 14.43 2922 511 97.4 17.03
120-130 73 2.43 2995 78 99.83 2.6
130-140 5 0.17 3000 5 100 0.17
TOTAL 3000 100.00
# GRAFICAS

# Diagrama de barrras local
TDF_sin_total <- TDF_Recuento_coliformes[1:8, ]
grafica <- barplot(
  ni,
  main = "Gráfica N°1: Distribución por intervalos de recuento de coliformes
  (UFC 100mL) de estudio de contaminación del agua en China 
  en el año 2023",
  xlab = "Recuento de coliformes (UFC 100mL)",
  ylab = "Cantidad",
  col = "skyblue",
  ylim = c(0, max(ni)),
  names.arg = TDF_sin_total$`Intervalos de recuento de coliformes`,
  las = 2,
  cex.names = 0.63
)

mtext("*Los límites superiores de los intervalos son abiertos",
      side = 1, line = 5, adj = 0, cex = 0.7)

hi_porcentaje <- TDF_sin_total$`hi(%)`

# Gráfico
barplot(
  hi_porcentaje,
  main = "Gráfica N°2: Distribución porcentual de recuento de coliformes
  (UFC 100mL) de estudio de contaminación del agua en China 
  en el año 2023",
  xlab = "Recuento de coliformes (UFC 100mL)",
  ylab = "Porcentaje",
  col = "skyblue",
  names.arg = TDF_sin_total$`Intervalos de recuento de coliformes`,
  las = 2,
  cex.names = 0.63
)

# Diagrama de barrras global
TDF_sin_total <- TDF_Recuento_coliformes[1:8, ]
barplot(ni,
        main="Gráfica N°3: Distribución por intervalos de recuento de coliformes
              (UFC 100mL) de estudio de contaminación del agua en China 
        en el año 2023",
        xlab = "Recuento de coliformes (UFC 100mL) ",
        ylab = "Cantidad",
        col = "skyblue",
        ylim = c(0,3000),
        names.arg = TDF_sin_total$`Intervalos de recuento de coliformes`,
        las=2,
        cex.names=0.63)

hi_porcentaje <- TDF_sin_total$`hi(%)`
barplot(hi_porcentaje,
        main="Gráfica N°4: Distribución porcentual de recuento de coliformes
            (UFC 100mL) de estudio de contaminación del agua en China
        en el año 2023",
        xlab = "Recuento de coliformes (UFC 100mL)",
        ylab = "Porcentaje (%)",
        col = "skyblue",
        ylim = c(0,100),
        names.arg = TDF_sin_total$`Intervalos de recuento de coliformes`,
        las=2,
        cex.names=0.63)