3. Tabla de distribución de frecuencias
3.1 Tabla de frecuencias
# -------------------------
# Tabla de frecuencias
# -------------------------
tabla_freq <- as.data.frame(
table(Tiempo)
)
# Renombrar columnas
colnames(tabla_freq) <- c(
"Tiempo",
"ni"
)
# Frecuencia relativa
tabla_freq$hi <- round(
(tabla_freq$ni / sum(tabla_freq$ni)) * 100,
2
)
# Ajustar para que hi sume exactamente 100
tabla_freq$hi[nrow(tabla_freq)] <-
tabla_freq$hi[nrow(tabla_freq)] +
(100 - sum(tabla_freq$hi))
# Frecuencias acumuladas ascendentes
tabla_freq$Ni_asc <- cumsum(tabla_freq$ni)
tabla_freq$Hi_asc <- round(
cumsum(tabla_freq$hi),
2
)
# Frecuencias acumuladas descendentes
tabla_freq$Ni_dsc <- rev(
cumsum(rev(tabla_freq$ni))
)
tabla_freq$Hi_dsc <- round(
rev(cumsum(rev(tabla_freq$hi))),
2
)
# -------------------------
# Agregar fila de totales
# -------------------------
fila_total <- data.frame(
Tiempo = "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 referencia de tiempo en el estudio de la calidad de agua en Europa (1991-2017)**"
)
) %>%
cols_label(
Tiempo = "Referencia de tiempo",
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 = Tiempo == "TOTAL"
)
) %>%
opt_row_striping()
tabla_gt
| Tabla N°1 |
| Distribución de frecuencias de la referencia de tiempo en el estudio de la calidad de agua en Europa (1991-2017) |
| Referencia de tiempo |
ni |
hi (%) |
Ni ↑ |
Hi ↑ (%) |
Ni ↓ |
Hi ↓ (%) |
| 1991 |
1 |
0.00 |
1 |
0 |
20000 |
100 |
| 1992 |
3 |
0.01 |
4 |
0.01 |
19999 |
100 |
| 1995 |
1 |
0.00 |
5 |
0.01 |
19996 |
99.99 |
| 1996 |
1 |
0.00 |
6 |
0.01 |
19995 |
99.99 |
| 1997 |
1 |
0.00 |
7 |
0.01 |
19994 |
99.99 |
| 1999 |
1 |
0.00 |
8 |
0.01 |
19993 |
99.99 |
| 2000 |
4 |
0.02 |
12 |
0.03 |
19992 |
99.99 |
| 2001 |
1 |
0.00 |
13 |
0.03 |
19988 |
99.97 |
| 2003 |
1 |
0.00 |
14 |
0.03 |
19987 |
99.97 |
| 2004 |
5 |
0.03 |
19 |
0.06 |
19986 |
99.97 |
| 2005 |
13 |
0.06 |
32 |
0.12 |
19981 |
99.94 |
| 2006 |
983 |
4.92 |
1015 |
5.04 |
19968 |
99.88 |
| 2007 |
1216 |
6.08 |
2231 |
11.12 |
18985 |
94.96 |
| 2008 |
4938 |
24.69 |
7169 |
35.81 |
17769 |
88.88 |
| 2009 |
9356 |
46.78 |
16525 |
82.59 |
12831 |
64.19 |
| 2010 |
1797 |
8.98 |
18322 |
91.57 |
3475 |
17.41 |
| 2011 |
128 |
0.64 |
18450 |
92.21 |
1678 |
8.43 |
| 2012 |
264 |
1.32 |
18714 |
93.53 |
1550 |
7.79 |
| 2013 |
197 |
0.98 |
18911 |
94.51 |
1286 |
6.47 |
| 2014 |
236 |
1.18 |
19147 |
95.69 |
1089 |
5.49 |
| 2015 |
255 |
1.27 |
19402 |
96.96 |
853 |
4.31 |
| 2016 |
589 |
2.94 |
19991 |
99.9 |
598 |
3.04 |
| 2017 |
9 |
0.10 |
20000 |
100 |
9 |
0.1 |
| TOTAL |
20000 |
100.00 |
|
|
|
|
3.2 Tabla simplificada de frecuencias
# -------------------------
# Crear 10 intervalos de igual amplitud
# -------------------------
Tiempo_intervalos <- cut(
Tiempo,
breaks = 10,
include.lowest = TRUE
)
# -------------------------
# Tabla de frecuencias
# -------------------------
tabla_freq <- as.data.frame(
table(Tiempo_intervalos)
)
colnames(tabla_freq) <- c(
"Tiempo",
"ni"
)
# Frecuencia relativa
tabla_freq$hi <- round(
tabla_freq$ni / sum(tabla_freq$ni) * 100,
2
)
# Ajustar para que hi sume exactamente 100
tabla_freq$hi[nrow(tabla_freq)] <-
tabla_freq$hi[nrow(tabla_freq)] +
(100 - sum(tabla_freq$hi))
# Frecuencias acumuladas ascendentes
tabla_freq$Ni_asc <- cumsum(tabla_freq$ni)
tabla_freq$Hi_asc <- round(
cumsum(tabla_freq$hi),
2
)
# Frecuencias acumuladas descendentes
tabla_freq$Ni_dsc <- rev(
cumsum(rev(tabla_freq$ni))
)
tabla_freq$Hi_dsc <- round(
rev(cumsum(rev(tabla_freq$hi))),
2
)
# -------------------------
# Agregar fila TOTAL
# -------------------------
fila_total <- data.frame(
Tiempo = "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°2**"),
subtitle = md(
"**Distribución de frecuencias simplificada de la referencia de tiempo en el estudio de la calidad de agua en Europa (1991-2017)**"
)
) %>%
cols_label(
Tiempo = "Referencia de tiempo",
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 = Tiempo == "TOTAL"
)
) %>%
opt_row_striping()
tabla_gt
| Tabla N°2 |
| Distribución de frecuencias simplificada de la referencia de tiempo en el estudio de la calidad de agua en Europa (1991-2017) |
| Referencia de tiempo |
ni |
hi (%) |
Ni ↑ |
Hi ↑ (%) |
Ni ↓ |
Hi ↓ (%) |
| [1991,1994] |
4 |
0.02 |
4 |
0.02 |
20000 |
100 |
| (1994,1996] |
2 |
0.01 |
6 |
0.03 |
19996 |
99.98 |
| (1996,1999] |
1 |
0.00 |
7 |
0.03 |
19994 |
99.97 |
| (1999,2001] |
6 |
0.03 |
13 |
0.06 |
19993 |
99.97 |
| (2001,2004] |
6 |
0.03 |
19 |
0.09 |
19987 |
99.94 |
| (2004,2007] |
996 |
4.98 |
1015 |
5.07 |
19981 |
99.91 |
| (2007,2009] |
15510 |
77.55 |
16525 |
82.62 |
18985 |
94.93 |
| (2009,2012] |
1925 |
9.62 |
18450 |
92.24 |
3475 |
17.38 |
| (2012,2014] |
697 |
3.48 |
19147 |
95.72 |
1550 |
7.76 |
| (2014,2017] |
853 |
4.28 |
20000 |
100 |
853 |
4.28 |
| TOTAL |
20000 |
100.00 |
|
|
|
|
4 Gráficas
4.1 Diagrama de barras de cantidad
# =========================
# HISTOGRAMA (ni)
# =========================
par(mar = c(10, 4, 4, 2))
barplot(
tabla_freq$ni,
main = "Gráfica N°1: Distribución de la referencia de tiempo
en el estudio de la calidad de agua en Europa (1991-2017)",
ylab = "Cantidad",
col = "skyblue",
ylim = c(0, max(tabla_freq$ni)*1.1),
names.arg = tabla_freq$Tiempo,
las = 2,
cex.names = 0.8
)
title(
xlab = "Referencia de tiempo",
line = 6
)

