1 Marco teórico

Los ataques de tiburones han sido históricamente un tema de alta atención pública, a pesar de que su ocurrencia real es extremadamente baja en comparación con otros riesgos acuáticos o ataques de otros animales. La letalidad de un ataque depende de múltiples factores, que se pretenden analizar en este estudio, como características del tiburón, circunstancias ambientales, tipo de actividad humana y condiciones médicas posteriores (Neff & Hueter, 2013). Desde la estadística, la clasificación binaria se ha consolidado como una herramienta esencial para modelar eventos dicotómicos, como muerte/no muerte, permitiendo estimar probabilidades en función de variables predictoras categóricas o numéricas; el uso de modelos predictivos en ecología marina ha aumentado en años recientes, ya que permiten identificar patrones claves para la gestión de riesgos, la conservación y la comprensión del comportamiento animal (Gallagher et al., 2017). En el caso de los tiburones, estudiar la letalidad desde un enfoque estadístico permite aportar evidencia objetiva útil para programas de seguridad en playas, manejo sostenible y educación comunitaria.

2 Introducción

Los ataques de tiburones, aunque poco frecuentes, generan un profundo impacto social, mediático y económico en las comunidades costeras. Comprender qué factores influyen en que un ataque resulte letal es fundamental no solo para mejorar las medidas de seguridad en zonas turísticas, sino también para promover una convivencia responsable con la fauna marina. A través de un enfoque cuantitativo, este estudio emplea herramientas de análisis estadístico y de ciencia de datos para identificar patrones detrás de la letalidad de ataques de tiburones. Se utiliza un modelo de clasificación binaria que permite evaluar la influencia de variables relacionadas con el evento, como la actividad realizada por la víctima, el tipo de ataque, el país y la especie del tiburón involucrado. Este análisis ofrece información relevante para la toma de decisiones en contextos de conservación, gestión de riesgos y educación ambiental, contribuyendo a una percepción más informada y menos alarmista sobre estos animales.

3 Objetivo

Construir un modelo de clasificación binaria que prediga la letalidad de los ataques de tiburones utilizando variables como: edad, tipo de herida, actividad realizada, país o locación.

Se evaluará el desempeño del modelo mediante métricas estadísticas y visualizaciones que permitan identificar los factores que más influyen en la probabilidad de que un ataque resulte letal.

4 Metodología binaria (explicación conceptual)

Una metodología binaria implica que la variable respuesta solo tiene dos posibles valores. En este caso:

0 = ataque no letal

1 = ataque letal

La técnica empleada es regresión logística binaria, que modela la probabilidad de que ocurra el evento “letalidad” según un conjunto de predictores.

Ventajas: Permite incluir variables categóricas (país, especie, actividad, tipo de ataque).

Produce probabilidades interpretables en términos de riesgo.

Su salida puede evaluarse con métricas estándar como accuracy, sensibilidad, especificidad y curva ROC.

5 Metodología

El análisis se desarrolló en R, siguiendo varias etapas:

  1. Obtención de datos La base de datos original fue encontrada en línea (Global Shark Attack File), luego revisada, depurada y adaptada al propósito del estudio. Se eliminaron registros incompletos, duplicados o inconsistentes, y se reorganizó la información siguiendo criterios estadísticos de limpieza.

  2. Catálogo de los datos Las variables incluidas en el modelo fueron: fatal → Variable objetivo (factor: “Fatal” / “No fatal”).

Type → Tipo de ataque.

Activity → Actividad realizada por la persona.

Country → País donde ocurrió el ataque.

Species → Especie del tiburón involucrado.

Variables como Country y Species se agruparon con fct_lump_min para evitar categorías con muy pocos datos.

  1. Carga y preparación de los datos Las transformaciones principales: Conversión de variables categóricas a factores.

Agrupación de categorías infrecuentes.

Relevel de categorías base (“USA”, “white shark”, “bañistas”) para facilitar interpretación.

Filtrado de registros atípicos.

  1. Análisis descriptivo y exploratorio Los hallazgos clave fueron:

La mayoría de ataques no fueron letales (clase desbalanceada).

Actividades como bañistas y surf fueron las más frecuentes.

Países como EE.UU., Australia y Sudáfrica concentraron la mayor cantidad de casos.

Especies más comunes: white shark, tiger shark, bull shark.

Se detectaron variables altamente heterogéneas, justificando la agrupación.

