1. CARGA DE DATOS Y LIBRERÍAS
library(readxl)
library(dplyr)
##
## Attaching package: '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)
datos <- read_excel("datos_deslizamientos.xlsx")
3. CONTEO
3.1 Regla de Sturges
# Número de observaciones
n_lat <- length(latitude)
# Valores mínimo y máximo
min_lat <- min(latitude)
max_lat <- max(latitude)
# Rango
R_lat <- max_lat - min_lat
# Número de clases según Sturges
k_sturges <- ceiling(1 + 3.322 * log10(n_lat))
# Amplitud real
A_sturges <- R_lat / k_sturges
# Límites inferiores
Li_sturges <- seq(
from = min_lat,
by = A_sturges,
length.out = k_sturges
)
# Límites superiores
Ls_sturges <- c(
Li_sturges[-1],
max_lat
)
# Marcas de clase
MC_sturges <- (Li_sturges + Ls_sturges) / 2
# Frecuencias absolutas
ni_sturges <- numeric(length(Li_sturges))
for(i in 1:length(Li_sturges)){
if(i < length(Li_sturges)){
ni_sturges[i] <- sum(
latitude >= Li_sturges[i] &
latitude < Ls_sturges[i]
)
}else{
ni_sturges[i] <- sum(
latitude >= Li_sturges[i] &
latitude <= Ls_sturges[i]
)
}
}
# Frecuencias relativas
hi_sturges <- round((ni_sturges/n_lat)*100,2)
# Frecuencias acumuladas
Ni_asc_sturges <- cumsum(ni_sturges)
Ni_dsc_sturges <- rev(cumsum(rev(ni_sturges)))
Hi_asc_sturges <- round(cumsum(hi_sturges),2)
Hi_dsc_sturges <- round(rev(cumsum(rev(hi_sturges))),2)
# Intervalos
Intervalo_sturges <- paste0(
"[",
round(Li_sturges,2),
" - ",
round(Ls_sturges,2),
")"
)
Intervalo_sturges[length(Intervalo_sturges)] <- paste0(
"[",
round(Li_sturges[length(Li_sturges)],2),
" - ",
round(Ls_sturges[length(Ls_sturges)],2),
"]"
)
# Tabla
TDF_sturges <- data.frame(
Intervalo = Intervalo_sturges,
MC = round(MC_sturges,2),
ni = ni_sturges,
hi = hi_sturges,
Ni_asc = Ni_asc_sturges,
Ni_dsc = Ni_dsc_sturges,
Hi_asc = Hi_asc_sturges,
Hi_dsc = Hi_dsc_sturges
)
# Totales
TDF_sturges <- rbind(
TDF_sturges,
data.frame(
Intervalo = "TOTAL",
MC = "",
ni = sum(ni_sturges),
hi = 100,
Ni_asc = "",
Ni_dsc = "",
Hi_asc = "",
Hi_dsc = ""
)
)
4. TABLA DE FRECUENCIAS
4.1 Tabla de frecuencias con la regla de
Sturges
tabla_sturges <- TDF_sturges %>%
gt() %>%
fmt_number(
columns = MC,
decimals = 2
) %>%
tab_header(
title = md("**Tabla N° 1**"),
subtitle = md(
paste0(
"Distribución de frecuencias de Latitud mediante la regla de Sturges (",
k_sturges,
" clases)"
)
)
) %>%
tab_source_note(
source_note = md("Autor: Grupo Geología")
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(rows = Intervalo == "TOTAL")
)
tabla_sturges
| Tabla N° 1 |
| Distribución de frecuencias de Latitud mediante la regla de Sturges (15 clases) |
| Intervalo |
MC |
ni |
hi |
Ni_asc |
Ni_dsc |
Hi_asc |
Hi_dsc |
| [-46.77 - -38.81) |
-42.79 |
115 |
1.04 |
115 |
11033 |
1.04 |
100.01 |
| [-38.81 - -30.85) |
-34.83 |
126 |
1.14 |
241 |
10918 |
2.18 |
98.97 |
| [-30.85 - -22.89) |
-26.87 |
161 |
1.46 |
402 |
10792 |
3.64 |
97.83 |
| [-22.89 - -14.93) |
-18.91 |
194 |
1.76 |
596 |
10631 |
5.4 |
96.37 |
| [-14.93 - -6.97) |
-10.95 |
255 |
2.31 |
851 |
10437 |
7.71 |
94.61 |
| [-6.97 - 0.99) |
-2.99 |
365 |
3.31 |
1216 |
10182 |
11.02 |
92.3 |
| [0.99 - 8.95) |
4.97 |
792 |
7.18 |
2008 |
9817 |
18.2 |
88.99 |
| [8.95 - 16.91) |
12.93 |
1196 |
10.84 |
3204 |
9025 |
29.04 |
81.81 |
| [16.91 - 24.87) |
20.89 |
841 |
7.62 |
4045 |
7829 |
36.66 |
70.97 |
| [24.87 - 32.83) |
28.85 |
1881 |
17.05 |
5926 |
6988 |
53.71 |
63.35 |
| [32.83 - 40.79) |
36.81 |
2333 |
21.15 |
8259 |
5107 |
74.86 |
46.3 |
| [40.79 - 48.75) |
44.77 |
2194 |
19.89 |
10453 |
2774 |
94.75 |
25.15 |
| [48.75 - 56.71) |
52.73 |
484 |
4.39 |
10937 |
580 |
99.14 |
5.26 |
| [56.71 - 64.67) |
60.69 |
91 |
0.82 |
11028 |
96 |
99.96 |
0.87 |
| [64.67 - 72.63] |
68.65 |
5 |
0.05 |
11033 |
5 |
100.01 |
0.05 |
| TOTAL |
|
11033 |
100.00 |
|
|
|
|
| Autor: Grupo Geología |
4.2 Tabla de frecuencias reducida
# ======================================================
# REDUCCIÓN DE INTERVALOS
# ======================================================
# Número de clases reducido
k_lat <- 12
# Amplitud
A_real <- R_lat / k_lat
A_lat <- ifelse(
A_real <= 2, 2,
ifelse(
A_real <= 5, 5,
ifelse(
A_real <= 10, 10,
ceiling(A_real/10)*10
)
)
)
# Límites inferiores
Li0 <- floor(min_lat/A_lat)*A_lat
Li_lat <- seq(
from = Li0,
by = A_lat,
length.out = k_lat
)
# Límites superiores
Ls_lat <- Li_lat + A_lat
# Marcas de clase
MC_lat <- round((Li_lat + Ls_lat)/2,2)
# Frecuencias absolutas
ni_lat <- numeric(length(Li_lat))
for(i in 1:length(Li_lat)){
if(i < length(Li_lat)){
ni_lat[i] <- sum(
latitude >= Li_lat[i] &
latitude < Ls_lat[i]
)
}else{
ni_lat[i] <- sum(
latitude >= Li_lat[i] &
latitude <= Ls_lat[i]
)
}
}
# Frecuencias relativas
hi_lat <- round((ni_lat/n_lat)*100,2)
# Frecuencias acumuladas
Ni_asc_lat <- cumsum(ni_lat)
Ni_dsc_lat <- rev(cumsum(rev(ni_lat)))
Hi_asc_lat <- round(cumsum(hi_lat),2)
Hi_dsc_lat <- round(rev(cumsum(rev(hi_lat))),2)
# Tabla de frecuencias reducida
TDF_latitude <- data.frame(
Li = Li_lat,
Ls = Ls_lat,
MC = MC_lat,
ni = ni_lat,
hi = hi_lat,
Ni_asc = Ni_asc_lat,
Ni_dsc = Ni_dsc_lat,
Hi_asc = Hi_asc_lat,
Hi_dsc = Hi_dsc_lat
)
# Totales
TDF_latitude <- rbind(
TDF_latitude,
data.frame(
Li = "TOTAL",
Ls = "",
MC = "",
ni = sum(ni_lat),
hi = 100,
Ni_asc = "",
Ni_dsc = "",
Hi_asc = "",
Hi_dsc = ""
)
)
tabla_latitude <- TDF_latitude %>%
gt() %>%
fmt_number(
columns = MC,
decimals = 2
) %>%
tab_header(
title = md("**Tabla N° 2**"),
subtitle = md(
paste0(
"Distribución de frecuencias de Latitud (",
k_lat,
" clases)"
)
)
) %>%
tab_source_note(
source_note = md("Autor: Grupo Geología")
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(rows = Li == "TOTAL")
)
tabla_latitude
| Tabla N° 2 |
| Distribución de frecuencias de Latitud (12 clases) |
| Li |
Ls |
MC |
ni |
hi |
Ni_asc |
Ni_dsc |
Hi_asc |
Hi_dsc |
| -50 |
-40 |
-45 |
99 |
0.90 |
99 |
11031 |
0.9 |
99.98 |
| -40 |
-30 |
-35 |
147 |
1.33 |
246 |
10932 |
2.23 |
99.08 |
| -30 |
-20 |
-25 |
257 |
2.33 |
503 |
10785 |
4.56 |
97.75 |
| -20 |
-10 |
-15 |
158 |
1.43 |
661 |
10528 |
5.99 |
95.42 |
| -10 |
0 |
-5 |
498 |
4.51 |
1159 |
10370 |
10.5 |
93.99 |
| 0 |
10 |
5 |
1015 |
9.20 |
2174 |
9872 |
19.7 |
89.48 |
| 10 |
20 |
15 |
1394 |
12.63 |
3568 |
8857 |
32.33 |
80.28 |
| 20 |
30 |
25 |
1842 |
16.70 |
5410 |
7463 |
49.03 |
67.65 |
| 30 |
40 |
35 |
2554 |
23.15 |
7964 |
5621 |
72.18 |
50.95 |
| 40 |
50 |
45 |
2603 |
23.59 |
10567 |
3067 |
95.77 |
27.8 |
| 50 |
60 |
55 |
419 |
3.80 |
10986 |
464 |
99.57 |
4.21 |
| 60 |
70 |
65 |
45 |
0.41 |
11031 |
45 |
99.98 |
0.41 |
| TOTAL |
|
|
11031 |
100.00 |
|
|
|
|
| Autor: Grupo Geología |
5. GRÁFICAS
5.1 Histogramas
5.1.1 Distribución local de la latitud de deslizamientos a
nivel mundial
hist(
latitude,
breaks = k_lat,
col = "grey",
border = "black",
main = "Gráfica 5: Distribución local de la latitud de deslizamientos\n a nivel mundial",
xlab = "Latitude (°)",
ylab = "Cantidad"
)