4.2 Diagrama de barras de cantidad general
# =========================
# HISTOGRAMA GENERAL (ni)
# =========================
par(mar = c(10, 4, 4, 2))
barplot(
tabla_freq$ni,
main = "Gráfica N°2: Distribución general de la referencia de tiempo
en el estudio de la calidad de agua en Europa (1991-2017)",
ylab = "Cantidad",
col = "lightgreen",
ylim = c(0, 20000),
names.arg = tabla_freq$Tiempo,
las = 2,
cex.names = 0.8
)
title(
xlab = "Referencia de tiempo",
line = 6
)

4.3 Diagrama de barras porcentual
# =========================
# HISTOGRAMA (hi)
# =========================
par(mar = c(10, 4, 4, 2))
barplot(
tabla_freq$hi,
main = "Gráfica N°3: Distribución porcentual de la referencia de
tiempo en el estudio de la calidad de agua en Europa (1991-2017)",
ylab = "Porcentaje",
col = "skyblue",
ylim = c(0, max(tabla_freq$hi) * 1.1),
names.arg = tabla_freq$Tiempo,
las = 2,
cex.names = 0.8
)
title(
xlab = "Referencia de tiempo",
line = 6
)

4.4 Diagrama de barras porcentual General
# =========================
# HISTOGRAMA GENERAL (hi)
# =========================
par(mar = c(10, 4, 4, 2))
barplot(
tabla_freq$hi,
main = "Gráfica N°4: Distribución porcentual general de la referencia
de tiempo en el estudio de la calidad de agua en Europa (1991-2017)",
ylab = "Porcentaje",
col = "lightgreen",
ylim = c(0,100),
names.arg = tabla_freq$Tiempo,
las = 2,
cex.names = 0.8
)
title(
xlab = "Referencia de tiempo",
line = 6
)