6 Consolidación de resultados

El modelo ajustado glm() produjo hallazgos clave:

  1. Coeficientes significativos Variables que incrementan la probabilidad de letalidad: Accidentes con barcos/aviones (p < 0.01)

Actividades provocativas (p cercano a significativo)

Países como Australia, Nueva Caledonia, Papua Nueva Guinea, Sudáfrica.

Type1 (según categorización del dataset)

Variables que disminuyen la probabilidad de letalidad: Especies como blacktip, gray, small shark, copper shark, mako shark (coeficientes negativos significativos).

  1. Métricas del modelo Accuracy: 0.735

Sensibilidad: 0.791 → buen reconocimiento de ataques letales

Especificidad: 0.725 → buen reconocimiento de ataques no letales

Precisión: 0.33 → indica desbalance de clases (pocos letales)

  1. Curva ROC El área bajo la curva (AUC) fue alta, reflejando una buena capacidad discriminatoria del modelo. La curva se aproxima al eje izquierdo superior, lo cual es un indicador de buen desempeño. La Figura presenta la curva ROC (Receiver Operating Characteristic) generada a partir del modelo binario de predicción de letalidad. En este gráfico se evalúa la capacidad discriminatoria del modelo mediante la relación entre la sensibilidad (verdaderos positivos) y 1 – especificidad (falsos positivos) a diferentes umbrales de probabilidad. La curva observada (representada en color rojo) se ubica de forma clara por encima de la diagonal gris que corresponde a un modelo sin capacidad predictiva (clasificación al azar). Esto indica que el modelo es consistentemente mejor que el azar en la clasificación de ataques letales y no letales. La forma de la curva, que asciende rápidamente hacia valores altos de sensibilidad con pérdidas relativamente bajas de especificidad, sugiere un buen poder discriminante. Esto implica que el modelo logra identificar correctamente una proporción considerable de los ataques letales sin incrementar excesivamente los falsos positivos. Visualmente, se observa que la curva se acerca al extremo superior izquierdo del gráfico, lo cual es característico de modelos con desempeño satisfactorio. Aunque el valor exacto del AUC (Área Bajo la Curva) no se muestra explícitamente en la gráfica, la morfología curva y alejada de la diagonal permite inferir que este AUC es alto, probablemente superior a 0.80. En términos prácticos, esto significa que, ante dos ataques escogidos al azar (uno letal y uno no letal), el modelo tiene una alta probabilidad de asignar al ataque letal una probabilidad mayor de letalidad que al no letal. En conjunto, esta gráfica respalda que el modelo no solo es estadísticamente adecuado, sino también operativamente útil para apoyar decisiones de gestión del riesgo, permitiendo discriminar con buena precisión entre situaciones de mayor o menor probabilidad de muerte en un ataque de tiburón.
# Cargar librerías necesarias
library(dplyr)
library(car)
library(pROC)
library(tidyr)
library(forcats)

ataques <- ataques %>%
  mutate(Country = fct_lump_min(Country, min = 5),  
         Species = fct_lump_min(Species, min = 5))


# Asegurarnos de que las variables categóricas sean factores
ataques <- ataques %>%
  mutate(
    fatal = as.factor(fatal),
    Type = as.factor(Type),
    
  )

ataques <- ataques %>%
  mutate(
    Country_grouped = fct_lump(Country, n = 10),  
    Species_grouped = fct_lump(Species, n = 10)   
  )

ataques$Activity <- as.factor(ataques$Activity)
ataques$Activity <- relevel(ataques$Activity, ref = "bañistas")

ataques$Country_grouped <- as.factor(ataques$Country_grouped)
ataques$Country_grouped <- relevel(ataques$Country_grouped, ref = "USA")

ataques$Species_grouped <- as.factor(ataques$Species_grouped)
ataques$Species_grouped <- relevel(ataques$Species_grouped, ref = "white shark")


# Ajustar el modelo logístico 