5.2 Distribución global de la latitud de deslizamientos a
nivel mundial
hist(
latitude,
main = "Gráfica 6: Distribución global de la latitud de deslizamientos\n a nivel mundial",
xlab = "Latitude (°)",
ylab = "Cantidad",
col = "grey",
border = "black",
ylim = c(0, length(latitude))
)

5.3 Distribución local de la latitud de deslizamientos a
nivel mundial
hist(
latitude,
breaks = k_lat,
freq = FALSE,
col = "grey",
border = "black",
main = "Gráfica 7: Distribución local de la latitud de deslizamientos\n a nivel mundial (hi)",
xlab = "Latitude (°)",
ylab = "Porcentaje (%)"
)

5.4 Distribución global de la latitud de deslizamientos a
nivel mundial (hi)
barplot(
TDF_latitude$hi[TDF_latitude$Li != "TOTAL"],
space = 0,
col = "grey",
border = "black",
main = "Gráfica 8: Distribución global de la latitud de deslizamientos\n a nivel mundial (hi)",
xlab = "Latitude (°)",
ylab = "Porcentaje (%)",
names.arg = TDF_latitude$MC[TDF_latitude$Li != "TOTAL"],
ylim = c(0,100)
)

5.2 Ojivas
plot(
Ls_lat,
Ni_asc_lat,
type = "o",
col = "blue",
pch = 19,
ylim = c(0, max(Ni_asc_lat)),
main = "Gráfica 11: Ojivas de la variable Latitude de deslizamientos\n a nivel mundial",
xlab = "Latitud (°)",
ylab = "Cantidad"
)
lines(
Li_lat,
Ni_dsc_lat,
type = "o",
col = "red",
pch = 17
)
legend(
"right",
legend = c(
"Ojiva ascendente (≤)",
"Ojiva descendente (≥)"
),
col = c("blue","red"),
pch = c(19,17),
lty = 1,
bty = "n"
)

