Cargar Datos
datos <- read.csv("database-_1_.csv")
zona<-datos$Cause.Category
Tabla de
Frecuencia
TDF_causa <- datos %>%
mutate(Cause.Category = case_when(
Cause.Category == "CORROSION" ~ "Corrosión",
Cause.Category == "MATERIAL/WELD/EQUIP FAILURE" ~ "Falla del Equipo",
Cause.Category == "EXCAVATION DAMAGE" ~ "Daño por Excavación",
Cause.Category == "INCORRECT OPERATION" ~ "Operación Incorrecta",
Cause.Category == "NATURAL FORCE DAMAGE" ~ "Fuerzas Naturales",
Cause.Category == "OTHER OUTSIDE FORCE DAMAGE" ~ "Fuerzas Externas",
Cause.Category == "ALL OTHER CAUSES" ~ "Causas menores",
TRUE ~ as.character(Cause.Category)
)) %>%
count(Cause.Category, name = "ni") %>%
arrange(desc(ni)) %>%
mutate(hi = (ni / sum(ni)) * 100) %>%
mutate(hi = sprintf("%.2f", round(hi, 2)))
Sumatoria <- data.frame(
Cause.Category = "TOTAL",
ni = sum(TDF_causa$ni),
hi = "100.00"
)
TDF_final <- rbind(TDF_causa, Sumatoria)
colnames(TDF_final) <- c("Causa del Accidente", "ni", "hi (%)")
kable(TDF_final, align = 'c',
caption = "Tabla de Frecuencia: Causas de Accidentes") %>%
kable_styling(full_width = FALSE, position = "center",
bootstrap_options = c("striped", "hover", "bordered")) %>%
row_spec(nrow(TDF_final), bold = TRUE, background = "#f2f2f2") %>%
row_spec(1, bold = TRUE, color = "black")
Tabla de Frecuencia: Causas de Accidentes
|
Causa del Accidente
|
ni
|
hi (%)
|
|
Falla del Equipo
|
1435
|
51.34
|
|
Corrosión
|
592
|
21.18
|
|
Operación Incorrecta
|
378
|
13.52
|
|
Causas menores
|
118
|
4.22
|
|
Fuerzas Naturales
|
118
|
4.22
|
|
Daño por Excavación
|
97
|
3.47
|
|
Fuerzas Externas
|
57
|
2.04
|
|
TOTAL
|
2795
|
100.00
|
Distribución absoluta
general de categoría de causas
datos_causa <- datos %>%
mutate(Cause.Category = case_when(
Cause.Category == "CORROSION" ~ "Corrosión",
Cause.Category == "MATERIAL/WELD/EQUIP FAILURE" ~ "Falla del Equipo",
Cause.Category == "EXCAVATION DAMAGE" ~ "Daño por Excavación",
Cause.Category == "INCORRECT OPERATION" ~ "Operación Incorrecta",
Cause.Category == "NATURAL FORCE DAMAGE" ~ "Fuerzas Naturales",
Cause.Category == "OTHER OUTSIDE FORCE DAMAGE" ~ "Fuerzas Externas",
Cause.Category == "ALL OTHER CAUSES" ~ "Causas menores",
TRUE ~ as.character(Cause.Category)
)) %>%
count(Cause.Category, name = "ni")
ggplot(datos_causa, aes(x = reorder(Cause.Category, -ni), y = ni)) +
geom_bar(stat = "identity", fill = "skyblue", width = 0.7) +
scale_y_continuous(limits = c(0, 2795), breaks = c(0, 1000, 2000, 2795)) +
labs(
title = "Gráfica 1: Cantidad general de Accidentes por Causa generales",
x = "Causa del Accidente",
y = "Número de Accidentes"
) +
theme_classic() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1, size = 10, color = "black"),
plot.title = element_text(face = "bold", hjust = 0.5)
)