mod <- glm(fatal ~ Type + Activity + Country_grouped + Species_grouped, family = binomial, data = ataques) 
summary(mod) 
## 
## Call:
## glm(formula = fatal ~ Type + Activity + Country_grouped + Species_grouped, 
##     family = binomial, data = ataques)
## 
## Coefficients:
##                                      Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                          -1.84397    0.19297  -9.556  < 2e-16 ***
## Type1                                -3.06024    1.06447  -2.875 0.004042 ** 
## Activityaccidentes barcos y aviones   2.03345    0.75775   2.684 0.007284 ** 
## Activitybuceo                        -0.03603    0.21151  -0.170 0.864740    
## Activityindirecto                    -0.52974    0.45821  -1.156 0.247641    
## Activitypesca/caza                   -0.81865    0.22066  -3.710 0.000207 ***
## Activityprovocacion                   2.02508    1.23456   1.640 0.100938    
## Activityuso de barcos                -0.94210    0.45462  -2.072 0.038239 *  
## Country_groupedAUSTRALIA              1.42353    0.21698   6.561 5.35e-11 ***
## Country_groupedBAHAMAS               -0.96850    1.11567  -0.868 0.385343    
## Country_groupedBRAZIL                 0.41362    0.66575   0.621 0.534409    
## Country_groupedEGYPT                  0.98309    0.62683   1.568 0.116799    
## Country_groupedITALY                  0.86723    0.59600   1.455 0.145646    
## Country_groupedNEW CALEDONIA          1.68293    0.64004   2.629 0.008553 ** 
## Country_groupedNEW ZEALAND            1.24306    0.51132   2.431 0.015054 *  
## Country_groupedPAPUA NEW GUINEA       4.33108    0.79734   5.432 5.57e-08 ***
## Country_groupedSOUTH AFRICA           0.76793    0.25368   3.027 0.002469 ** 
## Country_groupedOther                  1.99888    0.24420   8.185 2.72e-16 ***
## Species_groupedblacktip shark        -3.03840    1.02108  -2.976 0.002924 ** 
## Species_groupedblue shark            -0.46011    0.52982  -0.868 0.385165    
## Species_groupedbull shark            -0.40771    0.25255  -1.614 0.106454    
## Species_groupedcarpet shark         -16.91095  499.85800  -0.034 0.973012    
## Species_groupedcopper shark          -1.90912    0.52898  -3.609 0.000307 ***
## Species_groupedgray shark            -3.12035    1.04447  -2.987 0.002813 ** 
## Species_groupedmako shark            -1.64196    0.76757  -2.139 0.032423 *  
## Species_groupednurse shark          -14.90568  517.08416  -0.029 0.977003    
## Species_groupedsmall shark           -2.44096    0.77534  -3.148 0.001643 ** 
## Species_groupedtiger shark            0.16090    0.21522   0.748 0.454705    
## Species_groupedOther                 -1.89274    0.33586  -5.635 1.75e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1445.9  on 1737  degrees of freedom
## Residual deviance: 1107.1  on 1709  degrees of freedom
## AIC: 1165.1
## 
## Number of Fisher Scoring iterations: 16
exp(coef(mod))
##                         (Intercept)                               Type1 
##                        1.581884e-01                        4.687636e-02 
## Activityaccidentes barcos y aviones                       Activitybuceo 
##                        7.640405e+00                        9.646118e-01 
##                   Activityindirecto                  Activitypesca/caza 
##                        5.887582e-01                        4.410247e-01 
##                 Activityprovocacion               Activityuso de barcos 
##                        7.576716e+00                        3.898094e-01 
##            Country_groupedAUSTRALIA              Country_groupedBAHAMAS 
##                        4.151762e+00                        3.796514e-01 
##               Country_groupedBRAZIL                Country_groupedEGYPT 
##                        1.512290e+00                        2.672689e+00 
##                Country_groupedITALY        Country_groupedNEW CALEDONIA 
##                        2.380303e+00                        5.381274e+00 
##          Country_groupedNEW ZEALAND     Country_groupedPAPUA NEW GUINEA 
##                        3.466198e+00                        7.602600e+01 
##         Country_groupedSOUTH AFRICA                Country_groupedOther 
##                        2.155292e+00                        7.380767e+00 
##       Species_groupedblacktip shark           Species_groupedblue shark 
##                        4.791164e-02                        6.312152e-01 
##           Species_groupedbull shark         Species_groupedcarpet shark 
##                        6.651748e-01                        4.525504e-08 
##         Species_groupedcopper shark           Species_groupedgray shark 
##                        1.482103e-01                        4.414157e-02 
##           Species_groupedmako shark          Species_groupednurse shark 
##                        1.936012e-01                        3.361595e-07 
##          Species_groupedsmall shark          Species_groupedtiger shark 
##                        8.707736e-02                        1.174564e+00 
##                Species_groupedOther 
##                        1.506581e-01
prob <- predict(mod, type = "response")
roc_obj <- roc(ataques$fatal, prob)
plot(roc_obj, col = "darkred")

