0. Librerías
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
library(gt)
library(e1071)
3. Tabla de distribución de frecuencias
3.1 Tabla de frecuencias
# -------------------------
# Tabla de frecuencias
# -------------------------
tabla_freq <- as.data.frame(
table(Densidad)
)
# Renombrar columnas
colnames(tabla_freq) <- c(
"Densidad",
"ni"
)
# Frecuencia relativa (hi)
tabla_freq$hi <- round(
(tabla_freq$ni / sum(tabla_freq$ni)) * 100,
2
)
# Frecuencias acumuladas ascendentes (Corregido para dar exactamente 100)
tabla_freq$Ni_asc <- cumsum(tabla_freq$ni)
tabla_freq$Hi_asc <- round(
(tabla_freq$Ni_asc / sum(tabla_freq$ni)) * 100,
2
)
# Frecuencias acumuladas descendentes (Corregido para dar exactamente 100)
tabla_freq$Ni_dsc <- rev(cumsum(rev(tabla_freq$ni)))
tabla_freq$Hi_dsc <- round(
(tabla_freq$Ni_dsc / sum(tabla_freq$ni)) * 100,
2
)
# -------------------------
# Agregar fila de totales
# -------------------------
fila_total <- data.frame(
Densidad = "TOTAL",
ni = sum(tabla_freq$ni),
hi = 100,
Ni_asc = "",
Hi_asc = "",
Ni_dsc = "",
Hi_dsc = ""
)
tabla_final <- rbind(
tabla_freq,
fila_total
)
# -------------------------
# Tabla GT
# -------------------------
tabla_gt <- tabla_final %>%
gt() %>%
tab_header(
title = md("**Tabla N°1**"),
subtitle = md(
"**Distribución de frecuencias de la densidad de población en el estudio de la calidad de agua en Europa (1991-2017)**"
)
) %>%
cols_label(
Densidad = "Densidad (hab/km²)",
ni = "ni",
hi = "hi (%)",
Ni_asc = "Ni ↑",
Hi_asc = "Hi ↑ (%)",
Ni_dsc = "Ni ↓",
Hi_dsc = "Hi ↓ (%)"
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(
rows = Densidad == "TOTAL"
)
) %>%
opt_row_striping()
tabla_gt
| Tabla N°1 |
| Distribución de frecuencias de la densidad de población en el estudio de la calidad de agua en Europa (1991-2017) |
| Densidad (hab/km²) |
ni |
hi (%) |
Ni ↑ |
Hi ↑ (%) |
Ni ↓ |
Hi ↓ (%) |
| 15 |
27 |
0.14 |
27 |
0.14 |
19893 |
100 |
| 18 |
355 |
1.78 |
382 |
1.92 |
19866 |
99.86 |
| 25 |
171 |
0.86 |
553 |
2.78 |
19511 |
98.08 |
| 31 |
82 |
0.41 |
635 |
3.19 |
19340 |
97.22 |
| 45 |
228 |
1.15 |
863 |
4.34 |
19258 |
96.81 |
| 47 |
5 |
0.03 |
868 |
4.36 |
19030 |
95.66 |
| 65 |
322 |
1.62 |
1190 |
5.98 |
19025 |
95.64 |
| 71 |
44 |
0.22 |
1234 |
6.2 |
18703 |
94.02 |
| 73 |
19 |
0.10 |
1253 |
6.3 |
18659 |
93.8 |
| 77 |
3 |
0.02 |
1256 |
6.31 |
18640 |
93.7 |
| 80 |
129 |
0.65 |
1385 |
6.96 |
18637 |
93.69 |
| 85 |
117 |
0.59 |
1502 |
7.55 |
18508 |
93.04 |
| 94 |
3141 |
15.79 |
4643 |
23.34 |
18391 |
92.45 |
| 107 |
91 |
0.46 |
4734 |
23.8 |
15250 |
76.66 |
| 112 |
35 |
0.18 |
4769 |
23.97 |
15159 |
76.2 |
| 122 |
9661 |
48.56 |
14430 |
72.54 |
15124 |
76.03 |
| 124 |
1 |
0.01 |
14431 |
72.54 |
5463 |
27.46 |
| 138 |
561 |
2.82 |
14992 |
75.36 |
5462 |
27.46 |
| 205 |
101 |
0.51 |
15093 |
75.87 |
4901 |
24.64 |
| 215 |
22 |
0.11 |
15115 |
75.98 |
4800 |
24.13 |
| 237 |
541 |
2.72 |
15656 |
78.7 |
4778 |
24.02 |
| 250 |
15 |
0.08 |
15671 |
78.78 |
4237 |
21.3 |
| 275 |
3957 |
19.89 |
19628 |
98.67 |
4222 |
21.22 |
| 377 |
261 |
1.31 |
19889 |
99.98 |
265 |
1.33 |
| 511 |
4 |
0.02 |
19893 |
100 |
4 |
0.02 |
| TOTAL |
19893 |
100.00 |
|
|
|
|
3.2 Tabla simplificada de frecuencias
# -------------------------
# Tabla resumida (10 categorías con mayor frecuencia)
# -------------------------
tabla_freq_resumida_resumida <- tabla_freq %>%
arrange(desc(ni)) %>%
slice(1:10) %>%
arrange(as.numeric(as.character(Densidad)))
# Re-calcular frecuencia relativa para estas categorías principales
tabla_freq_resumida_resumida$hi <- round(
(tabla_freq_resumida_resumida$ni / sum(tabla_freq_resumida_resumida$ni)) * 100,
2
)
# Frecuencias acumuladas ascendentes (Corregido para dar exactamente 100)
tabla_freq_resumida_resumida$Ni_asc <- cumsum(tabla_freq_resumida_resumida$ni)
tabla_freq_resumida_resumida$Hi_asc <- round(
(tabla_freq_resumida_resumida$Ni_asc / sum(tabla_freq_resumida_resumida$ni)) * 100,
2
)
# Frecuencias acumuladas descendentes (Corregido para dar exactamente 100)
tabla_freq_resumida_resumida$Ni_dsc <- rev(cumsum(rev(tabla_freq_resumida_resumida$ni)))
tabla_freq_resumida_resumida$Hi_dsc <- round(
(tabla_freq_resumida_resumida$Ni_dsc / sum(tabla_freq_resumida_resumida$ni)) * 100,
2
)
# -------------------------
# Agregar fila TOTAL
# -------------------------
fila_total_resumida <- data.frame(
Densidad = "TOTAL",
ni = sum(tabla_freq_resumida_resumida$ni),
hi = 100,
Ni_asc = "",
Hi_asc = "",
Ni_dsc = "",
Hi_dsc = ""
)
tabla_final_resumida <- rbind(
tabla_freq_resumida_resumida,
fila_total_resumida
)
# -------------------------
# Tabla GT
# -------------------------
tabla_gt_resumida <- tabla_final_resumida %>%
gt() %>%
tab_header(
title = md("**Tabla N°2**"),
subtitle = md(
"**Distribución resumida de frecuencias de la densidad de población en el estudio de la calidad del agua en Europa (1991-2017)**"
)
) %>%
cols_label(
Densidad = "Densidad (hab/km²)",
ni = "ni",
hi = "hi (%)",
Ni_asc = "Ni ↑",
Hi_asc = "Hi ↑ (%)",
Ni_dsc = "Ni ↓",
Hi_dsc = "Hi ↓ (%)"
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(
rows = Densidad == "TOTAL"
)
) %>%
opt_row_striping()
tabla_gt_resumida
| Tabla N°2 |
| Distribución resumida de frecuencias de la densidad de población en el estudio de la calidad del agua en Europa (1991-2017) |
| Densidad (hab/km²) |
ni |
hi (%) |
Ni ↑ |
Hi ↑ (%) |
Ni ↓ |
Hi ↓ (%) |
| 18 |
355 |
1.85 |
355 |
1.85 |
19198 |
100 |
| 25 |
171 |
0.89 |
526 |
2.74 |
18843 |
98.15 |
| 45 |
228 |
1.19 |
754 |
3.93 |
18672 |
97.26 |
| 65 |
322 |
1.68 |
1076 |
5.6 |
18444 |
96.07 |
| 94 |
3141 |
16.36 |
4217 |
21.97 |
18122 |
94.4 |
| 122 |
9661 |
50.32 |
13878 |
72.29 |
14981 |
78.03 |
| 138 |
561 |
2.92 |
14439 |
75.21 |
5320 |
27.71 |
| 237 |
541 |
2.82 |
14980 |
78.03 |
4759 |
24.79 |
| 275 |
3957 |
20.61 |
18937 |
98.64 |
4218 |
21.97 |
| 377 |
261 |
1.36 |
19198 |
100 |
261 |
1.36 |
| TOTAL |
19198 |
100.00 |
|
|
|
|
4 Gráficas
4.1 Histograma (ni)
# =========================
# HISTOGRAMA (ni)
# =========================
barplot(
tabla_freq_resumida_resumida$ni,
main = "Gráfica N°1: Distribución de la densidad de población\nen el estudio de la calidad de agua en Europa (1991-2017)",
xlab = "Densidad de población (hab/km²)",
ylab = "Cantidad",
col = "skyblue",
ylim = c(0, max(tabla_freq_resumida_resumida$ni) * 1.1),
names.arg = tabla_freq_resumida_resumida$Densidad,
las = 2,
cex.names = 0.8
)