4.5 Diagrama de Caja
# =========================
# DIAGRAMA DE CAJA
# =========================
par(mar = c(10, 4, 4, 2))
boxplot(
Tiempo,
horizontal = TRUE,
xaxt = "n",
xlab = "",
col = "orange",
main = "Gráfica N°5: Distribución de la referencia de tiempo
en el estudio de la calidad de agua en Europa (1991-2017)"
)
axis(
side = 1,
at = seq(min(Tiempo), max(Tiempo), length.out = 10),
labels = levels(Tiempo_intervalos),
las = 2,
cex.axis = 0.8
)
title(
xlab = "Referencia de tiempo",
line = 7
)
points(
mean(Tiempo),
1,
pch = 19,
col = "red"
)
legend(
"topright",
legend = "Media",
pch = 19,
col = "red"
)

4.6 Ojivas ascendentes y descendentes (Ni)
# ======================================
# OJIVAS ASCENDENTES Y DESCENDENTES (Ni)
# ======================================
par(mar = c(12, 4, 4, 2))
# Posiciones en el eje X
x_pos <- 1:nrow(tabla_freq)
# Ojiva descendente
plot(
x_pos,
tabla_freq$Ni_dsc,
main = "Gráfica N°6: Ojiva ascendente y descendente de la referencia
de tiempo en el estudio de la calidad de agua en Europa (1991-2017)",
xlab = "",
ylab = "Cantidad",
type = "b",
pch = 19,
col = "orange",
lwd = 2,
xaxt = "n",
ylim = c(0, max(tabla_freq$Ni_dsc) * 1.05)
)
# Ojiva ascendente
lines(
x_pos,
tabla_freq$Ni_asc,
type = "b",
pch = 19,
col = "green",
lwd = 2
)
# Etiquetas del eje X
axis(
side = 1,
at = x_pos,
labels = tabla_freq$Tiempo,
las = 2,
cex.axis = 0.8
)
# Leyenda
legend(
"topright",
legend = c("Descendente", "Ascendente"),
col = c("orange", "green"),
lwd = 2,
pch = 19
)
# Nombre del eje X
title(
xlab = "Referencia de tiempo",
line = 8
)

