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

1. Carga de datos

setwd("C:/Users/LENOVO/OneDrive/Escritorio/ESTADISTICA")
datos <- read.csv("china_water_pollution_data.csv", encoding = "UTF-8")
Sys.setlocale("LC_CTYPE", "Spanish_United States.utf8")
## [1] "Spanish_United States.utf8"

2. Extracción de la variable

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

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

3. Tabla de Distribución de Frecuencias Simples y Acumuladas

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

4.Gráficas

4.1 Diagrama de barras 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)

4.2 Digrama de barras Porcentual Local

barplot(hi,
        main = "Gráfica N°2: Distribución porcentual 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)

4.3 Diagrama de barras 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)

4.4 Diagrama de barras Porcentual 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)

5. Diagrama de caja

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

6. Ojivas

6.1 Diagrama de Ojiva Ascendente y Descendente (ni)

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)

6.2Graficar la ojiva ascendente (hi)

# 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)

6. INDICADORES ESTADISTICOS

6.1 Indicadores de posición

# MEDIA#MEDIA ARITMETICA
media <- round(mean(Mes_num), 0)
media
## [1] 6
# MODA
# MODA
max_frecuencia <- max(TDF_mes$Freq)
moda_mes <- TDF_mes$Mes[TDF_mes$Freq == max_frecuencia]
moda_mes <- as.character(moda_mes)


# MEDIANA
mediana <- median(Mes_num)
mediana
## [1] 6.5

6.2 Indicadores de Dispersión

# VARIANZA
varianza <- var(Mes_num)
varianza
## [1] 13
# DESVIACION ESTANDAR
sd_mes <- sd(Mes_num)
sd_mes
## [1] 3.605551
# COEFICIENTE DE VARIACION
cv <- round((sd_mes / media) * 100, 2)
cv
## [1] 60.09

6.3 Indicadores de Forma

# ASIMETRÍA
library(e1071)
## Warning: package 'e1071' was built under R version 4.5.2
asimetria <- skewness(Mes_num, type = 2)
asimetria
## [1] 0
# CURTOSIS
curtosis <- kurtosis(Mes_num)
curtosis
## [1] -1.501603

8. Tabla resumen de indicadores

tabla_indicadores <- data.frame(
  Variable = "Mes",
  Rango = "[1 ; 12]",
  X = round(media, 2),
  Me = round(mediana, 2),
  Mo = as.character(moda_mes),
  V = round(varianza, 2),
  Sd = round(sd_mes, 2),
  Cv = round(cv, 2),
  As = round(asimetria, 2),
  K = round(curtosis, 2),
  Valores_Atipicos = "No hay presencia de valores atípicos"
)

library(knitr)

kable(
  tabla_indicadores,
  align = "c",
  caption = "Tabla resumen de indicadores estadísticos de la variable Mes"
)
Tabla resumen de indicadores estadísticos de la variable Mes
Variable Rango X Me Mo V Sd Cv As K Valores_Atipicos
Mes [1 ; 12] 6 6.5 07 13 3.61 60.09 0 -1.5 No hay presencia de valores atípicos

9. Conclusiones

La variable Mes fluctúa entre 1 y 12, y sus valores se concentran alrededor de 6 , lo que indica que los datos se distribuyen de manera equilibrada a lo largo del año. La desviación estándar cercana a 4 evidencia un conjunto de valores heterogéneo, con una dispersión relativamente alta, coherente con la amplitud natural de la escala mensual. La distribución es simétrica, presenta una baja concentración en la parte central y no muestra presencia de valores atípicos. En consecuencia, el comportamiento de la variable Mes resulta adecuado para el análisis, ya que permite una representación temporal completa y uniforme del año.