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")
## New names:
## • `` -> `...32`
## • `` -> `...33`
## • `` -> `...34`
## • `` -> `...35`
injury_raw <- datos_nuevoartes$injury_count
injury_raw <- injury_raw[!is.na(injury_raw)]
# Se conservan únicamente los eventos con al menos un herido
injury <- injury_raw[injury_raw > 0]
N_total <- length(injury)
Para esta variable se excluyeron los registros con cero heridos para analizar únicamente los deslizamientos que ocasionaron personas afectadas.
N_total <- length(injury)
xmin <- min(injury)
xmax <- max(injury)
R <- xmax - xmin
# Regla de Sturges
k <- ceiling(1 + 3.322 * log10(N_total))
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 2595 1 237 236 13 19
Li <- xmin + (0:(k-1))*A
Ls <- Li + A
Ls[k] <- xmax
clases_etiquetas <- paste0(Li," - ",Ls)
MC <- round((Li+Ls)/2,2)
breaks <- c(Li,xmax)
histograma <- hist(
injury,
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 heridos en deslizamientos a nivel mundial"
)
) %>%
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 heridos en deslizamientos a nivel mundial | |||||||||
| Rango | Li | Ls | MC | ni | hi (%) |
NI
|
HI (%)
|
||
|---|---|---|---|---|---|---|---|---|---|
| Ascendente | Descendente | Ascendente | Descendente | ||||||
| 1 - 20 | 1 | 20 | 10.50 | 1138 | 43.85 | 1138 | 2595 | 43.85 | 100.00 |
| 20 - 39 | 20 | 39 | 29.50 | 737 | 28.40 | 1875 | 1457 | 72.25 | 56.15 |
| 39 - 58 | 39 | 58 | 48.50 | 278 | 10.71 | 2153 | 720 | 82.97 | 27.75 |
| 58 - 77 | 58 | 77 | 67.50 | 129 | 4.97 | 2282 | 442 | 87.94 | 17.03 |
| 77 - 96 | 77 | 96 | 86.50 | 118 | 4.55 | 2400 | 313 | 92.49 | 12.06 |
| 96 - 115 | 96 | 115 | 105.50 | 72 | 2.77 | 2472 | 195 | 95.26 | 7.51 |
| 115 - 134 | 115 | 134 | 124.50 | 82 | 3.16 | 2554 | 123 | 98.42 | 4.74 |
| 134 - 153 | 134 | 153 | 143.50 | 27 | 1.04 | 2581 | 41 | 99.46 | 1.58 |
| 153 - 172 | 153 | 172 | 162.50 | 8 | 0.31 | 2589 | 14 | 99.77 | 0.54 |
| 172 - 191 | 172 | 191 | 181.50 | 2 | 0.08 | 2591 | 6 | 99.85 | 0.23 |
| 191 - 210 | 191 | 210 | 200.50 | 1 | 0.04 | 2592 | 4 | 99.88 | 0.15 |
| 210 - 229 | 210 | 229 | 219.50 | 2 | 0.08 | 2594 | 3 | 99.96 | 0.12 |
| 229 - 237 | 229 | 237 | 233.00 | 1 | 0.04 | 2595 | 1 | 100.00 | 0.04 |
| TOTAL | 2595 | 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 del número de heridos 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 heridos", 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 del número de heridos en deslizamientos\n a nivel mundial",
xlab="",
ylab="Cantidad"
)
mtext("Número de heridos", 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 del número de heridos 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 heridos", 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 del número de heridos 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 heridos", 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(
injury,
col = "bisque",
horizontal = TRUE,
outline = TRUE,
xlab = "Número de heridos",
main = "Gráfica 24: Diagrama de caja del número de\nheridos en deslizamientos"
)
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 heridos"
)
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(injury)
Me <- median(injury)
Mo <- as.numeric(
names(
sort(
table(injury),
decreasing = TRUE
)[1]
)
)
SD <- sd(injury)
CV <- (SD/x_bar)*100
As <- skewness(injury)
K <- kurtosis(injury)
tabla_indicadores <- data.frame(
Variable = "Injury Count (>0)",
Min = min(injury),
Max = max(injury),
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 heridos 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 heridos en eventos mortales | |||||||||
| Variable | Min | Max | Media | Mediana | Moda | Desv..Est. | CV.... | Asimetría | Curtosis |
|---|---|---|---|---|---|---|---|---|---|
| Injury Count (>0) | 1 | 237 | 31.26 | 25.00 | 1.00 | 33.83 | 108.22 | 1.68 | 3.14 |
| Elaborado por: Grupo 2 – Carrera de Geología | |||||||||
Q1 <- quantile(injury,0.25)
Q3 <- quantile(injury,0.75)
IQR_i <- Q3-Q1
lim_inf <- Q1-1.5*IQR_i
lim_sup <- Q3+1.5*IQR_i
outliers_vec <- injury[
injury < lim_inf |
injury > lim_sup
]
tabla_outliers <- data.frame(
Variable = "Injury 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 heridos en deslizamientos"
)
) %>%
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 heridos en deslizamientos | |||||
| Variable | Outliers_Detectados | Limite_Inferior | Limite_Superior | Q1 | Q3 |
|---|---|---|---|---|---|
| Injury Count (>0) | 195 | −50.00 | 94.00 | 4.00 | 40.00 |
| Elaborado por: Grupo 2 – Carrera de Geología | |||||
La variable número de heridos fluctúa entre 1 y 237, y sus valores giran entorno a 31.26 con una desviación estándar de 33.83, 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 195 valores atípicos que van desde 94 hasta 237 heridos. Por lo tanto, esta distribución resulta altamente perjudicial porque indica la presencia de deslizamientos con un alto impacto humano.