Distribución absoluta
local de categoría de causas
datos_causa <- datos %>%
mutate(Cause.Category = case_when(
Cause.Category == "CORROSION" ~ "Corrosión",
Cause.Category == "MATERIAL/WELD/EQUIP FAILURE" ~ "Falla del Equipo",
Cause.Category == "EXCAVATION DAMAGE" ~ "Daño por Excavación",
Cause.Category == "INCORRECT OPERATION" ~ "Operación Incorrecta",
Cause.Category == "NATURAL FORCE DAMAGE" ~ "Fuerzas Naturales",
Cause.Category == "OTHER OUTSIDE FORCE DAMAGE" ~ "Fuerzas Externas",
Cause.Category == "ALL OTHER CAUSES" ~ "Causas menores",
TRUE ~ as.character(Cause.Category)
)) %>%
count(Cause.Category, name = "ni")
ggplot(datos_causa, aes(x = reorder(Cause.Category, -ni), y = ni)) +
geom_bar(stat = "identity", fill = "skyblue", width = 0.7) +
scale_y_continuous(limits = c(0, 1435), breaks = c(0, 500, 1000, 1435)) +
labs(
title = "Gráfica 2: Cantidad local de Accidentes por Causa generales",
x = "Causa del Accidente",
y = "Número de Accidentes"
) +
theme_classic() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1, size = 10, color = "black"),
plot.title = element_text(face = "bold", hjust = 0.5)
)

Incidencia Relativa
local por Categoría
datos_causa <- datos %>%
mutate(Cause.Category = case_when(
Cause.Category == "CORROSION" ~ "Corrosión",
Cause.Category == "MATERIAL/WELD/EQUIP FAILURE" ~ "Falla del Equipo",
Cause.Category == "EXCAVATION DAMAGE" ~ "Daño por Excavación",
Cause.Category == "INCORRECT OPERATION" ~ "Operación Incorrecta",
Cause.Category == "NATURAL FORCE DAMAGE" ~ "Fuerzas Naturales",
Cause.Category == "OTHER OUTSIDE FORCE DAMAGE" ~ "Fuerzas Externas",
Cause.Category == "ALL OTHER CAUSES" ~ "Causas menores",
TRUE ~ as.character(Cause.Category)
)) %>%
count(Cause.Category, name = "ni") %>%
mutate(hi = (ni / sum(ni)) * 100)
ggplot(datos_causa, aes(x = reorder(Cause.Category, -hi), y = hi)) +
geom_bar(stat = "identity", fill = "skyblue", width = 0.7) +
scale_y_continuous(limits = c(0, 60), breaks = seq(0, 60, by = 10)) +
labs(
title = "Gráfica 3: Porcentaje local de Accidentes por Causa",
x = "Causa del Accidente",
y = "Porcentaje de Accidentes (%)"
) +
theme_classic() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1, size = 10, color = "black"),
plot.title = element_text(face = "bold", hjust = 0.5)
)

Incidencia Relativa
global por Categoría de causas
datos_causa <- datos %>%
mutate(Cause.Category = case_when(
Cause.Category == "CORROSION" ~ "Corrosión",
Cause.Category == "MATERIAL/WELD/EQUIP FAILURE" ~ "Falla del Equipo",
Cause.Category == "EXCAVATION DAMAGE" ~ "Daño por Excavación",
Cause.Category == "INCORRECT OPERATION" ~ "Operación Incorrecta",
Cause.Category == "NATURAL FORCE DAMAGE" ~ "Fuerzas Naturales",
Cause.Category == "OTHER OUTSIDE FORCE DAMAGE" ~ "Fuerzas Externas",
Cause.Category == "ALL OTHER CAUSES" ~ "Causas menores",
TRUE ~ as.character(Cause.Category)
)) %>%
count(Cause.Category, name = "ni") %>%
mutate(hi = (ni / sum(ni)) * 100)
ggplot(datos_causa, aes(x = reorder(Cause.Category, -hi), y = hi)) +
geom_bar(stat = "identity", fill = "skyblue", width = 0.7) +
scale_y_continuous(limits = c(0, 100), breaks = seq(0, 100, by = 20)) +
labs(
title = "Gráfica 4: Porcentaje general de Accidentes por Causa",
x = "Causa del Accidente",
y = "Porcentaje de Accidentes (%)"
) +
theme_classic() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1, size = 10, color = "black"),
plot.title = element_text(face = "bold", hjust = 0.5)
)

