# Tema: Estadística Descriptiva
# Autor: Grupo 1
# Fecha: 25/11/2025

setwd("C:/Users/LENOVO/OneDrive/Escritorio/ESTADISTICA")
datos <- read.csv("china_water_pollution_data.csv")

# Convertir la fecha correctamente
datos$Date <- as.Date(datos$Date)

# Extraer mes en número
datos$Month <- format(datos$Date, "%m")

# Crear tabla de frecuencias del mes
Mes <- datos$Month
TDF_mes <- data.frame(table(Mes))

# Frecuencia absoluta
ni <- TDF_mes$Freq
N <- sum(ni)

# Frecuencia relativa %
hi <- round((ni / N) * 100, 2)

# Ajustar para asegurar EXACTAMENTE 100%
hi[length(hi)] <- 100 - sum(hi[-length(hi)])

# Acumuladas
Ni_asc <- cumsum(ni)
Ni_desc <- rev(cumsum(rev(ni)))

Hi_asc <- round(cumsum(hi), 2)
Hi_asc[length(Hi_asc)] <- 100   

Hi_desc <- round(rev(cumsum(rev(hi))), 2)
Hi_desc[1] <- 100               

# Tabla final 
Tabla_Final <- data.frame(
  Mes = TDF_mes$Mes,
  ni = ni,
  "hi(%)" = hi,
  "Ni asc" = Ni_asc,
  "Ni desc" = Ni_desc,
  "Hi asc(%)" = Hi_asc,
  "Hi desc(%)" = Hi_desc,
  check.names = FALSE
)

# Agregar fila de TOTAL
Total <- data.frame(
  Mes = "TOTAL",
  ni = N,
  "hi(%)" = 100,
  "Ni asc" = "",
  "Ni desc" = "",
  "Hi asc(%)" = "",
  "Hi desc(%)" = "",
  check.names = FALSE
)

Tabla_Final <- rbind(Tabla_Final, Total)

# Mostrar tabla bonita
library(knitr)
## Warning: package 'knitr' was built under R version 4.5.2
library(kableExtra)
## Warning: package 'kableExtra' was built under R version 4.5.2
kable(
  Tabla_Final,
  align = "c",
  caption = "Tabla Nº1: Tabla de Distribución de Frecuencias Simples y 
  Acumuladas del Mes de Contaminación del Agua en China (2023)"
) %>%
  kable_styling(
    full_width = FALSE,
    position = "center",
    bootstrap_options = c("striped", "hover", "condensed")
  )
Tabla Nº1: Tabla de Distribución de Frecuencias Simples y Acumuladas del Mes de Contaminación del Agua en China (2023)
Mes ni hi(%) Ni asc Ni desc Hi asc(%) Hi desc(%)
01 241 8.03 241 3000 8.03 100
02 226 7.53 467 2759 15.56 91.97
03 266 8.87 733 2533 24.43 84.44
04 232 7.73 965 2267 32.16 75.57
05 253 8.43 1218 2035 40.59 67.84
06 261 8.70 1479 1782 49.29 59.41
07 310 10.33 1789 1521 59.62 50.71
08 246 8.20 2035 1211 67.82 40.38
09 231 7.70 2266 965 75.52 32.18
10 258 8.60 2524 734 84.12 24.48
11 225 7.50 2749 476 91.62 15.88
12 251 8.38 3000 251 100 8.38
TOTAL 3000 100.00
# Tabla de frecuencias absolutas del mes
TDF_Mes <- data.frame(table(datos$Month))
ni_mes <- TDF_Mes$Freq

# Gráfico de barras - Frecuencia absoluta local
barplot(ni,
        main = "Gráfica N°1: Distribución por Mes de la Contaminación del 
        Agua en China (2023)",
        xlab = "Mes (01-12)",
        ylab = "Cantidad",
        col = "skyblue",
        ylim = c(0, max(ni)),
        names.arg = TDF_mes$Mes,  
        las = 2,
        cex.names = 0.8)

# Gráfico de barras - Porcentaje local
barplot(hi,
        main = "Gráfica N°2: Distribución porcentualor Mes de la 
        Contaminación del Agua en China (2023) ",
        xlab = "Mes (01-12)",
        ylab = "Porcentaje",
        col = "lightgreen",
        names.arg = TDF_mes$Mes,
        las = 2,
        cex.names = 0.8)

# Gráfico de barras - Frecuencia absoluta global
barplot(ni,
        main = "Gráfica N°3: Distribución por Mes de la Contaminación del 
        Agua en China (2023)",
        xlab = "Mes (01-12)",
        ylab = "Cantidad",
        col = "skyblue",
        ylim = c(0,3000),
        names.arg = TDF_mes$Mes,  
        cex.names = 0.8)

# Gráfico de barras - Porcentaje global
barplot(hi,
        main = "Gráfica N°4: Distribución porcentual por Mes de la 
        Contaminación del Agua en China (2023)",
        xlab = "Mes (01-12)",
        ylab = "Porcentaje ",
        col = "lightgreen",
        ylim = c(0,100),
        names.arg = TDF_mes$Mes,
        las = 2,
        cex.names = 0.8)

#Diagrama de caja y bigotes
Mes_num <- as.numeric(as.character(TDF_mes$Mes))
boxplot(Mes_num,
        horizontal = TRUE,
        main = "Gráfica N°5: Distribución de Frecuencias Simples y Acumuladas 
        del Mes de Contaminación del Agua en China (2023)",
        xlab = "Mes",
        col = "darkred",
        pch = 1)

summary(Mes_num)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1.00    3.75    6.50    6.50    9.25   12.00
# Diagrama de Ojiva Ascendente y Descendente
x_pos <- 1:length(TDF_mes$Mes)
plot(
  x_pos, Ni_desc,
  main = "Gráfica N°6: Distribución de Frecuencias Acumuladas Ascendentes y 
  Descendentes del Mes de Contaminación del Agua en China (2023)",
  xlab = "Mes",
  ylab = "Cantidad",
  col = "orange",
  type = "p",      # SOLO puntos
  lwd = 3,
  xaxt = "n"
)

# Ojiva ascendente (solo puntos)
points(
  x_pos, Ni_asc,
  col = "green",
  type = "p",
  lwd = 3
)

# Nombres en el eje X, horizontales
axis(
  side = 1,
  at = x_pos,
  labels = TDF_mes$Mes,
  las = 1,
  cex.axis = 0.9)

legend(
  "top",
  legend = c("Ojiva descendente", "Ojiva ascendente"),
  col = c("orange", "green"),
  pch = 2,
  cex = 0.9,
  horiz = TRUE)

#Graficar la ojiva ascendente (Hi_asc/dsc) 

# Ojiva ascendente
plot(
  x = 1:length(TDF_mes$Mes),
  y = Hi_asc,
  type = "p",
  col = "green",
  xlab = "Mes",
  ylab = "Porcentaje acumulado",
  main = "Gráfica Nº7:Distribución Porcentual Acumulada Ascendente 
  y Descendente del Mes de Contaminación del Agua en China (2023)",
  xaxt = "n")

axis(
  side = 1,
  at = 1:length(TDF_mes$Mes),
  labels = TDF_mes$Mes,
  las = 1)

# Ojiva descendente
points(
  x = 1:length(TDF_mes$Mes),
  y = Hi_desc,
  type = "p",
  col = "orange")

# Leyenda 
legend("top",
  legend = c("Ojiva descendente", "Ojiva ascendente"),
  col = c("green", "orange"),
  pch = 1,
  cex = 0.8)