Librerías Variable Conclusión

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")

2. EXTRAER LA VARIABLE

latitude <- datos$latitude
latitude <- latitude[!is.na(latitude)]

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.