0. Librerías
# -------------------------
# Cargar librerías
# -------------------------
library(gt)
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
4. Tabla de distribución de frecuencia
4.1 Tabla general con Sturges
TDF_CWP_Completo <- rbind(
TDF_CWP,
data.frame(
Li = "Total",
Ls = " ",
MC = " ",
ni = sum(TDF_CWP$ni),
hi = 100,
Niasc = " ",
Nidsc = " ",
Hiasc = " ",
Hidsc = " "
)
)
# Generar Tabla 1 con gt
tabla_CWP <- TDF_CWP_Completo %>%
gt() %>%
tab_header(
title = md("*Tabla Nº1*"),
subtitle = md("**Distribución de frecuencias del porcentaje de madera en el estudio de la calidad de agua en Europa (1991-2017)**")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 3")
) %>%
tab_options(
table.border.top.color = "black",
table.border.bottom.color = "black",
column_labels.border.bottom.color = "black",
row.striping.include_table_body = TRUE
)
tabla_CWP
| Tabla Nº1 |
| Distribución de frecuencias del porcentaje de madera en el estudio de la calidad de agua en Europa (1991-2017) |
| Li |
Ls |
MC |
ni |
hi |
Niasc |
Nidsc |
Hiasc |
Hidsc |
| 0 |
1.1473 |
0.57 |
11663 |
58.63 |
11663 |
19893 |
58.63 |
100 |
| 1.1473 |
2.2947 |
1.72 |
3307 |
16.62 |
14970 |
8230 |
75.25 |
41.37 |
| 2.2947 |
3.442 |
2.87 |
665 |
3.34 |
15635 |
4923 |
78.59 |
24.75 |
| 3.442 |
4.5893 |
4.02 |
101 |
0.51 |
15736 |
4258 |
79.1 |
21.41 |
| 4.5893 |
5.7367 |
5.16 |
0 |
0.00 |
15736 |
4157 |
79.1 |
20.9 |
| 5.7367 |
6.884 |
6.31 |
0 |
0.00 |
15736 |
4157 |
79.1 |
20.9 |
| 6.884 |
8.0313 |
7.46 |
4130 |
20.76 |
19866 |
4157 |
99.86 |
20.9 |
| 8.0313 |
9.1787 |
8.61 |
0 |
0.00 |
19866 |
27 |
99.86 |
0.14 |
| 9.1787 |
10.326 |
9.75 |
0 |
0.00 |
19866 |
27 |
99.86 |
0.14 |
| 10.326 |
11.4733 |
10.9 |
0 |
0.00 |
19866 |
27 |
99.86 |
0.14 |
| 11.4733 |
12.6207 |
12.05 |
0 |
0.00 |
19866 |
27 |
99.86 |
0.14 |
| 12.6207 |
13.768 |
13.19 |
0 |
0.00 |
19866 |
27 |
99.86 |
0.14 |
| 13.768 |
14.9153 |
14.34 |
0 |
0.00 |
19866 |
27 |
99.86 |
0.14 |
| 14.9153 |
16.0627 |
15.49 |
0 |
0.00 |
19866 |
27 |
99.86 |
0.14 |
| 16.0627 |
17.21 |
16.64 |
27 |
0.14 |
19893 |
27 |
100 |
0.14 |
| Total |
|
|
19893 |
100.00 |
|
|
|
|
| Autor: Grupo 3 |
4.2 Tabla Simplificada
# =========================================================
# TABLA SIMPLIFICADA (Basada en el Histograma)
# =========================================================
histo_CWP_simp <- hist(
CWP,
breaks = 10,
plot = FALSE
)
# 2. Extraer los límites y marcas de clase del histograma
Li_simp <- histo_CWP_simp$breaks[1:(length(histo_CWP_simp$breaks) - 1)]
Ls_simp <- histo_CWP_simp$breaks[2:length(histo_CWP_simp$breaks)]
MC_simp <- round((Li_simp + Ls_simp) / 2, 2)
ni_simp <- histo_CWP_simp$counts
hi_simp <- round((ni_simp / sum(ni_simp)) * 100, 2)
# 3. Crear el data frame base simplificado
TDF_CWP_Simp_Base <- data.frame(
Li = round(Li_simp, 4),
Ls = round(Ls_simp, 4),
MC = MC_simp,
ni = ni_simp,
hi = hi_simp
)
# 4. Calcular frecuencias acumuladas para la tabla simplificada
TDF_CWP_Simp_Base$Niasc <- cumsum(TDF_CWP_Simp_Base$ni)
TDF_CWP_Simp_Base$Nidsc <- rev(cumsum(rev(TDF_CWP_Simp_Base$ni)))
TDF_CWP_Simp_Base$Hiasc <- round(cumsum(TDF_CWP_Simp_Base$hi), 2)
TDF_CWP_Simp_Base$Hidsc <- round(rev(cumsum(rev(TDF_CWP_Simp_Base$hi))), 2)
# 5. Agregar la fila de totales
TDF_CWP_Simplificada_Completa <- rbind(
TDF_CWP_Simp_Base,
data.frame(
Li = "Total",
Ls = " ",
MC = " ",
ni = sum(TDF_CWP_Simp_Base$ni),
hi = 100,
Niasc = " ",
Nidsc = " ",
Hiasc = " ",
Hidsc = " "
)
)
# 6. Generar la Tabla Simplificada con 'gt'
tabla_CWP_simplificada <- TDF_CWP_Simplificada_Completa %>%
gt() %>%
tab_header(
title = md("*Tabla Nº2*"),
subtitle = md("**Distribución de frecuencias simplificada del porcentaje de madera en el estudio de la calidad de agua en Europa (1991-2017)**")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 3")
) %>%
tab_options(
table.border.top.color = "black",
table.border.bottom.color = "black",
column_labels.border.bottom.color = "black",
row.striping.include_table_body = TRUE
)
tabla_CWP_simplificada
| Tabla Nº2 |
| Distribución de frecuencias simplificada del porcentaje de madera en el estudio de la calidad de agua en Europa (1991-2017) |
| Li |
Ls |
MC |
ni |
hi |
Niasc |
Nidsc |
Hiasc |
Hidsc |
| 0 |
2 |
1 |
14970 |
75.25 |
14970 |
19893 |
75.25 |
100 |
| 2 |
4 |
3 |
766 |
3.85 |
15736 |
4923 |
79.1 |
24.75 |
| 4 |
6 |
5 |
0 |
0.00 |
15736 |
4157 |
79.1 |
20.9 |
| 6 |
8 |
7 |
4130 |
20.76 |
19866 |
4157 |
99.86 |
20.9 |
| 8 |
10 |
9 |
0 |
0.00 |
19866 |
27 |
99.86 |
0.14 |
| 10 |
12 |
11 |
0 |
0.00 |
19866 |
27 |
99.86 |
0.14 |
| 12 |
14 |
13 |
0 |
0.00 |
19866 |
27 |
99.86 |
0.14 |
| 14 |
16 |
15 |
0 |
0.00 |
19866 |
27 |
99.86 |
0.14 |
| 16 |
18 |
17 |
27 |
0.14 |
19893 |
27 |
100 |
0.14 |
| Total |
|
|
19893 |
100.00 |
|
|
|
|
| Autor: Grupo 3 |
5. Gráficas
5.1 Histograma (ni)
# =========================================
# Histograma generado por RStudio
# =========================================
bp <- barplot(
TDF_CWP_Simp_Base$ni,
col = "limegreen",
main = "Gráfica Nº2: Distribución de frecuencias del porcentaje de madera en
el estudio de la calidad de agua en Europa (1991-2017)",
xlab = "Porcentaje de madera (%)",
ylab = "Cantidad",
space = 0,
ylim = c(0, max(TDF_CWP_Simp_Base$ni) * 1.2),
xaxt = "n"
)
puntos_corte_cwp <- c(Li_simp, tail(Ls_simp, 1))
axis(
side = 1,
at = seq_along(puntos_corte_cwp) - 1,
labels = round(puntos_corte_cwp, 2)
)