5.3 Boxplot individual
boxplot(
latitude,
horizontal = TRUE,
col = "grey",
border = "black",
main = "Gráfica 9: Diagrama de caja de Latitud de deslizamientos\n a nivel mundial",
xlab = "Latitude (°)",
outline = TRUE,
pch = 19,
outcol = "red"
)

5.4 Histograma con boxplot superpuesto
# Definir los intervalos del histograma
breaks_lat <- c(Li_lat, max(Ls_lat))
# Asegurar que el último límite incluya el valor máximo
breaks_lat[length(breaks_lat)] <- max(latitude)
# Crear el histograma sin dibujarlo
h <- hist(
latitude,
breaks = breaks_lat,
right = FALSE,
plot = FALSE
)
# Dibujar el histograma
plot(
h,
freq = TRUE,
col = "grey",
border = "black",
main = "Distribución de los deslizamientos con\n boxplot superpuesto",
xlab = "Latitude (°)",
ylab = "Cantidad"
)
## Warning in plot.histogram(h, freq = TRUE, col = "grey", border = "black", : the
## AREAS in the plot are wrong -- rather use 'freq = FALSE'
# Superponer el boxplot
boxplot(
latitude,
horizontal = TRUE,
add = TRUE,
axes = FALSE,
at = max(h$counts) * 0.45,
boxwex = max(h$counts) * 0.50,
col = rgb(0.45, 0.80, 1.00, 0.70),
border = "black",
outline = TRUE,
pch = 19,
outcol = "red"
)

