``` r
# LIBRERÍAS
# -----------------------------
library(knitr)
library(kableExtra)
library(e1071)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following object is masked from 'package:kableExtra':
##
## group_rows
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(gt)
# -----------------------------
# CARGA DE DATOS
# -----------------------------
datos <- read.csv("china_water_pollution_data.csv",
header = TRUE, sep = ",", dec = ".")
Temperatura <- na.omit(datos$Water_Temperature_C)
# -----------------------------
# TABLA DE FRECUENCIAS (K = 8)
# -----------------------------
K <- 8
Hist_Temperatura <- hist(Temperatura, breaks = K, plot = FALSE)
Li <- Hist_Temperatura$breaks[-length(Hist_Temperatura$breaks)]
Ls <- Hist_Temperatura$breaks[-1]
ni <- Hist_Temperatura$counts
Mc <- Hist_Temperatura$mids
n <- sum(ni)
hi <- (ni / n) * 100
Ni_asc <- cumsum(ni)
Hi_asc <- cumsum(hi)
Ni_desc <- rev(cumsum(rev(ni)))
Hi_desc <- rev(cumsum(rev(hi)))
TDFTemperatura <- data.frame(
`Lim inf` = round(Li, 2),
`Lim sup` = round(Ls, 2),
MC = round(Mc, 2),
ni = ni,
`hi(%)` = round(hi, 2),
`Ni asc` = Ni_asc,
`Ni desc` = Ni_desc,
`Hi asc(%)` = round(Hi_asc, 2),
`Hi desc(%)` = round(Hi_desc, 2),
check.names = FALSE
)
# Fila TOTAL
totales <- as.data.frame(as.list(rep("-", ncol(TDFTemperatura))),
stringsAsFactors = FALSE)
names(totales) <- names(TDFTemperatura)
totales[1, "Lim inf"] <- "TOTAL"
totales[1, "ni"] <- sum(TDFTemperatura$ni)
totales[1, "hi(%)"] <- 100
TDFTemperatura_total <- rbind(TDFTemperatura, totales)
# ============================================================
# TABLA N°1
# ============================================================
kable(TDFTemperatura_total, align = "c",
caption = "Tabla N°1: Tabla de Frecuencias de la Temperatura del Agua en el 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°1: Tabla de Frecuencias de la Temperatura del Agua en el estudio
de contaminación del agua en China en el año 2023
|
Lim inf
|
Lim sup
|
MC
|
ni
|
hi(%)
|
Ni asc
|
Ni desc
|
Hi asc(%)
|
Hi desc(%)
|
|
0
|
5
|
2.5
|
5
|
0.17
|
5
|
3000
|
0.17
|
100
|
|
5
|
10
|
7.5
|
52
|
1.73
|
57
|
2995
|
1.9
|
99.83
|
|
10
|
15
|
12.5
|
392
|
13.07
|
449
|
2943
|
14.97
|
98.1
|
|
15
|
20
|
17.5
|
1061
|
35.37
|
1510
|
2551
|
50.33
|
85.03
|
|
20
|
25
|
22.5
|
1008
|
33.6
|
2518
|
1490
|
83.93
|
49.67
|
|
25
|
30
|
27.5
|
411
|
13.7
|
2929
|
482
|
97.63
|
16.07
|
|
30
|
35
|
32.5
|
66
|
2.2
|
2995
|
71
|
99.83
|
2.37
|
|
35
|
40
|
37.5
|
5
|
0.17
|
3000
|
5
|
100
|
0.17
|
|
TOTAL
|
|
|
3000
|
100
|
|
|
|
|
# ============================================================
# GRÁFICA N°1
# ============================================================
hist(Temperatura, breaks = Hist_Temperatura$breaks,
main = "Gráfica N°1: Distribución de la Temperatura del Agua\nen el estudio de contaminación del agua en China en el año 2023",
xlab = "Temperatura del Agua (°C)",
ylab = "Cantidad",
ylim = c(0, max(ni) + 50),
col = "pink",
xaxt = "n")
axis(1, at = Hist_Temperatura$breaks,
labels = round(Hist_Temperatura$breaks, 1), las = 1)

# ============================================================
# TABLA N°2
# ============================================================
kable(TDFTemperatura_total, align = "c",
caption = "Tabla N°2: Tabla de Frecuencias de la Temperatura del Agua posterior a la representación gráfica en el 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°2: Tabla de Frecuencias de la Temperatura del Agua posterior a
la representación gráfica en el estudio de contaminación del agua en
China en el año 2023
|
Lim inf
|
Lim sup
|
MC
|
ni
|
hi(%)
|
Ni asc
|
Ni desc
|
Hi asc(%)
|
Hi desc(%)
|
|
0
|
5
|
2.5
|
5
|
0.17
|
5
|
3000
|
0.17
|
100
|
|
5
|
10
|
7.5
|
52
|
1.73
|
57
|
2995
|
1.9
|
99.83
|
|
10
|
15
|
12.5
|
392
|
13.07
|
449
|
2943
|
14.97
|
98.1
|
|
15
|
20
|
17.5
|
1061
|
35.37
|
1510
|
2551
|
50.33
|
85.03
|
|
20
|
25
|
22.5
|
1008
|
33.6
|
2518
|
1490
|
83.93
|
49.67
|
|
25
|
30
|
27.5
|
411
|
13.7
|
2929
|
482
|
97.63
|
16.07
|
|
30
|
35
|
32.5
|
66
|
2.2
|
2995
|
71
|
99.83
|
2.37
|
|
35
|
40
|
37.5
|
5
|
0.17
|
3000
|
5
|
100
|
0.17
|
|
TOTAL
|
|
|
3000
|
100
|
|
|
|
|
# ============================================================
# GRÁFICA N°2
# ============================================================
hist(Temperatura, breaks = Hist_Temperatura$breaks,
main = "Gráfica N°2: Distribución global de la Temperatura del Agua\nen el estudio de contaminación del agua en China en el año 2023",
xlab = "Temperatura del Agua (°C)",
ylab = "Cantidad",
col = "pink",
xaxt = "n")
axis(1, at = Hist_Temperatura$breaks,
labels = round(Hist_Temperatura$breaks, 1), las = 1)

# ============================================================
# GRÁFICA N°3
# ============================================================
barplot(TDFTemperatura$`hi(%)`,
space = 0,
col = "skyblue",
main = "Gráfica N°3: Distribución porcentual de la Temperatura del Agua\nen el estudio de contaminación del agua en China en el año 2023",
xlab = "Temperatura del Agua (°C)",
ylab = "Porcentaje (%)",
names.arg = round(TDFTemperatura$MC),
ylim = c(0, max(TDFTemperatura$`hi(%)`) + 5))

# ============================================================
# GRÁFICA N°4
# ============================================================
hist(Temperatura, breaks = Hist_Temperatura$breaks,
main = "Gráfica N°4: Distribución local de la Temperatura del Agua\nen el estudio de contaminación del agua en China en el año 2023",
xlab = "Temperatura del Agua (°C)",
ylab = "Cantidad",
col = "purple",
xaxt = "n")
axis(1, at = Hist_Temperatura$breaks,
labels = round(Hist_Temperatura$breaks, 1), las = 1)

# ============================================================
# GRÁFICA N°5
# ============================================================
barplot(TDFTemperatura$`hi(%)`,
space = 0,
col = "lightblue",
main = "Gráfica N°5: Distribución porcentual de la Temperatura del Agua\nen el estudio de contaminación del agua en China en el año 2023",
xlab = "Temperatura del Agua (°C)",
ylab = "Porcentaje (%)",
names.arg = round(TDFTemperatura$MC),
ylim = c(0, max(TDFTemperatura$`hi(%)`) + 5))

# ============================================================
# GRÁFICA N°6
# ============================================================
plot(Li, Ni_asc, type = "o",
main = "Gráfica N°6: Distribución de frecuencias acumuladas de la Temperatura del Agua\nen el estudio de contaminación del agua en China en el año 2023",
xlab = "Temperatura del Agua (°C)",
ylab = "Frecuencia acumulada",
col = "orange",
xaxt = "n")
lines(Ls, Ni_desc, col = "green", type = "o")
axis(1, at = Li, labels = round(Li,1), las = 1)

# ============================================================
# GRÁFICA N°7
# ============================================================
plot(Li, Hi_desc, type = "o",
main = "Gráfica N°7: Distribución porcentual acumulada de la Temperatura del Agua\nen el estudio de contaminación del agua en China en el año 2023",
xlab = "Temperatura del Agua (°C)",
ylab = "Porcentaje acumulado (%)",
col = "red",
xaxt = "n")
lines(Ls, Hi_asc, col = "blue", type = "o")
axis(1, at = Li, labels = round(Li,1), las = 1)

# ============================================================
# GRÁFICA N°8
# ============================================================
boxplot(Temperatura, horizontal = TRUE,
main = "Gráfica N°8: Diagrama de caja de la Temperatura del Agua\nen el estudio de contaminación del agua en China en el año 2023",
xlab = "Temperatura del Agua (°C)",
col = "purple")

# ============================================================
# TABLA N°3: INDICADORES ESTADÍSTICOS
# ============================================================
media <- round(mean(Temperatura), 2)
mediana <- round(median(Temperatura), 2)
varianza <- round(var(Temperatura), 2)
sd_temp <- round(sd(Temperatura), 2)
cv <- round((sd(Temperatura) / mean(Temperatura)) * 100, 2)
asim <- round(skewness(Temperatura, type = 2), 2)
curt <- round(kurtosis(Temperatura), 2)
max_frec <- max(TDFTemperatura$ni)
moda_vals <- TDFTemperatura$MC[TDFTemperatura$ni == max_frec]
Mo_txt <- paste(round(moda_vals, 2), collapse = ", ")
out <- boxplot.stats(Temperatura)$out
val_atip <- ifelse(length(out) == 0,
"No hay presencia de valores atípicos",
paste("Hay", length(out), "valores atípicos"))
tabla_indicadores <- data.frame(
Variable = "Temperatura del Agua (°C)",
Rango = paste0("[", round(min(Temperatura),2), " ; ", round(max(Temperatura),2), "]"),
X = media,
Me = mediana,
Mo = Mo_txt,
V = varianza,
Sd = sd_temp,
Cv = cv,
As = asim,
K = curt,
`Valores Atípicos` = val_atip
)
kable(tabla_indicadores, align = "c",
caption = "Tabla N°3: Indicadores estadísticos de la Temperatura del Agua en el 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°3: Indicadores estadísticos de la Temperatura del Agua en el
estudio de contaminación del agua en China en el año 2023
|
Variable
|
Rango
|
X
|
Me
|
Mo
|
V
|
Sd
|
Cv
|
As
|
K
|
Valores.Atípicos
|
|
Temperatura del Agua (°C)
|
[3.39 ; 36.77]
|
20.05
|
19.98
|
17.5
|
24.24
|
4.92
|
24.55
|
0.04
|
0.04
|
Hay 29 valores atípicos
|