5.2 Histograma General (ni)
# ===========================================================
# Histograma con relación a la totalidad de los datos
# ===========================================================
bp <- barplot(
TDF_CWP_Simp_Base$ni,
col = "limegreen",
main = "Gráfica Nº2: Distribución de frecuencias del porcentaje de madera en
el estudio de la calidad de \nagua en Europa (1991-2017)",
xlab = "Porcentaje de madera (%)",
ylab = "Cantidad",
space = 0,
ylim = c(0, 20000),
xaxt = "n"
)
puntos_corte_cwp <- c(Li_simp, tail(Ls_simp, 1))
axis(
side = 1,
at = seq_along(puntos_corte_cwp) - 1,
labels = round(puntos_corte_cwp, 2)
)

5.3 Histograma Porcentual (hi)
# ======================================
# Histograma porcentual que genera RStudio
# ======================================
bp <- barplot(
TDF_CWP_Simp_Base$hi,
col = "forestgreen",
main = "Gráfica Nº3: Distribución porcentual de frecuencias del porcentaje de
madera en el estudio de la calidad de \nagua en Europa (1991-2017)",
xlab = "Porcentaje de madera (%)",
ylab = "Porcentaje (%)",
space = 0,
ylim = c(0, max(TDF_CWP_Simp_Base$hi) * 1.2),
xaxt = "n"
)
puntos_corte_cwp <- c(Li_simp, tail(Ls_simp, 1))
axis(
side = 1,
at = seq_along(puntos_corte_cwp) - 1,
labels = round(puntos_corte_cwp, 2)
)

