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)
library(e1071)
datos_nuevoartes <- read_excel("datos_nuevoartes.xlsx")
fatality_raw <- datos_nuevoartes$fatality_count
fatality_raw <- fatality_raw[!is.na(fatality_raw)]
# Se conservan únicamente los eventos con al menos un fallecido
fatality <- fatality_raw[fatality_raw > 0]
N_total <- length(fatality)
Para esta variable se excluyeron los registros con cero fallecidos para analizar únicamente los deslizamientos que ocasionaron pérdidas humanas.
# Número de observaciones
N_total <- length(fatality)
# Valores extremos
xmin <- min(fatality)
xmax <- max(fatality)
# Rango
R <- xmax - xmin
# Número de clases (Regla de Sturges)
k <- ceiling(1 + 3.322 * log10(N_total))
# Amplitud de clase
A <- ceiling(R / k)
parametros <- data.frame(
Observaciones = N_total,
Minimo = xmin,
Maximo = xmax,
Rango = R,
Clases_Sturges = k,
Amplitud = A
)
parametros
## Observaciones Minimo Maximo Rango Clases_Sturges Amplitud
## 1 2447 1 500 499 13 39
# Límites inferiores
Li <- xmin + (0:(k-1))*A
# Límites superiores
Ls <- Li + A
# El último intervalo termina en el máximo
Ls[k] <- xmax
# Etiquetas
clases_etiquetas <- paste0(Li," - ",Ls)
# Marcas de clase
MC <- round((Li+Ls)/2,2)
breaks <- c(Li, xmax)
histograma <- hist(
fatality,
breaks = breaks,
include.lowest = TRUE,
right = FALSE,
plot = FALSE
)
ni <- histograma$counts
hi <- ni/sum(ni)*100
Ni_asc <- cumsum(ni)
Ni_dsc <- rev(cumsum(rev(ni)))
Hi_asc <- cumsum(hi)
Hi_dsc <- rev(cumsum(rev(hi)))
TDF_final <- data.frame(
Clase = clases_etiquetas,
Li = Li,
Ls = Ls,
MC = MC,
ni = ni,
hi = hi,
Ni_asc = Ni_asc,
Ni_dsc = Ni_dsc,
Hi_asc = Hi_asc,
Hi_dsc = Hi_dsc
)
tabla_presentacion <- TDF_final %>%
rbind(
data.frame(
Clase = "TOTAL",
Li = NA,
Ls = NA,
MC = NA,
ni = sum(ni),
hi = 100,
Ni_asc = NA,
Ni_dsc = NA,
Hi_asc = NA,
Hi_dsc = NA
)
) %>%
gt() %>%
tab_header(
title = md("**Tabla N° 12**"),
subtitle = md(
"Distribución de frecuencias del número de fallecidos a nivel mundial (eventos mortales)"
)
) %>%
fmt_number(
columns = c(MC,hi,Hi_asc,Hi_dsc),
decimals = 2
) %>%
sub_missing(
columns = everything(),
missing_text = ""
) %>%
cols_label(
Clase = "Rango",
Li = "Li",
Ls = "Ls",
MC = "MC",
ni = "ni",
hi = "hi (%)",
Ni_asc = "Ascendente",
Ni_dsc = "Descendente",
Hi_asc = "Ascendente",
Hi_dsc = "Descendente"
) %>%
tab_spanner(
label="NI",
columns=c(Ni_asc,Ni_dsc)
) %>%
tab_spanner(
label="HI (%)",
columns=c(Hi_asc,Hi_dsc)
) %>%
tab_style(
style = cell_text(weight="bold"),
locations = cells_body(
rows = Clase=="TOTAL"
)
) %>%
tab_source_note(
source_note = md("Elaborado por: Grupo 2 – Carrera de Geología")
)
tabla_presentacion
| Tabla N° 12 | |||||||||
| Distribución de frecuencias del número de fallecidos a nivel mundial (eventos mortales) | |||||||||
| Rango | Li | Ls | MC | ni | hi (%) |
NI
|
HI (%)
|
||
|---|---|---|---|---|---|---|---|---|---|
| Ascendente | Descendente | Ascendente | Descendente | ||||||
| 1 - 40 | 1 | 40 | 20.50 | 1646 | 67.27 | 1646 | 2447 | 67.27 | 100.00 |
| 40 - 79 | 40 | 79 | 59.50 | 550 | 22.48 | 2196 | 801 | 89.74 | 32.73 |
| 79 - 118 | 79 | 118 | 98.50 | 151 | 6.17 | 2347 | 251 | 95.91 | 10.26 |
| 118 - 157 | 118 | 157 | 137.50 | 36 | 1.47 | 2383 | 100 | 97.38 | 4.09 |
| 157 - 196 | 157 | 196 | 176.50 | 24 | 0.98 | 2407 | 64 | 98.37 | 2.62 |
| 196 - 235 | 196 | 235 | 215.50 | 8 | 0.33 | 2415 | 40 | 98.69 | 1.63 |
| 235 - 274 | 235 | 274 | 254.50 | 7 | 0.29 | 2422 | 32 | 98.98 | 1.31 |
| 274 - 313 | 274 | 313 | 293.50 | 6 | 0.25 | 2428 | 25 | 99.22 | 1.02 |
| 313 - 352 | 313 | 352 | 332.50 | 7 | 0.29 | 2435 | 19 | 99.51 | 0.78 |
| 352 - 391 | 352 | 391 | 371.50 | 3 | 0.12 | 2438 | 12 | 99.63 | 0.49 |
| 391 - 430 | 391 | 430 | 410.50 | 2 | 0.08 | 2440 | 9 | 99.71 | 0.37 |
| 430 - 469 | 430 | 469 | 449.50 | 4 | 0.16 | 2444 | 7 | 99.88 | 0.29 |
| 469 - 500 | 469 | 500 | 484.50 | 3 | 0.12 | 2447 | 3 | 100.00 | 0.12 |
| TOTAL | 2447 | 100.00 | |||||||
| Elaborado por: Grupo 2 – Carrera de Geología | |||||||||
par(mar = c(8,5,4,2))
max_ni_real <- max(ni)
pos_x <- barplot(
ni,
col = "grey",
border = "black",
space = 0,
las = 1,
ylim = c(0, max_ni_real),
yaxt = "n",
xaxt = "n",
main = "Gráfica 19: Distribución local de fallecidos en deslizamientos\n a nivel mundial",
xlab = "",
ylab = "Cantidad"
)
ticks_y_ni <- pretty(c(0,max_ni_real))
axis(
side = 2,
at = ticks_y_ni,
labels = ticks_y_ni,
las = 1
)
axis(
side = 1,
at = pos_x,
labels = clases_etiquetas,
las = 2,
cex.axis = 0.75
)
mtext("Número de fallecidos", side = 1, line = 6, cex = 1)
text(
pos_x,
ni,
labels = ni,
pos = 3,
cex = 0.8,
font = 2
)
par(mar=c(8,5,4,2))
n_max_global <- N_total
barplot(
ni,
col="grey",
border="black",
space=0,
las=1,
ylim=c(0,n_max_global*1.10),
yaxt="n",
xaxt="n",
main="Gráfica 20: Distribución global de fallecidos en deslizamientos\n a nivel mundial",
xlab="",
ylab="Cantidad"
)
mtext("Número de fallecidos", side = 1, line = 5, cex = 1)
ticks_global <- pretty(c(0,n_max_global))
axis(
2,
at=ticks_global,
labels=ticks_global,
las=1
)
axis(
1,
at=pos_x,
labels=clases_etiquetas,
las=2,
cex.axis=.75
)
abline(
h=N_total,
col="red",
lty=2
)
text(
pos_x,
ni,
labels=ni,
pos=3,
cex=.8,
font=2
)
par(mar=c(8,5,4,2))
max_hi <- max(hi)
barplot(
hi,
col="#CDB79E",
border="black",
space=0,
las=1,
ylim=c(0,max_hi*1.10),
yaxt="n",
xaxt="n",
main="Gráfica 21: Distribución local de fallecidos en deslizamientos\n a nivel mundial",
xlab="",
ylab="Porcentaje (%)"
)
ticks_hi <- pretty(c(0,max_hi))
axis(
2,
at=ticks_hi,
labels=round(ticks_hi,2),
las=1
)
mtext("Número de fallecidos", side = 1, line = 5, cex = 1)
axis(
1,
at=pos_x,
labels=clases_etiquetas,
las=2,
cex.axis=.75
)
text(
pos_x,
hi,
labels=round(hi,2),
pos=3,
cex=.8,
font=2
)
par(mar=c(8,5,4,2))
barplot(
hi,
col="#CDB79E",
border="black",
space=0,
las=1,
ylim=c(0,100),
yaxt="n",
xaxt="n",
main="Gráfica 22: Distribución global de fallecidos en deslizamientos\n a nivel mundial",
xlab="",
ylab="Porcentaje (%)"
)
ticks_hi_global <- seq(0,100,20)
axis(
2,
at=ticks_hi_global,
labels=paste0(ticks_hi_global,"%"),
las=1
)
mtext("Número de fallecidos", side = 1, line = 6, cex = 1)
axis(
1,
at=pos_x,
labels=clases_etiquetas,
las=2,
cex.axis=.75
)
abline(
h=100,
col="blue",
lty=2
)
text(
pos_x,
hi,
labels=round(hi,2),
pos=3,
cex=.8,
font=2
)
par(
mfrow = c(1,1),
mar = c(5,4,4,2)
)
boxplot(
fatality,
col = "bisque",
horizontal = TRUE,
outline = TRUE,
xlab = "Número de fallecidos",
main = "Gráfica 24: Diagrama de caja del número de\nfallecidos (eventos mortales)"
)
par(mar=c(8,5,4,11))
plot(
1:length(ni),
Ni_asc,
type="b",
pch=17,
col="black",
xaxt="n",
xlab="",
ylab="Frecuencia acumulada",
ylim=c(0,max(Ni_asc)),
main="Gráfica 25: Ojivas combinadas del número de fallecidos"
)
lines(
1:length(ni),
Ni_dsc,
type="b",
pch=16,
col="blue"
)
axis(
1,
at=1:length(ni),
labels=clases_etiquetas,
las=2,
cex.axis=.75
)
mtext(
"Clases",
side=1,
line=6
)
legend(
"topright",
inset=c(-0.28,0),
xpd=TRUE,
legend=c(
"Ascendente",
"Descendente"
),
col=c("black","blue"),
pch=c(17,16),
lty=1,
bty="n"
)
x_bar <- mean(fatality)
Me <- median(fatality)
Mo <- as.numeric(
names(
sort(
table(fatality),
decreasing = TRUE
)[1]
)
)
SD <- sd(fatality)
CV <- (SD/x_bar)*100
As <- skewness(fatality)
K <- kurtosis(fatality)
tabla_indicadores <- data.frame(
Variable = "Fatality Count (>0)",
Min = min(fatality),
Max = max(fatality),
Media = x_bar,
Mediana = Me,
Moda = Mo,
`Desv. Est.` = SD,
`CV (%)` = CV,
Asimetría = As,
Curtosis = K
)
tabla_indicadores_gt <- tabla_indicadores %>%
gt() %>%
tab_header(
title = md("**Tabla N° 13**"),
subtitle = md("Indicadores estadísticos del número de fallecidos en eventos mortales")
) %>%
fmt_number(
columns = 4:10,
decimals = 2
) %>%
tab_source_note(
source_note = md("Elaborado por: Grupo 2 – Carrera de Geología")
)
tabla_indicadores_gt
| Tabla N° 13 | |||||||||
| Indicadores estadísticos del número de fallecidos en eventos mortales | |||||||||
| Variable | Min | Max | Media | Mediana | Moda | Desv..Est. | CV.... | Asimetría | Curtosis |
|---|---|---|---|---|---|---|---|---|---|
| Fatality Count (>0) | 1 | 500 | 30.95 | 5.00 | 2.00 | 51.70 | 167.01 | 3.98 | 23.55 |
| Elaborado por: Grupo 2 – Carrera de Geología | |||||||||
Q1 <- quantile(fatality,0.25)
Q3 <- quantile(fatality,0.75)
IQR_f <- Q3-Q1
lim_inf <- Q1-1.5*IQR_f
lim_sup <- Q3+1.5*IQR_f
outliers_vec <- fatality[
fatality < lim_inf |
fatality > lim_sup
]
tabla_outliers <- data.frame(
Variable = "Fatality Count (>0)",
Outliers_Detectados = as.character(length(outliers_vec)),
Limite_Inferior = lim_inf,
Limite_Superior = lim_sup,
Q1 = Q1,
Q3 = Q3
)
tabla_outliers_gt <- tabla_outliers %>%
gt() %>%
tab_header(
title = md("**Tabla N° 14**"),
subtitle = md("Detección de valores atípicos del número de fallecidos en eventos mortales")
) %>%
fmt_number(
columns = 3:6,
decimals = 2
) %>%
tab_source_note(
source_note = md("Elaborado por: Grupo 2 – Carrera de Geología")
)
tabla_outliers_gt
| Tabla N° 14 | |||||
| Detección de valores atípicos del número de fallecidos en eventos mortales | |||||
| Variable | Outliers_Detectados | Limite_Inferior | Limite_Superior | Q1 | Q3 |
|---|---|---|---|---|---|
| Fatality Count (>0) | 100 | −68.50 | 119.50 | 2.00 | 49.00 |
| Elaborado por: Grupo 2 – Carrera de Geología | |||||
La variable número de fallecidos fluctúa entre 1 y 500, y sus valores giran entorno a 5 con una desviación estándar de 51.70, siendo un conjunto de datos muy heterogéneo. El conjunto de valores se concentra fuertemente en la parte baja de la variable. Con la presencia de 100 valores atípicos superiores a 119.50.