Diagrama Circular
datos_pastel <- datos %>%
mutate(Cause.Category = case_when(
Cause.Category == "CORROSION" ~ "Corrosión",
Cause.Category == "MATERIAL/WELD/EQUIP FAILURE" ~ "Falla del Equipo",
Cause.Category == "EXCAVATION DAMAGE" ~ "Daño por Excavación",
Cause.Category == "INCORRECT OPERATION" ~ "Operación Incorrecta",
Cause.Category == "NATURAL FORCE DAMAGE" ~ "Fuerzas Naturales",
Cause.Category == "OTHER OUTSIDE FORCE DAMAGE" ~ "Fuerzas Externas",
Cause.Category == "ALL OTHER CAUSES" ~ "Causas menores",
TRUE ~ as.character(Cause.Category)
)) %>%
count(Cause.Category, name = "ni") %>%
mutate(prop = ni / sum(ni) * 100) %>%
arrange(desc(Cause.Category)) %>%
mutate(ypos = cumsum(prop) - 0.5 * prop)
ggplot(datos_pastel, aes(x = "", y = prop, fill = Cause.Category)) +
geom_bar(stat = "identity", width = 1, color = "white") +
coord_polar("y", start = 0) +
theme_void() +
geom_text(aes(label = paste0(round(prop, 1), "%")),
position = position_stack(vjust = 0.5),
color = "black", size = 3) +
labs(
title = "Diagrama Circular: Causas de Accidentes",
fill = "Causa del Accidente"
) +
scale_fill_brewer(palette = "Blues") +
theme(
legend.position = "right", # Posición a la derecha
legend.title = element_text(face = "bold"),
plot.title = element_text(hjust = 0.5, face = "bold", size = 14)
)

Indicadores
Estadíticos
datos_espanol <- datos %>%
mutate(Cause.Category = case_when(
Cause.Category == "CORROSION" ~ "Corrosión",
Cause.Category == "MATERIAL/WELD/EQUIP FAILURE" ~ "Falla del Equipo",
Cause.Category == "EXCAVATION DAMAGE" ~ "Daño por Excavación",
Cause.Category == "INCORRECT OPERATION" ~ "Operación Incorrecta",
Cause.Category == "NATURAL FORCE DAMAGE" ~ "Fuerzas Naturales",
Cause.Category == "OTHER OUTSIDE FORCE DAMAGE" ~ "Fuerzas Externas",
Cause.Category == "ALL OTHER CAUSES" ~ "Causas menores",
TRUE ~ as.character(Cause.Category)
))
tabla_causas <- table(na.omit(datos_espanol$Cause.Category))
causa_top <- names(tabla_causas)[which.max(tabla_causas)]
cantidad_top <- max(tabla_causas)
total_eventos <- sum(tabla_causas)
porcentaje_top <- round((cantidad_top / total_eventos) * 100, 2)
cat("La causa principal de los accidentes es:", causa_top, "\n")
## La causa principal de los accidentes es: Falla del Equipo
cat("Ocurrió", cantidad_top, "veces, lo que representa el", porcentaje_top, "% del total de casos.\n")
## Ocurrió 1435 veces, lo que representa el 51.34 % del total de casos.
Conclusión
#El análisis de las causas revela que la Falla del Equipo es el factor predominante, consolidándose como la moda estadística. No obstante, factores humanos y externos, como la Operación Incorrecta, conservan una relevancia significativa. La evidencia gráfica sugiere que, si bien la integridad de la infraestructura es el punto más crítico, las deficiencias en los procedimientos operativos también impactan considerablemente en la siniestralidad total.