5.4 Histograma Porcentual General (hi)
# ===========================================================
# Histograma porcentual con relación a la totalidad
# ===========================================================
bp <- barplot(
TDF_CWP_Simp_Base$hi,
col = "limegreen",
main = "Gráfica Nº4: Distribución porcentual de frecuencias del porcentaje de
madera en el estudio de la calidad de \nagua en Europa (1991-2017)",
xlab = "Porcentaje de madera (%)",
ylab = "Porcentaje (%)",
space = 0,
ylim = c(0, 100),
xaxt = "n"
)
puntos_corte_cwp <- c(Li_simp, tail(Ls_simp, 1))
axis(
side = 1,
at = seq_along(puntos_corte_cwp) - 1,
labels = round(puntos_corte_cwp, 2)
)

5.5 Polígono de frecuencias (hi)
bp <- barplot(
TDF_CWP_Simp_Base$hi,
col = "darkseagreen3",
main = "Gráfica Nº5: Polígono de frecuencia de la distribución porcentual
del porcentaje de madera en el estudio de la calidad
de agua en Europa (1991-2017)",
xlab = "Porcentaje de madera (%)",
ylab = "Porcentaje (%)",
space = 0,
names.arg = rep("", length(TDF_CWP_Simp_Base$hi)),
ylim = c(0, max(TDF_CWP_Simp_Base$hi) * 1.2),
xaxt = "n"
)
puntos_corte_cwp <- c(Li_simp, tail(Ls_simp, 1))
axis(
side = 1,
at = seq_along(puntos_corte_cwp) - 1,
labels = round(puntos_corte_cwp, 2)
)
# 4. Polígono de frecuencia superpuesto
lines(
bp,
TDF_CWP_Simp_Base$hi,
type = "o",
pch = 16,
lwd = 2,
col = "darkred"
)
# 5. Etiquetas de porcentaje en los puntos
text(
bp,
TDF_CWP_Simp_Base$hi,
labels = round(TDF_CWP_Simp_Base$hi, 2),
pos = 3,
cex = 0.8,
col = "black"
)

5.6 Boxplot
# =============================
# BOXPLOT CON VALORES ATÍPICOS
# =============================
boxplot(
CWP,
horizontal = TRUE,
col = "forestgreen",
main = "Gráfica Nº6: Diagrama de caja del porcentaje de madera en el estudio
de la calidad de agua en Europa (1991-2017)",
xlab = "Porcentaje de madera (%)"
)
points(
mean(CWP),
1,
pch = 19,
col = "red"
)
legend(
"topright",
legend = "Media",
pch = 19,
col = "red"
)

5.7 Ojiva ascendente y descendente (Ni)
# =========================
# OJIVAS CANTIDAD
# =========================
eje_x_asc <- c(min(TDF_CWP_Simp_Base$Li), TDF_CWP_Simp_Base$Ls)
y_asc_ni <- c(0, TDF_CWP_Simp_Base$Niasc)
eje_x_dsc <- c(TDF_CWP_Simp_Base$Li, max(TDF_CWP_Simp_Base$Ls))
y_dsc_ni <- c(TDF_CWP_Simp_Base$Nidsc, 0)
plot(
eje_x_dsc,
y_dsc_ni,
main = "Gráfica Nº7: Ojiva ascendente y descendente del porcentaje de madera
en el estudio de la calidad de agua en Europa (1991-2017)",
xlab = "Porcentaje de madera (%)",
ylab = "Frecuencia acumulada",
col = "red",
type = "o",
pch = 16,
lwd = 2,
xlim = c(min(eje_x_asc), max(eje_x_dsc)),
ylim = c(0, max(y_dsc_ni))
)
# 3. Superponer Ojiva Ascendente
lines(
eje_x_asc,
y_asc_ni,
col = "forestgreen",
type = "o",
pch = 16,
lwd = 2
)
# 4. Leyenda
legend(
"right",
legend = c("Ojiva descendente", "Ojiva ascendente"),
col = c("red", "forestgreen"),
pch = c(16, 16),
lty = 1,
bty = "n"
)