4.7 Ojivas ascendentes y descendentes (Hi)
# ======================================
# OJIVAS ASCENDENTES Y DESCENDENTES (Hi)
# ======================================
par(mar = c(12, 4, 4, 2))
# Posiciones en el eje X
x_pos <- 1:nrow(tabla_freq)
# Ojiva descendente
plot(
x_pos,
tabla_freq$Hi_dsc,
main = "Gráfica N°7: Ojiva ascendente y descendente de la referencia
de tiempo en el estudio de la calidad de agua en Europa (1991-2017)",
xlab = "",
ylab = "Porcentaje",
type = "b",
pch = 19,
col = "red",
lwd = 2,
xaxt = "n",
ylim = c(0, 100)
)
# Ojiva ascendente
lines(
x_pos,
tabla_freq$Hi_asc,
type = "b",
pch = 19,
col = "blue",
lwd = 2
)
# Etiquetas del eje X
axis(
side = 1,
at = x_pos,
labels = tabla_freq$Tiempo,
las = 2,
cex.axis = 0.8
)
# Leyenda
legend(
"topright",
legend = c("Descendente", "Ascendente"),
col = c("red", "blue"),
lwd = 2,
pch = 19
)
# Nombre del eje X
title(
xlab = "Referencia de tiempo",
line = 8
)

5. Indicadores Estadísticos
5.1 Indicadores de Tendencia Central
# =========================
# INDICADORES ESTADÍSTICOS
# Variable: Referencia de tiempo
# =========================
# =========================
# MEDIDAS DE TENDENCIA CENTRAL
# =========================
# Media
media <- round(mean(Tiempo), 2)
# Moda
tabla_moda <- table(Tiempo)
max_frecuencia <- max(tabla_moda)
moda <- names(tabla_moda)[tabla_moda == max_frecuencia]
# Mediana
mediana <- median(Tiempo)
5.2 Dispersión
# =========================
# MEDIDAS DE DISPERSIÓN
# =========================
# Rango
rango <- max(Tiempo) - min(Tiempo)
# Varianza
varianza <- var(Tiempo)
# Desviación estándar
desviacion <- sd(Tiempo)
# Coeficiente de variación
cv <- round((desviacion / media) * 100, 2)
5.3 Asimetría
# =========================
# MEDIDAS DE FORMA
# =========================
n <- length(Tiempo)
# Asimetría
asimetria <- sum((Tiempo - media)^3) /
((n - 1) * desviacion^3)
# Curtosis
curtosis <- sum((Tiempo - media)^4) /
((n - 1) * desviacion^4) - 3
# =========================
# VALORES ATÍPICOS
# =========================
Q1 <- quantile(Tiempo, 0.25)
Q3 <- quantile(Tiempo, 0.75)
RIQ <- Q3 - Q1
LI <- Q1 - 1.5 * RIQ
LS <- Q3 + 1.5 * RIQ
atipicos <- Tiempo[
Tiempo < LI |
Tiempo > LS
]
# Mensaje para la tabla
if(length(atipicos) > 0){
mensaje_atipicos <- paste0(
length(atipicos),
" [",
min(atipicos),
" ; ",
max(atipicos),
"]"
)
}else{
mensaje_atipicos <- "0"
}
5.4 Tabla de indicadores
# =========================
# TABLA RESUMEN
# =========================
tabla_indicadores <- data.frame(
Variable = "Referencia de tiempo",
Rango = paste0("[", min(Tiempo), " ; ", max(Tiempo), "]"),
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 <- which(
tabla_indicadores$Variable ==
"Referencia de tiempo"
)
tabla_indicadores_gt <- tabla_indicadores %>%
gt() %>%
tab_header(
title = md("**Tabla N°3**"),
subtitle = md(
"**Indicadores estadísticos de la referencia de tiempo 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
)
)
tabla_indicadores_gt
| Tabla N°3 |
| Indicadores estadísticos de la referencia de tiempo en el estudio de la calidad de agua en Europa (1991-2017) |
| Variable |
Rango |
X |
Me |
Mo |
V |
Sd |
Cv |
As |
K |
Valores_Atipicos |
| Referencia de tiempo |
[1991 ; 2017] |
2009 |
2009 |
2009 |
3.68 |
1.92 |
0.1 |
1.7 |
6.61 |
2693 [1991 ; 2017] |
| Autor: Grupo 3 |