Carga de datos y librerías Extraer la variable Conclusión

1. CARGA DE DATOS Y LIBRERÍAS

library(readxl)
library(gt)

datos <- read_excel(
  "dataset_deslizamientos_dia_hora.xlsx",
  sheet = 1
)

2. EXTRAER LA VARIABLE

precision <- trimws(
  tolower(
    as.character(
      datos$location_accuracy
    )
  )
)

precision <- gsub(
  "\\s+",
  "",
  precision
)

niveles_ordenados <- c(
  "exact",
  "1km",
  "5km",
  "10km",
  "25km",
  "50km",
  "100km",
  "250km"
)

niveles_tabla <- c(
  niveles_ordenados,
  "unknown"
)

precision <- precision[
  !is.na(precision) &
  precision %in% niveles_tabla
]

N_total <- length(
  precision
)

3. CONTEO

La variable location_accuracy representa el nivel de precisión espacial con el que fue ubicado cada deslizamiento. Una distancia menor representa una precisión mayor.

La categoría unknown se conserva para mostrar los registros cuya precisión no fue especificada, pero no se incluye en el cálculo de la mediana ordinal.

3.1. Categorías y orden de precisión

El orden se establece desde la mayor precisión hasta la menor:

  1. Exacta
  2. 1 km
  3. 5 km
  4. 10 km
  5. 25 km
  6. 50 km
  7. 100 km
  8. 250 km

La categoría desconocida no posee una posición dentro de este orden.

3.2. Cálculo de ni y hi

etiquetas_precision <- c(
  "Exacta",
  "1 km",
  "5 km",
  "10 km",
  "25 km",
  "50 km",
  "100 km",
  "250 km",
  "Desconocida"
)

precision_factor <- factor(
  precision,
  levels = niveles_tabla
)

ni <- as.numeric(
  table(
    precision_factor
  )
)

hi <- ni /
  N_total

tabla_precision <- data.frame(
  Categoria = etiquetas_precision,
  ni = ni,
  hi = hi
)

4. TABLA DE FRECUENCIAS

4.1. Tabla de frecuencias

tabla_precision_total <- rbind(
  tabla_precision,
  data.frame(
    Categoria = "TOTAL",
    ni = sum(
      tabla_precision$ni
    ),
    hi = sum(
      tabla_precision$hi
    )
  )
)

tabla_precision_total |>

  tabla_blanca(
    titulo = "Tabla Nro. 1",
    subtitulo = "Distribución de la precisión de ubicación"
  ) |>

  fmt_number(
    columns = hi,
    decimals = 4
  ) |>

  cols_label(
    Categoria = "Categoría de precisión",
    ni = "ni",
    hi = "hi"
  ) |>

  cols_width(
    Categoria ~ px(430),
    ni ~ px(220),
    hi ~ px(220)
  ) |>

  tab_style(
    style = cell_text(
      weight = "bold"
    ),
    locations = cells_body(
      rows = Categoria == "TOTAL"
    )
  )
Tabla Nro. 1
Distribución de la precisión de ubicación
Categoría de precisión ni hi
Exacta 1386 0.1256
1 km 2185 0.1981
5 km 3178 0.2881
10 km 1435 0.1301
25 km 1470 0.1333
50 km 794 0.0720
100 km 25 0.0023
250 km 16 0.0015
Desconocida 542 0.0491
TOTAL 11031 1.0000
Elaborado por: Geología Grupo 1

5. GRÁFICAS

5.1. Cantidad de deslizamientos

par(
  mar = c(
    7,
    5,
    5,
    2
  )
)

posiciones_cantidad <- barplot(
  height = tabla_precision$ni,
  names.arg = tabla_precision$Categoria,
  col = "#E9D8C2",
  border = "#444444",
  space = 0.25,
  main = paste0(
    "Gráfica Nro. 1: Cantidad de deslizamientos\n",
    "según la precisión de ubicación"
  ),
  xlab = "",
  ylab = "Cantidad",
  las = 2,
  cex.names = 0.85,
  ylim = c(
    0,
    max(
      tabla_precision$ni
    ) * 1.16
  )
)

mtext(
  "Categoría de precisión",
  side = 1,
  line = 5
)

text(
  x = posiciones_cantidad,
  y = tabla_precision$ni,
  labels = tabla_precision$ni,
  pos = 3,
  cex = 0.80,
  font = 2
)