auc(roc_obj)
## Area under the curve: 0.8334
# 1. Verificar los datos
cat("Niveles de fatal:", levels(ataques$fatal), "\n")
## Niveles de fatal: 0 1
# 2. Usar índices numéricos para evitar problemas con niveles
roc_obj <- roc(ataques$fatal, prob)
punto_optimo <- coords(roc_obj, "best", ret = "threshold")[1, "threshold"]

# 3. Crear predicciones como factor con los mismos niveles
predicciones <- ifelse(prob > punto_optimo, 1, 0)
# Convertir a factor con los mismos niveles que el original
predicciones_factor <- factor(predicciones, 
                              levels = c(0, 1), 
                              labels = levels(ataques$fatal))

# 4. Matriz de confusión básica
matriz_confusion <- table(Predicción = predicciones_factor, 
                          Real = ataques$fatal)

print("MATRIZ DE CONFUSIÓN:")
## [1] "MATRIZ DE CONFUSIÓN:"
print(matriz_confusion)
##           Real
## Predicción    0    1
##          0 1076   53
##          1  408  201
# 5. Métricas manuales 
VP <- matriz_confusion[2, 2]  
VN <- matriz_confusion[1, 1]  
FP <- matriz_confusion[2, 1]
FN <- matriz_confusion[1, 2]

cat("\nMÉTRICAS:\n")
## 
## MÉTRICAS:
cat("Accuracy:", round((VP + VN) / sum(matriz_confusion), 3), "\n")
## Accuracy: 0.735
cat("Sensitivity:", round(VP / (VP + FN), 3), "\n")
## Sensitivity: 0.791
cat("Specificity:", round(VN / (VN + FP), 3), "\n")
## Specificity: 0.725
cat("Precision:", round(VP / (VP + FP), 3), "\n")
## Precision: 0.33

El análisis se realizó con librerías:

dplyr

pROC

tidyr

forcats

car

Incluyó:

Limpieza y transformación de datos

Ajuste del modelo logístico

Obtención de predicciones

Curva ROC y AUC

Matriz de confusión

Cálculo manual de métricas

7 Puntos clave

La letalidad de un ataque no depende exclusivamente de la especie del tiburón.

Factores humanos como actividad y ubicación geográfica son predictores críticos.

El modelo logístico mostró un buen desempeño general.

El desbalance de clases afecta la precisión, pero no la sensibilidad ni el AUC.

Este tipo de análisis puede apoyar protocolos de seguridad costera.

8 Recomendaciones

Implementar programas educativos focalizados en actividades de alto riesgo.

Mejorar el registro global de ataques para reducir inconsistencias.

Incorporar variables ambientales: turbidez del agua, clima, profundidad.

Probar modelos adicionales como Random Forest o Gradient Boosting.

Realizar calibración del modelo ante nuevos datos.

9 Conclusión final

El presente análisis demuestra que es posible predecir la letalidad de un ataque de tiburón mediante un modelo estadístico binario basado en variables ambientales, humanas y biológicas. Los resultados revelan que la ubicación y actividad humana tienen una influencia considerable sobre los desenlaces fatales, mientras que la especie del tiburón no es siempre un factor determinante. El modelo presentó un desempeño sólido, evidenciado por una buena sensibilidad, especificidad y AUC. Esta aproximación analítica contribuye a una comprensión más profunda de los riesgos, ayudando a la gestión adecuada de playas y fomentando una percepción más equilibrada frente a los tiburones, especies esenciales para la estabilidad de los ecosistemas marinos.

10 Referencias

Gallagher, A. J., Hammerschlag, N., Cooke, S. J., Costa, D. P., & Irschick, D. J. (2017). Evolutionary theory as a tool for predicting extinction risk. Trends in Ecology & Evolution, 32(12), 895–908.

Neff, C., & Hueter, R. (2013). Science, policy, and the public discourse of shark “attack”: A proposal for reclassifying human–shark interactions. Journal of Environmental Studies and Sciences, 3, 65–73.

Global Shark Attack File. (2024). Shark Incident Database. https://www.sharkattackfile.net