# Carga de librerías necesarias
library(knitr)
library(scales)
# setwd("C:/Users/ronal/OneDrive/Desktop") # Ajustar si es necesario
datos <- read.csv("database (1).csv", header = TRUE, sep = ",", dec = ".")
# Extracción y limpieza de la variable
variable_exp <- na.omit(datos$Liquid.Explosion)
# 3. Cálculo de Frecuencias
ni_exp <- table(na.omit(datos$Liquid.Explosion))
hi_exp <- prop.table(ni_exp) * 100
# Creación del Data Frame
tabla_exp_final <- data.frame(
Estado = names(ni_exp),
ni = as.vector(ni_exp),
hi = as.vector(round(hi_exp, 2))
)
# Crear la fila de TOTAL
fila_total <- data.frame(
Estado = "**Total**",
ni = sum(tabla_exp_final$ni),
hi = sum(tabla_exp_final$hi)
)
# Tabla final unida
tabla_exp_final <- rbind(tabla_exp_final, fila_total)
tabla_exp_final$hi <- paste0(tabla_exp_final$hi, "%")
colnames(tabla_exp_final) <- c("¿Hubo Explosión?",
"Frecuencia Absoluta (ni)",
"Frecuencia Relativa (hi)")
kable(tabla_exp_final, align = "c", caption = "Tabla No. 1: Análisis de Frecuencias para Explosiones líquidas.")
| ¿Hubo Explosión? | Frecuencia Absoluta (ni) | Frecuencia Relativa (hi) |
|---|---|---|
| NO | 2780 | 99.46% |
| YES | 15 | 0.54% |
| Total | 2795 | 100% |
par(mfrow = c(1, 2))
# Gráfica No. 1: Distribución Global
barplot(ni_exp,
main = " Distribución Global",
xlab = "¿Explosión?", ylab = "Cantidad",
col = "gray80", border = "black",
ylim = c(0, max(ni_exp) * 1.2))
# Gráfica No. 2: Distribución Local (Zoom 90%)
umbral_90 <- quantile(datos$All.Costs[datos$All.Costs > 0], 0.90, na.rm = TRUE)
datos_local <- datos[datos$All.Costs <= umbral_90 & !is.na(datos$All.Costs), ]
ni_local <- table(na.omit(datos_local$Liquid.Explosion))
barplot(ni_local,
main = " Distribución Local ",
xlab = "¿Explosión?", ylab = "Cantidad",
col = "gray40", border = "black",
ylim = c(0, max(ni_local) * 1.2))
par(mfrow = c(1, 2))
# Gráfica No. 3: Global Porcentual
hi_global <- prop.table(table(na.omit(datos$Liquid.Explosion))) * 100
bp_g <- barplot(hi_global, main = "Global %",
ylab = "Porcentaje (%)", col = "gray90", ylim = c(0, 110))
text(x = bp_g, y = hi_global, label = paste0(round(hi_global, 2), "%"), pos = 3, font = 2)
# Gráfica No. 4: Local Porcentual
hi_local <- prop.table(ni_local) * 100
bp_l <- barplot(hi_local, main = "Local %",
ylab = "Porcentaje (%)", col = "gray60", ylim = c(0, 110))
text(x = bp_l, y = hi_local, label = paste0(round(hi_local, 2), "%"), pos = 3, font = 2)
par(mfrow = c(1, 1))
TablaExp_Global <- data.frame(Categoría = names(ni_exp), hi_porc = as.vector(hi_exp))
colores_grises <- gray.colors(length(TablaExp_Global$Categoría), start = 0.4, end = 0.9)
pie(TablaExp_Global$hi_porc, labels = NA, radius = 1,
main = "Gráfica No. 5: Porcentaje de Explosiones Líquidas",
col = colores_grises)
legend("topright", legend = paste(TablaExp_Global$Categoría, ": ", round(TablaExp_Global$hi_porc, 2), "%"),
fill = colores_grises, cex = 1, title = "¿Hubo explosión?")
tabla_frec_exp <- table(na.omit(datos$Liquid.Explosion))
moda_valor <- names(tabla_frec_exp)[which.max(tabla_frec_exp)]
frecuencia_moda <- max(tabla_frec_exp)
cat("La moda de la variable es:", moda_valor, "\n")
## La moda de la variable es: NO
CONCLUSIONES
Valor más frecuente de la variable Liquid Explosion es ‘NO’.con un total de 2,780 registros. Esto representa aproximadamente el 99.46% de los casos, indicando que las explosiones líquidas son eventos extremadamente inusuales.”