# Estadística Descriptiva: Nivel de Contaminación
# Autor: Camila Zambrano
# Fecha: 25/11/2025
# Carga de librerías
library(knitr)
library(kableExtra)

1. Carga de datos

getwd()
## [1] "C:/Users/Usuario/Documents/Camila/Estadística"
setwd("~/Camila/Estadística/R")

datos <- read.csv(
"china_water_pollution_data.csv",
header = TRUE,
sep = ";",
dec = ","
)

2. Extracción de la variable

# Extraer variable cualitativa ordinal
Nivel_contaminacion <- datos$Pollution_Level

3. Tabla de distribución de frecuencia

TDF_nivel_contaminacion <- data.frame(table(Nivel_contaminacion))
ni <- TDF_nivel_contaminacion$Freq
hi <- round((ni / sum(ni)) * 100, 2)
Nivel_contaminacion <- TDF_nivel_contaminacion$Nivel_contaminacion
TDF_nivel_contaminacion <- data.frame(Nivel_contaminacion, ni, hi)

# Agregar fila TOTAL
Sumatoria <- data.frame(
  Nivel_contaminacion = "TOTAL",
  ni = sum(ni),
  hi = 100
)

TDF_nivel_contaminacion_suma <- rbind(TDF_nivel_contaminacion, Sumatoria)

# Renombrar columnas para presentación
colnames(TDF_nivel_contaminacion_suma) <- c("Nivel de contaminación", "ni", "hi (%)")
colnames(TDF_nivel_contaminacion)      <- c("Nivel de contaminación", "ni", "hi (%)")

# Mostrar tabla con estilo
library(knitr)

library(kableExtra)

# Mostrar tabla con estilo
kable(
  TDF_nivel_contaminacion_suma,
  align = "c",
  caption = "Tabla N°5: Tabla de Distribución de Frecuencias de los Niveles de contaminación 
de estudio de contaminación del agua en China en el año 2023.") %>%
  kable_styling(
    full_width = FALSE,
    position = "center",
    bootstrap_options = c("striped", "hover", "condensed")
  )
Tabla N°5: Tabla de Distribución de Frecuencias de los Niveles de contaminación de estudio de contaminación del agua en China en el año 2023.
Nivel de contaminación ni hi (%)
Excellent 594 19.80
Good 622 20.73
Moderate 588 19.60
Poor 587 19.57
Very Poor 609 20.30
TOTAL 3000 100.00

4. Gráficas

4.1 Diagrama de Barras Local

barplot(
TDF_nivel_contaminacion$ni,
main = "Gráfica N°1: Distribución de frecuencia de los Niveles de contaminación
de estudio de contaminación del agua en China en el año 2023",
xlab = "Niveles de contaminación",
ylab = "Cantidad",
col = "skyblue",
cex.names = 0.8,
ylim = c(0, max(TDF_nivel_contaminacion$ni) * 1.2),
las = 3,
names.arg = TDF_nivel_contaminacion$`Nivel de contaminación`
)

4.2 Diagrama de Barras Porcentual Local

barplot(
TDF_nivel_contaminacion$`hi (%)`,
main = "Gráfica N°2: Distribución porcentual de los Niveles de contaminación
de estudio de contaminación del agua en China en el año 2023",
xlab = "Niveles de contaminación",
ylab = "Porcentaje",
col = "green",
ylim = c(0, max(TDF_nivel_contaminacion$`hi (%)`) * 1.2),
las = 1,
cex.names = 0.8,
names.arg = TDF_nivel_contaminacion$`Nivel de contaminación`
)

4.3 Diagrama de Barras Global

barplot(
TDF_nivel_contaminacion$ni,
main = "Gráfica N°3: Distribución de frecuencias de los Niveles de contaminación
de estudio de contaminación del agua en China en el año 2023",
xlab = "Niveles de contaminación",
ylab = "Cantidad",
col = "pink",
ylim = c(0, sum(TDF_nivel_contaminacion$ni)),
las = 1,
cex.names = 0.8,
names.arg = TDF_nivel_contaminacion$`Nivel de contaminación`
)

4.4 Diagrama de Barras Porcentual Global

barplot(
TDF_nivel_contaminacion$`hi (%)`,
main = "Gráfica N°4: Distribución porcentual de los Niveles de contaminación
de estudio de contaminación del agua en China en el año 2023",
xlab = "Niveles de contaminación",
ylab = "Porcentaje",
col = "skyblue",
ylim = c(0, 100),
las = 1,
cex.names = 0.8,
names.arg = TDF_nivel_contaminacion$`Nivel de contaminación`
)

4.5 Diagrama Circular

colores <- heat.colors(nrow(TDF_nivel_contaminacion))

pie(
TDF_nivel_contaminacion$`hi (%)`,
main = "Gráfica N°5: Distribución porcentual de los Niveles de contaminación
de estudio de contaminación del agua en China en el año 2023",
labels = paste0(TDF_nivel_contaminacion$`hi (%)`, "%"),
col = colores
)

legend(
"topright",
legend = TDF_nivel_contaminacion$`Nivel de contaminación`,
fill = colores,
cex = 0.8
)

5. Indicadores Estadísticos

# Moda

moda <- TDF_nivel_contaminacion$`Nivel de contaminación`[
which.max(TDF_nivel_contaminacion$ni)
]

moda
## [1] Good
## Levels: Excellent Good Moderate Poor Very Poor

6. Tabla de Indicadores

tabla_indicadores <- data.frame(
Variable = "Nivel de contaminación",
Rango = "-",
X = "-",
Me = "-",
Mo = as.character(moda),
V = "-",
Sd = "-",
Cv = "-",
As = "-",
K = "-",
`Valores Atipicos` = "No hay valores atípicos",
check.names = FALSE
)

kable(
tabla_indicadores,
align = "c",
caption = "Conclusiones de la variable Nivel de contaminación"
)
Conclusiones de la variable Nivel de contaminación
Variable Rango X Me Mo V Sd Cv As K Valores Atipicos
Nivel de contaminación - - - Good - - - - - No hay valores atípicos

7. Conclusión

La variable ordinal Nivel de contaminación fluctúa o se encuentra entre Very Poor y Excellent. En el análisis de tendencia central, no se identifica una mediana definida, debido a que la frecuencia acumulada no permite ubicar un valor central único dentro del orden ordinal de las categorías. Sin embargo, la moda corresponde al nivel Good, lo que indica que esta categoría es la que se presenta con mayor frecuencia en el estudio.