4.2 Histograma General (ni)
# =========================
# HISTOGRAMA GENERAL (ni)
# =========================
barplot(
tabla_freq_resumida_resumida$ni,
main = "Gráfica N°2: Distribución general de la densidad de población\nen el estudio de la calidad de agua en Europa (1991-2017)",
xlab = "Densidad de población (hab/km²)",
ylab = "Cantidad",
col = "lightgreen",
ylim = c(0, 20000),
names.arg = tabla_freq_resumida_resumida$Densidad,
las = 2,
cex.names = 0.8
)

4.3 Histograma (hi)
# =========================
# HISTOGRAMA (hi)
# =========================
barplot(
tabla_freq_resumida_resumida$hi,
main = "Gráfica N°3: Distribución porcentual de la densidad de población\nen el estudio de la calidad de agua en Europa (1991-2017)",
xlab = "Densidad de población (hab/km²)",
ylab = "Porcentaje",
col = "skyblue",
ylim = c(0, max(tabla_freq_resumida_resumida$hi) * 1.1),
names.arg = tabla_freq_resumida_resumida$Densidad,
las = 2,
cex.names = 0.8
)

4.4 Histograma General (hi)
# =========================
# HISTOGRAMA GENERAL (hi)
# =========================
barplot(
tabla_freq_resumida_resumida$hi,
main = "Gráfica N°4: Distribución porcentual general de la densidad\nde población en el estudio de la calidad de agua en Europa (1991-2017)",
xlab = "Densidad de población (hab/km²)",
ylab = "Porcentaje",
col = "lightgreen",
ylim = c(0, 100),
names.arg = tabla_freq_resumida_resumida$Densidad,
las = 2,
cex.names = 0.8
)

