library(readxl)
library(gt)
datos <- read_excel(
"dataset_deslizamientos_dia_hora.xlsx",
sheet = 1
)
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
)
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.
El orden se establece desde la mayor precisión hasta la menor:
La categoría desconocida no posee una posición dentro de este orden.
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
)
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 | ||
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
)
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
)
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"
}
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 | |
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.