Tema: Estadística Descriptiva
Fecha: 23/11/2025
Autor: Grupo 1
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"
# Convertir la fecha correctamente
datos$Date <- as.Date(datos$Date)
# Extraer mes en número
datos$Month <- format(datos$Date, "%m")
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")
)
| 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
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)
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)
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)
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)
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
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)
# 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)
# 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
# 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
# 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
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"
)
| 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 |
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.