4.5 Diagrama de Caja
# =========================
# DIAGRAMA DE CAJA
# =========================
boxplot(
Densidad,
horizontal = TRUE,
col = "orange",
main = "Gráfica N°5: Distribución de la densidad de población\nen el estudio de la calidad de agua en Europa (1991-2017)",
xlab = "Densidad de población (hab/km²)"
)
points(
mean(Densidad),
1,
pch = 19,
col = "red"
)
legend(
"topright",
legend = "Media",
text.col = "black",
pch = 19,
col = "red"
)

4.6 Ojivas ascendentes y descendentes (Ni)
# ======================================
# OJIVAS ASCENDENTES Y DESCENDENTES (Ni)
# ======================================
# Posiciones en el eje X
x_pos <- 1:nrow(tabla_freq_resumida_resumida)
# Ojiva descendente (Solo puntos)
plot(
x_pos,
tabla_freq_resumida_resumida$Ni_dsc,
main = "Gráfica N°6: Ojiva ascendente y descendente de la densidad\nde población en el estudio de la calidad de agua en Europa (1991-2017)",
xlab = "Densidad de población (hab/km²)",
ylab = "Cantidad",
type = "p",
pch = 19,
col = "orange",
cex = 1.5,
xaxt = "n",
ylim = c(0, max(tabla_freq_resumida_resumida$Ni_dsc) * 1.05)
)
# Ojiva ascendente (Solo puntos)
points(
x_pos,
tabla_freq_resumida_resumida$Ni_asc,
pch = 19,
col = "green",
cex = 1.5
)
# Etiquetas del eje X
axis(
side = 1,
at = x_pos,
labels = tabla_freq_resumida_resumida$Densidad,
las = 2,
cex.axis = 0.8
)
# Leyenda (Modificada sin líneas que crucen los puntos)
legend(
"topright",
legend = c("Descendente", "Ascendente"),
col = c("orange", "green"),
pch = 19,
pt.cex = 1.5,
lty = 0
)