5.2. Porcentaje de deslizamientos

porcentaje_precision <- tabla_precision$hi *
  100

par(
  mar = c(
    7,
    5,
    5,
    2
  )
)

posiciones_porcentaje <- barplot(
  height = porcentaje_precision,
  names.arg = tabla_precision$Categoria,
  col = "#CFA6B8",
  border = "#444444",
  space = 0.25,
  main = paste0(
    "Gráfica Nro. 2: Porcentaje de deslizamientos\n",
    "según la precisión de ubicación"
  ),
  xlab = "",
  ylab = "Porcentaje",
  las = 2,
  cex.names = 0.85,
  ylim = c(
    0,
    max(
      porcentaje_precision
    ) * 1.18
  )
)

mtext(
  "Categoría de precisión",
  side = 1,
  line = 5
)

text(
  x = posiciones_porcentaje,
  y = porcentaje_precision,
  labels = round(
    porcentaje_precision,
    2
  ),
  pos = 3,
  cex = 0.78,
  font = 2
)

6. INDICADORES

6.1. Cálculo de indicadores

indice_moda <- which.max(
  ni
)

moda_precision <- etiquetas_precision[
  indice_moda
]

cantidad_moda <- ni[
  indice_moda
]

porcentaje_moda <- hi[
  indice_moda
] * 100

ni_ordenados <- ni[
  seq_along(
    niveles_ordenados
  )
]

n_ordenados <- sum(
  ni_ordenados
)

acumulado_ordenado <- cumsum(
  ni_ordenados
)

indice_mediana <- which(
  acumulado_ordenado >=
  n_ordenados / 2
)[1]

mediana_ordinal <- etiquetas_precision[
  indice_mediana
]

n_desconocidos <- ni[
  length(ni)
]

porcentaje_desconocido <- (
  n_desconocidos /
  N_total
) * 100

nivel_predominante <- if (
  niveles_tabla[indice_moda] %in%
  c(
    "exact",
    "1km"
  )
) {
  "alto"
} else if (
  niveles_tabla[indice_moda] %in%
  c(
    "5km",
    "10km",
    "25km"
  )
) {
  "medio"
} else if (
  niveles_tabla[indice_moda] %in%
  c(
    "50km",
    "100km",
    "250km"
  )
) {
  "bajo"
} else {
  "desconocido"
}

6.2. Tabla de indicadores

tabla_indicadores <- data.frame(
  Medida = c(
    "Tamaño muestral válido",
    "Moda",
    "Cantidad de la moda",
    "Porcentaje de la moda",
    "Mediana ordinal",
    "Nivel predominante",
    "Precisión desconocida"
  ),
  Valor = c(
    N_total,
    moda_precision,
    cantidad_moda,
    paste0(
      round(
        porcentaje_moda,
        2
      ),
      "%"
    ),
    mediana_ordinal,
    nivel_predominante,
    paste0(
      n_desconocidos,
      " registros (",
      round(
        porcentaje_desconocido,
        2
      ),
      "%)"
    )
  )
)

tabla_indicadores |>

  tabla_blanca(
    titulo = "Tabla Nro. 2",
    subtitulo = "Indicadores de la precisión de ubicación"
  ) |>

  cols_label(
    Medida = "Medida",
    Valor = "Valor"
  ) |>

  cols_width(
    Medida ~ px(500),
    Valor ~ px(370)
  )
Tabla Nro. 2
Indicadores de la precisión de ubicación
Medida Valor
Tamaño muestral válido 11031
Moda 5 km
Cantidad de la moda 3178
Porcentaje de la moda 28.81%
Mediana ordinal 5 km
Nivel predominante medio
Precisión desconocida 542 registros (4.91%)
Elaborado por: Geología Grupo 1

7. CONCLUSIÓN

La precisión de ubicación comprende categorías desde exacta hasta 250 km. La mayor presencia corresponde a 5 km, con 3178 registros (28.81%), mientras que la mediana ordinal se ubica en 5 km. Por lo tanto, la precisión predominante se encuentra en un nivel medio. Además, existen 542 registros (4.91%) con precisión desconocida. Este resultado es útil para análisis regionales, pero presenta limitaciones para estudios espaciales de mayor detalle.