6. INDICADORES ESTADÍSTICOS
6.1 Indicadores de posición
# Límites teóricos
ri <- -90
rs <- 90
# Media
media_lat <- mean(latitude)
# Mediana
mediana_lat <- median(latitude)
# Moda (redondeando a una cifra decimal)
moda_lat <- as.numeric(
names(which.max(table(round(latitude, 1))))
)
6.2 Indicadores de dispersión
# Rango
rango_lat <- max(latitude) - min(latitude)
# Varianza
var_lat <- var(latitude)
# Desviación estándar
sd_lat <- sd(latitude)
# Coeficiente de variación (%)
CV_lat <- (sd_lat / abs(media_lat)) * 100
6.3 Indicadores de forma
# Coeficiente de asimetría de Fisher
As_lat <- mean((latitude - media_lat)^3) / sd_lat^3
# Exceso de curtosis de Fisher
K_lat <- mean((latitude - media_lat)^4) / sd_lat^4 - 3
6.4 Tabla resumen de indicadores
TablaIndicadores_latitude <- data.frame(
Variable = "Latitude",
ri = ri,
rs = rs,
Media = round(media_lat, 2),
Mediana = round(mediana_lat, 2),
Moda = round(moda_lat, 2),
Rango = round(rango_lat, 2),
Varianza = round(var_lat, 2),
Desv_Estandar = round(sd_lat, 2),
CV = round(CV_lat, 2),
Asimetria = round(As_lat, 2),
Curtosis = round(K_lat, 2)
)
tabla_latitude_indicadores <- TablaIndicadores_latitude %>%
gt() %>%
tab_header(
title = md("Tabla N° 2"),
subtitle = md("Resumen de indicadores estadísticos de la variable Latitude")
) %>%
tab_source_note(
source_note = md("Autor: Grupo Geología")
)
tabla_latitude_indicadores
| Tabla N° 2 |
| Resumen de indicadores estadísticos de la variable Latitude |
| Variable |
ri |
rs |
Media |
Mediana |
Moda |
Rango |
Varianza |
Desv_Estandar |
CV |
Asimetria |
Curtosis |
| Latitude |
-90 |
90 |
25.88 |
30.53 |
45.6 |
119.4 |
416.77 |
20.42 |
78.88 |
-1.12 |
1.1 |
| Autor: Grupo Geología |
6.5 Detección de outliers (Método IQR)
Q1_lat <- quantile(latitude, 0.25)
Q3_lat <- quantile(latitude, 0.75)
IQR_lat <- IQR(latitude)
Limite_inferior <- Q1_lat - 1.5 * IQR_lat
Limite_superior <- Q3_lat + 1.5 * IQR_lat
outliers_bajos <- latitude[latitude < Limite_inferior]
outliers_altos <- latitude[latitude > Limite_superior]
outliers <- c(outliers_bajos, outliers_altos)
min_outlier <- min(outliers)
max_outlier <- max(outliers)
min(outliers)
## [1] -46.7748
max(outliers)
## [1] -26.5833
6.6 Tabla de detección de outliers
tabla_outliers <- data.frame(
Variable = "Latitude",
Outliers_Detectados = length(outliers),
Limite_Inferior = Limite_inferior,
Limite_Superior = Limite_superior,
Q1 = Q1_lat,
Q3 = Q3_lat
)
tabla_outliers_gt <- tabla_outliers %>%
gt() %>%
tab_header(
title = md("**Tabla N° 3**"),
subtitle = md("Detección de valores atípicos de la latitud de ocurrencia de deslizamientos a nivel mundial")
) %>%
fmt_number(
columns = 3:6,
decimals = 2
) %>%
tab_source_note(
source_note = md("Elaborado por: Grupo 1 – Carrera de Geología")
)
tabla_outliers_gt
| Tabla N° 3 |
| Detección de valores atípicos de la latitud de ocurrencia de deslizamientos a nivel mundial |
| Variable |
Outliers_Detectados |
Limite_Inferior |
Limite_Superior |
Q1 |
Q3 |
| Latitude |
287 |
−26.51 |
81.29 |
13.92 |
40.87 |
| Elaborado por: Grupo 1 – Carrera de Geología |
7. CONCLUSIÓN
La variable Latitude fluctúa entre −46.77° y 72.63°, y sus valores
giran en torno a 30.53°, con una desviación estándar de 20.42°, siendo
un conjunto de datos heterogéneo. El conjunto de valores se concentra
principalmente en la parte alta de la variable y presenta una asimetría
negativa, con mayor extensión hacia las latitudes menores. Además, se
identificaron 287 valores atípicos, que van desde −46.77° hasta −26.58°.
Por lo tanto, esto se considera perjudial a nivel mundial.