5.8 Ojiva ascendente y descendente (Hi)
# =========================
# OJIVAS PORCENTUALES
# =========================
eje_x_asc_p <- c(min(TDF_CWP_Simp_Base$Li), TDF_CWP_Simp_Base$Ls)
y_asc_hi <- c(0, TDF_CWP_Simp_Base$Hiasc)
eje_x_dsc_p <- c(TDF_CWP_Simp_Base$Li, max(TDF_CWP_Simp_Base$Ls))
y_dsc_hi <- c(TDF_CWP_Simp_Base$Hidsc, 0)
# 2. Graficar Ojiva Descendente
plot(
eje_x_dsc_p,
y_dsc_hi,
type = "o",
col = "red",
pch = 17,
lwd = 2,
main = "Gráfica Nº8: Ojiva ascendente y descendente del porcentaje de madera
en el estudio de la calidad de agua en Europa (1991-2017)",
xlab = "Porcentaje de madera (%)",
ylab = "Porcentaje acumulado (%)",
xlim = c(min(eje_x_asc_p), max(eje_x_dsc_p)),
ylim = c(0, 100)
)
# 3. Superponer Ojiva Ascendente
lines(
eje_x_asc_p,
y_asc_hi,
type = "o",
col = "limegreen",
pch = 16,
lwd = 2
)
grid()
# 4. Leyenda
legend(
"right",
legend = c("Ojiva Ascendente (%)", "Ojiva Descendente (%)"),
col = c("limegreen", "red"),
pch = c(16, 17),
lty = 1,
bty = "n"
)

6 Indicadores Estadísticos
6.1 Indicadores de Tendencia Central
# =========================
# INDICADORES ESTADISTICOS
# =========================
# Obtener valores atípicos según el criterio del boxplot
atipicos <- boxplot.stats(CWP)$out
n_atipicos <- length(atipicos)
# Rango de los valores atípicos y su conteo
if (n_atipicos > 0) {
rango_atipicos <- paste0("[", round(min(atipicos), 2), " ; ", round(max(atipicos), 2), "] (Valores: ", n_atipicos, ")")
} else {
rango_atipicos <- "No presenta valores atípicos"
}
media <- round(mean(CWP), 2)
mediana <- round(median(CWP), 2)
# Moda basada en el Intervalo Modal
fila_modal <- which.max(TDF_CWP_Simp_Base$ni)
moda_intervalar <- paste0(
"[", round(as.numeric(TDF_CWP_Simp_Base$Li[fila_modal]), 2),
" ; ", round(as.numeric(TDF_CWP_Simp_Base$Ls[fila_modal]), 2), "]"
)
6.2 Dispersión
varianza <- var(CWP)
desv_est <- sd(CWP)
cv <- round((desv_est / media) * 100, 2)
6.3 Asimetría
library(e1071)
asimetria <- skewness(CWP, type = 2)
curtosis <- kurtosis(CWP)
6.4 Tabla de Indicadores
# =========================
# TABLA RESUMEN FINAL
# =========================
rango_simplificado <- paste0("[", min(TDF_CWP_Simp_Base$Li), " ; ", max(TDF_CWP_Simp_Base$Ls), "]")
tabla_indicadores <- data.frame(
Variable = "Porcentaje de Madera (%)",
Rango = rango_simplificado,
X = media,
Me = mediana,
Mo = moda_intervalar,
V = round(varianza, 2),
Sd = round(desv_est, 2),
Cv = cv,
As = round(asimetria, 2),
K = round(curtosis, 2),
Valores_Atipicos = rango_atipicos
)
tabla_indicadores_gt <- tabla_indicadores %>%
gt() %>%
tab_header(
title = md("*Tabla Nº3*"),
subtitle = md("**Indicadores estadísticos de la variable porcentaje de madera en el estudio de la calidad de agua en Europa (1991-2017)**")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 3")
)
tabla_indicadores_gt
| Tabla Nº3 |
| Indicadores estadísticos de la variable porcentaje de madera en el estudio de la calidad de agua en Europa (1991-2017) |
| Variable |
Rango |
X |
Me |
Mo |
V |
Sd |
Cv |
As |
K |
Valores_Atipicos |
| Porcentaje de Madera (%) |
[0 ; 18] |
2.07 |
0 |
[0 ; 2] |
9.08 |
3.01 |
145.56 |
1.28 |
0.35 |
[7.6 ; 17.21] (Valores: 4157) |
| Autor: Grupo 3 |