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
n_lat <- length(latitude)
n_lat
## [1] 11033
3.1 Parámetros de clasificación
# Número de clases
k_lat <- 12
# Valores mínimo y máximo
min_lat <- min(latitude)
max_lat <- max(latitude)
# Rango
R_lat <- max_lat - min_lat
# Amplitud real
A_real <- R_lat / k_lat
3.2 Ajuste de amplitud de clase
# Ajuste de amplitud
A_lat <- ifelse(
A_real <= 2, 2,
ifelse(
A_real <= 5, 5,
ifelse(
A_real <= 10, 10,
ceiling(A_real/10)*10
)
)
)
3.3 Definición de clases
Li0 <- floor(min_lat/A_lat)*A_lat
Li_lat <- seq(
Li0,
by = A_lat,
length.out = k_lat
)
Ls_lat <- Li_lat + A_lat
MC_lat <- round((Li_lat + Ls_lat)/2,2)
3.4 Cálculo de frecuencias
ni_lat <- numeric(k_lat)
for(i in 1:k_lat){
if(i < k_lat){
ni_lat[i] <- sum(
latitude >= Li_lat[i] &
latitude < Ls_lat[i]
)
}else{
ni_lat[i] <- sum(
latitude >= Li_lat[i] &
latitude <= max_lat
)
}
}
hi_lat <- (ni_lat/sum(ni_lat))*100
Ni_asc <- cumsum(ni_lat)
Ni_dsc <- rev(cumsum(rev(ni_lat)))
Hi_asc <- cumsum(hi_lat)
Hi_dsc <- rev(cumsum(rev(hi_lat)))
4. TABLA DE FRECUENCIAS
4.1 Tabla de frecuencias
TDF_latitude <- data.frame(
Li = Li_lat,
Ls = Ls_lat,
MC = MC_lat,
ni = ni_lat,
hi = hi_lat,
Ni_asc = Ni_asc,
Ni_dsc = Ni_dsc,
Hi_asc = Hi_asc,
Hi_dsc = Hi_dsc
)
# Agregar fila de 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 = ""
)
)
4.2 Presentación de la tabla
tabla_latitude <- TDF_latitude %>%
mutate(
hi = round(as.numeric(hi),2),
Hi_asc = round(as.numeric(Hi_asc),2)
) %>%
gt() %>%
tab_header(
title = md("**Tabla N° 1**"),
subtitle = md("Distribución de frecuencias de la variable Latitude")
) %>%
cols_label(
Li = "Límite inferior (°)",
Ls = "Límite superior (°)",
MC = "Marca de clase (°)",
ni = "Frecuencia absoluta",
hi = "Frecuencia relativa (%)",
Ni_asc = "Frecuencia acumulada",
Ni_dsc = "Frecuencia acumulada descendente",
Hi_asc = "Frecuencia relativa acumulada (%)",
Hi_dsc = "Frecuencia relativa acumulada descendente (%)"
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(rows = Li == "TOTAL")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 2 – Carrera de Geología")
)
tabla_latitude
| Tabla N° 1 |
| Distribución de frecuencias de la variable Latitude |
| Límite inferior (°) |
Límite superior (°) |
Marca de clase (°) |
Frecuencia absoluta |
Frecuencia relativa (%) |
Frecuencia acumulada |
Frecuencia acumulada descendente |
Frecuencia relativa acumulada (%) |
Frecuencia relativa acumulada descendente (%) |
| -50 |
-40 |
-45 |
99 |
0.90 |
99 |
11033 |
0.90 |
100 |
| -40 |
-30 |
-35 |
147 |
1.33 |
246 |
10934 |
2.23 |
99.1026919242273 |
| -30 |
-20 |
-25 |
257 |
2.33 |
503 |
10787 |
4.56 |
97.7703253874739 |
| -20 |
-10 |
-15 |
158 |
1.43 |
661 |
10530 |
5.99 |
95.4409498776398 |
| -10 |
0 |
-5 |
498 |
4.51 |
1159 |
10372 |
10.50 |
94.0088824435784 |
| 0 |
10 |
5 |
1015 |
9.20 |
2174 |
9874 |
19.70 |
89.4951509109037 |
| 10 |
20 |
15 |
1394 |
12.63 |
3568 |
8859 |
32.34 |
80.2954772047494 |
| 20 |
30 |
25 |
1842 |
16.70 |
5410 |
7465 |
49.03 |
67.6606544004351 |
| 30 |
40 |
35 |
2554 |
23.15 |
7964 |
5623 |
72.18 |
50.9652859603009 |
| 40 |
50 |
45 |
2603 |
23.59 |
10567 |
3069 |
95.78 |
27.8165503489531 |
| 50 |
60 |
55 |
419 |
3.80 |
10986 |
466 |
99.57 |
4.22369255868757 |
| 60 |
70 |
65 |
47 |
0.43 |
11033 |
47 |
100.00 |
0.425994743043596 |
| TOTAL |
|
|
11033 |
100.00 |
|
|
NA |
|
| Autor: Grupo 2 – Carrera de Geología |
5. GRÁFICAS
5.1 Histogramas
5.1.1 Histograma por defecto (ni)
hist(
latitude,
breaks = k_lat,
col = "grey",
border = "black",
main = "Gráfica 5: Histograma local de frecuencia absoluta de Latitude",
xlab = "Latitude (°)",
ylab = "Frecuencia absoluta"
)