4.7 Ojivas ascendentes y descendentes (Hi)
# ======================================
# OJIVAS ASCENDENTES Y DESCENDENTES (Hi)
# ======================================
# Posiciones en el eje X
x_pos <- 1:nrow(tabla_freq_resumida_resumida)
# Ojiva descendente (Solo puntos)
plot(
x_pos,
tabla_freq_resumida_resumida$Hi_dsc,
main = "Gráfica N°7: Ojiva ascendente y descendente de la densidad\nde población en el estudio de la calidad de agua en Europa (1991-2017)",
xlab = "Densidad de población (hab/km²)",
ylab = "Porcentaje",
type = "p",
pch = 19,
col = "red",
cex = 1.5,
xaxt = "n",
ylim = c(0, 100)
)
# Ojiva ascendente (Solo puntos)
points(
x_pos,
tabla_freq_resumida_resumida$Hi_asc,
pch = 19,
col = "blue",
cex = 1.5
)
# Etiquetas del eje X
axis(
side = 1,
at = x_pos,
labels = tabla_freq_resumida_resumida$Densidad,
las = 2,
cex.axis = 0.8
)
# Leyenda (Modificada sin líneas que crucen los puntos)
legend(
"topright",
legend = c("Descendente", "Ascendente"),
col = c("red", "blue"),
pch = 19,
pt.cex = 1.5,
lty = 0
)

5. Indicadores Estadísticos
5.1 Indicadores de Tendencia Central
# ====================================
# MEDIDAS DE TENDENCIA CENTRAL
# ====================================
# Media
media <- round(mean(Densidad), 2)
# Moda
tabla_moda <- table(Densidad)
max_frecuencia <- max(tabla_moda)
moda <- names(tabla_moda)[tabla_moda == max_frecuencia]
# Mediana
mediana <- median(Densidad)
5.2 Dispersión
# ====================================
# MEDIDAS DE DISPERSIÓN
# ====================================
# Rango
rango <- max(Densidad) - min(Densidad)
# Varianza
varianza <- var(Densidad)
# Desviación estándar
desviacion <- sd(Densidad)
# Coeficiente de variación
cv <- round((desviacion / media) * 100, 2)
5.3 Asimetría
# ====================================
# MEDIDAS DE FORMA
# ====================================
n <- length(Densidad)
# Asimetría utilizando Fisher (e1071)
asimetria <- skewness(Densidad, type = 2)
# Curtosis utilizando Fisher (e1071)
curtosis <- kurtosis(Densidad, type = 2)
# ====================================
# VALORES ATÍPICOS
# ====================================
Q1 <- quantile(Densidad, 0.25)
Q3 <- quantile(Densidad, 0.75)
RIQ <- Q3 - Q1
LI <- Q1 - 1.5 * RIQ
LS <- Q3 + 1.5 * RIQ
atipicos <- Densidad[
Densidad < LI |
Densidad > LS
]
if(length(atipicos) > 0){
mensaje_atipicos <- length(atipicos)
} else {
mensaje_atipicos <- 0
}
5.4 Tabla de indicadores
# ====================================
# TABLA RESUMEN DE INDICADORES
# ====================================
tabla_indicadores_densidad <- data.frame(
Variable = "Densidad de población",
Rango = paste0("[", min(Densidad), " ; ", max(Densidad), "]"),
X = media,
Me = mediana,
Mo = paste(moda, collapse = ", "),
V = round(varianza, 2),
Sd = round(desviacion, 2),
Cv = cv,
As = round(asimetria, 2),
K = round(curtosis, 2),
Valores_Atipicos = mensaje_atipicos,
stringsAsFactors = FALSE
)
fila_densidad <- which(
tabla_indicadores_densidad$Variable == "Densidad de población"
)
tabla_indicadores_densidad_gt <- tabla_indicadores_densidad %>%
gt() %>%
tab_header(
title = md("**Tabla N°3**"),
subtitle = md(
"**Indicadores estadísticos de la densidad de población 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.width = px(2),
row.striping.include_table_body = TRUE
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(
rows = fila_densidad
)
)
tabla_indicadores_densidad_gt
| Tabla N°3 |
| Indicadores estadísticos de la densidad de población en el estudio de la calidad de agua en Europa (1991-2017) |
| Variable |
Rango |
X |
Me |
Mo |
V |
Sd |
Cv |
As |
K |
Valores_Atipicos |
| Densidad de población |
[15 ; 511] |
149.86 |
122 |
122 |
5786.22 |
76.07 |
50.76 |
0.99 |
0.05 |
9544 |
| Autor: Grupo 3 |
6. Conclusiones
La variable Densidad de población fluctúa en un rango de 15 a 511, y
sus valores giran en torno a una mediana de 122, con una desviación
estándar de 76.07. Dado que el coeficiente de variación es de 50.76%, se
trata de un conjunto de valores extremadamente heterogéneo con una alta
dispersión. Los datos presentan una asimetría positiva (0.99), lo que
indica que los valores se acumulan de manera pronunciada en la parte
baja de la variable. Con una curtosis de 0.05 y la presencia de 9,544
valores atípicos, se observa una alta variabilidad en los registros es
de tipo heterogéneo en el estudio de la calidad del agua en Europa
(1991-2017).