3. Frecuencia
3.1 Rango
# Valores mínimo y máximo
minimo <- min(TST)
maximo <- max(TST)
3.2 Uso de la Regla de Sturges
# Regla de Sturges
k <- 1 + (3.3 * log10(length(TST)))
k <- floor(k)
# Rango y amplitud
R <- maximo - minimo
A <- R / k
3.3 Límites de clase
# Límites de clase
Li <- round(seq(from = minimo, to = maximo - A, by = A), 4)
Ls <- round(seq(from = minimo + A, to = maximo, by = A), 4)
# Marca de clase
MC <- round((Li + Ls) / 2, 2)
3.4 Creación de columnas
# Frecuencia absoluta
ni <- numeric(length(Li))
for (i in 1:length(Li)) {
ni[i] <- sum(TST >= Li[i] & TST < Ls[i])
}
# Incluir el valor máximo en el último intervalo
ni[length(Li)] <- sum(TST >= Li[length(Li)] & TST <= maximo)
# Frecuencia relativa
hi <- round((ni / sum(ni)) * 100, 2)
# Crear tabla
TDF_TST <- data.frame(
Li, Ls, MC, ni, hi
)
# ================================
# ELIMINAR INTERVALOS CON ni = 0
# ================================
TDF_TST <- TDF_TST[TDF_TST$ni > 0, ]
# Recalcular acumuladas
TDF_TST$Niasc <- cumsum(TDF_TST$ni)
TDF_TST$Nidsc <- rev(cumsum(rev(TDF_TST$ni)))
TDF_TST$Hiasc <- round(cumsum(TDF_TST$hi))
TDF_TST$Hidsc <- round(rev(cumsum(rev(TDF_TST$hi))))
4. Tabla de distribución de frecuencia
4.1 Tabla general con Sturges
TDF_TST_Completo <- rbind(
TDF_TST,
data.frame(
Li = "Total",
Ls = " ",
MC = " ",
ni = sum(TDF_TST$ni),
hi = 100,
Niasc = " ",
Nidsc = " ",
Hiasc = " ",
Hidsc = " "
)
)
# ================================
# TABLA GT
# ================================
tabla_TST <- TDF_TST_Completo %>%
gt() %>%
tab_header(
title = md("*Tabla Nº1*"),
subtitle = md("**Distribución de frecuencias de Turistas promedio
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_TST
| Tabla Nº1 |
| Distribución de frecuencias de Turistas promedio
en el estudio de la calidad de agua en Europa (1991-2017) |
| Li |
Ls |
MC |
ni |
hi |
Niasc |
Nidsc |
Hiasc |
Hidsc |
| 530038 |
5239791.8667 |
2884914.93 |
1334 |
6.71 |
1334 |
19893 |
7 |
100 |
| 5239791.8667 |
9949545.7333 |
7594668.8 |
1059 |
5.32 |
2393 |
18559 |
12 |
93 |
| 9949545.7333 |
14659299.6 |
12304422.67 |
7 |
0.04 |
2400 |
17500 |
12 |
88 |
| 14659299.6 |
19369053.4667 |
17014176.53 |
1 |
0.01 |
2401 |
17493 |
12 |
88 |
| 19369053.4667 |
24078807.3333 |
21723930.4 |
632 |
3.18 |
3033 |
17492 |
15 |
88 |
| 24078807.3333 |
28788561.2 |
26433684.27 |
3957 |
19.89 |
6990 |
16860 |
35 |
85 |
| 38208068.9333 |
42917822.8 |
40562945.87 |
101 |
0.51 |
7091 |
12903 |
36 |
65 |
| 47627576.6667 |
52337330.5333 |
49982453.6 |
3141 |
15.79 |
10232 |
12802 |
51 |
64 |
| 66466592.1333 |
71176346 |
68821469.07 |
9661 |
48.56 |
19893 |
9661 |
100 |
49 |
| Total |
|
|
19893 |
100.00 |
|
|
|
|
| Autor: Grupo 3 |
4.2 Tabla Simplificada
# =============================================
# TABLA SIMPLIFICADA (BASADA EN EL HISTOGRAMA)
# =============================================
# 1. Calcular el histograma
histoP <- hist(
log10(TST_graf + 1),
breaks = 8,
plot = FALSE
)
# 2. Extraer datos del histograma para la tabla
Limites <- histoP$breaks
LimInf <- Limites[1:(length(Limites) - 1)]
LimSup <- Limites[2:length(Limites)]
Mc <- histoP$mids
ni <- histoP$counts
hi <- round((ni / sum(ni)) * 100, 2)
# 3. Crear el DataFrame base
TDF_Histo_TST <- data.frame(
LimInf,
LimSup,
Mc,
ni,
hi
)
# Eliminar intervalos vacíos
TDF_Histo_TST <- TDF_Histo_TST[TDF_Histo_TST$ni > 0, ]
# Recalcular frecuencias acumuladas
TDF_Histo_TST$Ni_asc <- cumsum(TDF_Histo_TST$ni)
TDF_Histo_TST$Ni_dsc <- rev(cumsum(rev(TDF_Histo_TST$ni)))
TDF_Histo_TST$Hi_asc <- round(cumsum(TDF_Histo_TST$hi))
TDF_Histo_TST$Hi_dsc <- round(rev(cumsum(rev(TDF_Histo_TST$hi))))
# 4. Crear fila de totales
TDF_Histo_TST_Completo <- rbind(
TDF_Histo_TST,
data.frame(
LimInf = "Total",
LimSup = " ",
Mc = " ",
ni = sum(TDF_Histo_TST$ni),
hi = 100,
Ni_asc = " ",
Ni_dsc = " ",
Hi_asc = " ",
Hi_dsc = " "
)
)
# 5. Generar y mostrar la Tabla con 'gt'
tabla_Histo_TST <- TDF_Histo_TST_Completo %>%
gt() %>%
tab_header(
title = md("*Tabla Nº2*"),
subtitle = md("**Distribución de frecuencias de Turistas promedio
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_Histo_TST
| Tabla Nº2 |
| Distribución de frecuencias de Turistas promedio
en el estudio de la calidad de agua en Europa (1991-2017) |
| LimInf |
LimSup |
Mc |
ni |
hi |
Ni_asc |
Ni_dsc |
Hi_asc |
Hi_dsc |
| 5.6 |
5.8 |
5.7 |
129 |
0.65 |
129 |
19893 |
1 |
100 |
| 5.8 |
6 |
5.9 |
15 |
0.08 |
144 |
19764 |
1 |
99 |
| 6 |
6.2 |
6.1 |
310 |
1.56 |
454 |
19749 |
2 |
99 |
| 6.2 |
6.4 |
6.3 |
360 |
1.81 |
814 |
19439 |
4 |
98 |
| 6.4 |
6.6 |
6.5 |
27 |
0.14 |
841 |
19079 |
4 |
96 |
| 6.6 |
6.8 |
6.7 |
972 |
4.89 |
1813 |
19052 |
9 |
96 |
| 6.8 |
7 |
6.9 |
580 |
2.92 |
2393 |
18080 |
12 |
91 |
| 7 |
7.2 |
7.1 |
8 |
0.04 |
2401 |
17500 |
12 |
88 |
| 7.2 |
7.4 |
7.3 |
632 |
3.18 |
3033 |
17492 |
15 |
88 |
| 7.4 |
7.6 |
7.5 |
4058 |
20.40 |
7091 |
16860 |
36 |
85 |
| 7.6 |
7.8 |
7.7 |
3141 |
15.79 |
10232 |
12802 |
51 |
64 |
| 7.8 |
8 |
7.9 |
9661 |
48.56 |
19893 |
9661 |
100 |
49 |
| Total |
|
|
19893 |
100.00 |
|
|
|
|
| Autor: Grupo 3 |
5. Gráficas
5.1 Histograma (ni)
hist(
log10(TST_graf + 1),
breaks = histoP$breaks,
xaxt = "n",
col = "deepskyblue",
border = "black",
main = "Gráfica Nº1: Distribución de frecuencias de turistas promedio
en el estudio de la calidad de agua en Europa (1991-2017)",
xlab = "Turistas promedio",
ylab = "Cantidad"
)
axis(
1,
at = histoP$breaks,
labels = round(histoP$breaks, 1),
las = 1
)

5.2 Histograma General (ni)
# ===========================================================
# Histograma con relación a la totalidad de los datos
# ===========================================================
barplot(
TDF_Histo_TST$ni,
col = "lightskyblue1",
main = "Gráfica Nº2: Distribución de frecuencias de Turistas
promedio en el estudio de la calidad de agua en Europa (1991-2017)",
xlab = "Turistas promedio",
ylab = "Cantidad",
space = 0,
names.arg = round(TDF_Histo_TST$Mc, 2)
)

5.3 Histograma Porcentual (hi)
# ======================================
# Histograma porcentual que genera RStudio
# ======================================
bp <- barplot(
TDF_Histo_TST$hi,
col = "deepskyblue",
main = "Gráfica Nº3: Distribución porcentual de frecuencias de
Turistas promedio en el estudio de la calidad de agua en
Europa (1991-2017)",
xlab = "Turistas promedio",
ylab = "Porcentaje (%)",
space = 0,
names.arg = round(TDF_Histo_TST$Mc, 2)
)

5.4 Histograma Porcentual General (hi)
# ===========================================================
# Histograma porcentual con relación a la totalidad
# ===========================================================
barplot(
TDF_Histo_TST$hi,
space = 0,
col = "lightskyblue1",
main = "Gráfica Nº4: Distribución porcentual de frecuencias de
turistas promedio en el estudio de la calidad de agua en Europa
(1991-2017)",
xlab = "Media de turistas",
ylab = "Porcentaje (%)",
names.arg = round(TDF_Histo_TST$Mc, 2),
ylim = c(0, 100)
)

5.5 Polígono de frecuencias (hi)
bp <- barplot(
TDF_Histo_TST$hi,
col = "royalblue",
main = "Gráfica Nº5: Polígono de frecuencia de la distribución
porcentual de Turistas promedio, en el estudio de la calidad
de agua en Europa (1991-2017)",
xlab = "Turistas promedio",
ylab = "Porcentaje (%)",
space = 0,
names.arg = round(TDF_Histo_TST$Mc, 2),
ylim = c(0, max(TDF_Histo_TST$hi) * 1.2)
)
lines(
bp,
TDF_Histo_TST$hi,
type = "o",
pch = 16,
lwd = 2,
col = "darkred"
)
text(
bp,
TDF_Histo_TST$hi,
labels = round(TDF_Histo_TST$hi, 2),
pos = 3,
cex = 0.8,
col = "black"
)

5.6 Diagrama de caja
# =============================
# BOXPLOT
# =============================
boxplot(
TST,
horizontal = TRUE,
col = "forestgreen",
main = "Gráfica Nº7: Diagrama de caja de turistas promedio
en el estudio de la calidad de agua en Europa (1991-2017)",
xlab = "Turistas promedio",
xaxt = "n"
)
# Media
points(
mean(TST),
1,
pch = 19,
col = "red"
)
# Eje X en millones
marcas <- seq(0, 70000000, by = 10000000)
axis(
1,
at = marcas,
labels = paste0(marcas/1000000, " M")
)
legend(
"topright",
legend = "Media",
pch = 19,
col = "red"
)

5.7 Ojiva ascendente y descendente (Ni)
# =========================
# OJIVAS Ni
# =========================
plot(
TDF_Histo_TST$LimInf,
TDF_Histo_TST$Ni_dsc,
main = "Gráfica Nº8: Ojiva ascendente y descendente de Turistas
promedio en el estudio de la calidad de agua en Europa (1991-2017)",
xlab = "Turistas promedio",
ylab = "Cantidad",
col = "red",
type = "o",
lwd = 2
)
lines(
TDF_Histo_TST$LimSup,
TDF_Histo_TST$Ni_asc,
col = "forestgreen",
type = "o",
lwd = 2
)
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
# =========================
plot(
TDF_Histo_TST$LimSup,
TDF_Histo_TST$Hi_asc,
type = "o",
col = "deepskyblue",
pch = 16,
lwd = 2,
main = "Gráfica Nº9: Ojiva ascendente y descendente de Turistas
promedio en el estudio de la calidad de agua en Europa (1991-2017)",
xlab = "Turistas promedio",
ylab = "Porcentaje acumulado (%)",
ylim = c(0, 100)
)
# Ojiva Descendente
lines(
TDF_Histo_TST$LimInf,
TDF_Histo_TST$Hi_dsc,
type = "o",
col = "red",
pch = 17,
lwd = 2
)
grid()
legend(
"right",
legend = c(
"Ojiva Ascendente (%)",
"Ojiva Descendente (%)"
),
col = c("deepskyblue", "red"),
pch = c(16, 17),
lty = 1,
bty = "n"
)

6 Indicadores Estadísticos
# =========================
# INDICADORES ESTADÍSTICOS
# =========================
# Obtener valores atípicos según el criterio del boxplot
atipicos <- boxplot.stats(TST)$out
# Cantidad de valores atípicos
n_atipicos <- length(atipicos)
TST <- na.omit(datos$TouristMean_1990_2020)
TST <- as.numeric(TST)
# Media y mediana
media <- mean(TST)
mediana <- median(TST)
# =========================
# MODA (INTERVALO MODAL)
# =========================
fila_modal <- which.max(TDF_Histo_TST$ni)
moda_intervalar <- paste0(
"[",
round(TDF_Histo_TST$LimInf[fila_modal], 2),
" ; ",
round(TDF_Histo_TST$LimSup[fila_modal], 2),
"]"
)
# =========================
# DISPERSIÓN
# =========================
varianza <- var(TST)
desv_est <- sd(TST)
cv <- round((desv_est / media) * 100, 2)
# =========================
# ASIMETRÍA Y CURTOSIS
# =========================
n <- length(TST)
asimetria <- (n / ((n - 1) * (n - 2))) *
sum(((TST - mean(TST)) / sd(TST))^3)
curtosis <- (
(n * (n + 1)) / ((n - 1) * (n - 2) * (n - 3))
) *
sum(((TST - mean(TST)) / sd(TST))^4) -
(
(3 * (n - 1)^2) /
((n - 2) * (n - 3))
)
# =========================
# TABLA RESUMEN FINAL
# =========================
tabla_indicadores <- data.frame(
Variable = "Media de turistas",
Rango = paste0(
"[",
round(min(TST)/1000000, 2),
" ; ",
round(max(TST)/1000000, 2),
"] M"
),
X = paste0(round(media/1000000, 2), " M"),
Me = paste0(round(mediana/1000000, 2), " M"),
Mo = moda_intervalar,
V = paste0(round(varianza/1e12, 2), " ×10¹²"),
Sd = paste0(round(desv_est/1000000, 2), " M"),
Cv = round(cv, 2),
As = round(asimetria, 2),
K = round(curtosis, 2),
Valores_Atipicos = n_atipicos
)
tabla_indicadores_gt <- tabla_indicadores %>%
gt() %>%
tab_header(
title = md("*Tabla Nº3*"),
subtitle = md("**Indicadores estadísticos de turistas promedio
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 turistas promedio
en el estudio de la calidad de agua en Europa
(1991-2017) |
| Variable |
Rango |
X |
Me |
Mo |
V |
Sd |
Cv |
As |
K |
Valores_Atipicos |
| Media de turistas |
[0.53 ; 71.18] M |
49.19 M |
50.94 M |
[7.8 ; 8] |
609.85 ×10¹² |
24.7 M |
50.2 |
-0.59 |
-1.16 |
0 |
| Autor: Grupo 3 |