5.2 Histograma global de frecuencia absoluta
(ni)
hist(
latitude,
main = "Gráfica 6: Histograma global de frecuencia absoluta de Latitude",
xlab = "Latitude (°)",
ylab = "Cantidad",
col = "grey",
border = "black",
ylim = c(0, length(latitude))
)

5.3 Histograma local de frecuencia relativa
(hi)
hist(
latitude,
breaks = k_lat,
freq = FALSE,
col = "grey",
border = "black",
main = "Gráfica 7: Histograma local de frecuencia relativa de Latitude",
xlab = "Latitude (°)",
ylab = "Densidad"
)

5.4 Histograma global de frecuencia relativa
(hi)
barplot(
TDF_latitude$hi[TDF_latitude$Li != "TOTAL"],
space = 0,
col = "grey",
border = "black",
main = "Gráfica 8: Histograma global de frecuencia relativa de Latitude",
xlab = "Marca de clase (°)",
ylab = "Frecuencia relativa (%)",
names.arg = TDF_latitude$MC[TDF_latitude$Li != "TOTAL"],
ylim = c(0,100)
)

5.2 Ojivas
plot(
Ls_lat,
Ni_asc,
type = "o",
col = "blue",
pch = 19,
ylim = c(0, max(Ni_asc)),
main = "Gráfica 11: Ojivas de la variable Latitude",
xlab = "Límites de clase (°)",
ylab = "Frecuencia acumulada"
)
lines(
Li_lat,
Ni_dsc,
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 Latitude",
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 = "Histograma local (ni) con boxplot superpuesto",
xlab = "Latitude (°)",
ylab = "Frecuencia absoluta (ni)"
)
## 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]
6.6 Tabla de detección de outliers
Tabla_Outliers <- data.frame(
Zona = c(
"Outliers inferiores",
"Datos normales",
"Outliers superiores"
),
Rango = c(
paste("<", round(Limite_inferior, 4)),
paste(round(Limite_inferior, 4), "a", round(Limite_superior, 4)),
paste(">", round(Limite_superior, 4))
),
Registros = c(
length(outliers_bajos),
n_lat - length(outliers_bajos) - length(outliers_altos),
length(outliers_altos)
)
)
tabla_outliers <- Tabla_Outliers %>%
gt() %>%
tab_header(
title = md("**Tabla N° 3**"),
subtitle = md("Detección de outliers mediante el método IQR")
) %>%
cols_label(
Zona = "Zona",
Rango = "Rango (°)",
Registros = "Número de registros"
) %>%
tab_style(
style = cell_fill(color = "mistyrose"),
locations = cells_body(rows = c(1,3))
) %>%
tab_source_note(
source_note = md("Autor: Grupo 2 – Carrera de Geología")
)
tabla_outliers
| Tabla N° 3 |
| Detección de outliers mediante el método IQR |
| Zona |
Rango (°) |
Número de registros |
| Outliers inferiores |
< -26.5054 |
287 |
| Datos normales |
-26.5054 a 81.2892 |
10746 |
| Outliers superiores |
> 81.2892 |
0 |
| Autor: Grupo 2 – Carrera de Geología |
7. CONCLUSIÓN
La variable Latitude, medida en grados, presenta un rango teórico
comprendido entre −90° y 90°, con una media de 25.88°, una mediana de
30.53° y una moda de 45.60°, lo que indica que la mayor concentración de
los registros de deslizamientos se localiza en latitudes positivas. El
rango de 119.40° y la desviación estándar de 20.42° evidencian una
dispersión considerable de los datos, mientras que el coeficiente de
variación de 78.88 % indica una alta variabilidad relativa entre las
observaciones. El coeficiente de asimetría de −1.12 muestra una
distribución con asimetría negativa, es decir, una cola más extendida
hacia las latitudes menores, lo que coincide con la presencia de algunos
registros ubicados en el hemisferio sur. Asimismo, la curtosis de 1.10
indica una distribución leptocúrtica, caracterizada por una mayor
concentración de datos alrededor de la media y colas más pronunciadas
que las de una distribución normal. En conjunto, estos resultados
muestran que la mayor parte de los deslizamientos analizados se
concentra en latitudes positivas, aunque existe una variabilidad
espacial importante que permite representar adecuadamente su
distribución geográfica a escala mundial.