Esta información se deriva de fuentes del USGS. El USGS emite alertas inmediatas, flujos de datos y utilidades web que informan sobre sismos prácticamente al momento de ocurrir.
El conjunto de datos engloba información detallada de todos los sismos registrados en los últimos 30 días y recibe actualizaciones cada 15 minutos en el portal web del USGS.
Durante la búsqueda de datos, se reveló que no todos los terremotos son de origen natural, y solo unos pocos son generados por actividades humanas, aunque en una cantidad muy reducida. Asimismo, se encontró que en un lapso de un mes, desde el 25 de febrero de 2019, más de 8500 sismos han tenido lugar en todo el mundo. De este número, solo un 2% se deben a factores como explosiones en canteras, eventos químicos o movimientos sísmicos relacionados con el hielo.
Al concluir el análisis, se intentó prever tanto terremotos naturales como otros eventos sísmicos no naturales (como aquellos relacionados con explosiones, detonaciones en canteras, etc.).
earthquake <- read.csv("all_month.csv")
glimpse(earthquake)
## Rows: 10,631
## Columns: 22
## $ time <chr> "2023-02-27T02:06:06.435Z", "2023-02-27T01:51:31.620Z"…
## $ latitude <dbl> 63.19850, 38.83450, 17.39010, -32.90730, 58.64360, -1.…
## $ longitude <dbl> -149.37560, -122.81817, 147.53000, -178.86740, -154.31…
## $ depth <dbl> 73.300, 1.520, 10.000, 45.006, 101.600, 42.456, 3.760,…
## $ mag <dbl> 1.60, 0.71, 4.90, 5.10, 2.00, 5.50, 0.65, 2.00, 1.30, …
## $ magType <chr> "ml", "md", "mb", "mb", "ml", "mww", "md", "ml", "ml",…
## $ nst <int> NA, 14, 48, 45, NA, 132, 8, NA, NA, 11, NA, NA, NA, 46…
## $ gap <dbl> NA, 61, 149, 153, NA, 57, 133, NA, NA, 224, NA, NA, NA…
## $ dmin <dbl> NA, 0.0127600, 4.5680000, 3.7240000, NA, 2.5870000, 0.…
## $ rms <dbl> 0.78, 0.01, 0.66, 0.96, 0.62, 0.87, 0.01, 0.31, 0.67, …
## $ net <chr> "ak", "nc", "us", "us", "ak", "us", "nc", "ak", "ak", …
## $ id <chr> "ak0232nyean7", "nc73852211", "us6000jrtu", "us6000jrt…
## $ updated <chr> "2023-02-27T02:08:44.101Z", "2023-02-27T02:08:14.941Z"…
## $ place <chr> "30 km SW of Cantwell, Alaska", "8km NW of The Geysers…
## $ type <chr> "earthquake", "earthquake", "earthquake", "earthquake"…
## $ horizontalError <dbl> NA, 0.26, 13.28, 12.11, NA, 8.71, 0.62, NA, NA, 0.64, …
## $ depthError <dbl> 0.600, 0.700, 1.911, 6.277, 0.700, 5.046, 1.870, 0.500…
## $ magError <dbl> NA, 0.1300000, 0.0640000, 0.0990000, NA, 0.0930000, 0.…
## $ magNst <int> NA, 15, 77, 33, NA, 11, 8, NA, NA, 9, NA, NA, NA, 52, …
## $ status <chr> "automatic", "automatic", "reviewed", "reviewed", "aut…
## $ locationSource <chr> "ak", "nc", "us", "us", "ak", "us", "nc", "ak", "ak", …
## $ magSource <chr> "ak", "nc", "us", "us", "ak", "us", "nc", "ak", "ak", …
head(earthquake)
## time latitude longitude depth mag magType nst gap
## 1 2023-02-27T02:06:06.435Z 63.1985 -149.3756 73.300 1.60 ml NA NA
## 2 2023-02-27T01:51:31.620Z 38.8345 -122.8182 1.520 0.71 md 14 61
## 3 2023-02-27T01:35:49.082Z 17.3901 147.5300 10.000 4.90 mb 48 149
## 4 2023-02-27T01:31:15.500Z -32.9073 -178.8674 45.006 5.10 mb 45 153
## 5 2023-02-27T01:27:10.987Z 58.6436 -154.3143 101.600 2.00 ml NA NA
## 6 2023-02-27T01:26:06.458Z -1.6972 120.2673 42.456 5.50 mww 132 57
## dmin rms net id updated
## 1 NA 0.78 ak ak0232nyean7 2023-02-27T02:08:44.101Z
## 2 0.01276 0.01 nc nc73852211 2023-02-27T02:08:14.941Z
## 3 4.56800 0.66 us us6000jrtu 2023-02-27T02:18:44.040Z
## 4 3.72400 0.96 us us6000jrtp 2023-02-27T02:03:50.040Z
## 5 NA 0.62 ak ak0232nxxdfe 2023-02-27T01:29:44.672Z
## 6 2.58700 0.87 us us6000jrtm 2023-02-27T02:03:23.063Z
## place type horizontalError depthError magError
## 1 30 km SW of Cantwell, Alaska earthquake NA 0.600 NA
## 2 8km NW of The Geysers, CA earthquake 0.26 0.700 0.130
## 3 Mariana Islands region earthquake 13.28 1.911 0.064
## 4 south of the Kermadec Islands earthquake 12.11 6.277 0.099
## 5 92 km SSE of Kokhanok, Alaska earthquake NA 0.700 NA
## 6 63 km WSW of Poso, Indonesia earthquake 8.71 5.046 0.093
## magNst status locationSource magSource
## 1 NA automatic ak ak
## 2 15 automatic nc nc
## 3 77 reviewed us us
## 4 33 reviewed us us
## 5 NA automatic ak ak
## 6 11 reviewed us us
profundidad-profundidad del evento en kilómetros. La profundidad en la que se inicia la ruptura del terremoto. Esta medida de profundidad puede referirse al geoides WGS84, al nivel promedio del mar o a la altitud media de las estaciones sísmicas que recolectaron los datos de tiempo de llegada en la ubicación del terremoto.
depthError- La incertidumbre de la profundidad informada del evento en kilómetros.
dmin- Distancia horizontal desde el epicentro a la estación más cercana (en grados). 1 grado es de aproximadamente 111.2 kilómetros. En general, cuanto menor este número, más confiable es la profundidad calculada del terremoto.
gap- La brecha azimutal más grande entre las estaciones adyacentes azimutalmente (en grados). En general, cuanto menor este número, más confiable es la posición horizontal calculada del terremoto. Cuando la diferencia azimutal supera los 180 grados en las ubicaciones de los terremotos, suele haber una considerable incertidumbre en cuanto a su ubicación y profundidad.
horizontalError- incertidumbre de la localización del evento.
id- Un identificador único para el evento. Esta es la ID preferida actual para el evento y puede cambiar con el tiempo. Consulte la propiedad del formato “IDS” Geojson.
latitude- Grados decimales latitud. Valores negativos para latitudes del sur.
locationSource- La red que originalmente fue la ubicación informada de este evento.
longitude- grados decimales longitud. Valores negativos para las longitudes occidentales.
mag- La magnitud del evento.
magError- Incertidumbre del la magnitud del evento.
magNst- El número total de estaciones sismicas que se usaron para calcular la magnitud del terremoto.
magSource- La red que originalmente se autorizó para el reporte de la magnitud del evento.
magType- El método o algoritmo usado para calcular la magnitud preferente del evento en cuestión.
net- El ID de la contribución de la data. Esto identifica la red considerada preferencial para obtener la información del evento.
nst- El número total de estaciones sismicas usadas para determinar la locación del terremoto.
place- Descripción textual de la región geográfica nombrada cerca del evento. Este puede ser un nombre de la ciudad, o un nombre de la región Flinn-Engdahl. Si no hay una ciudad cercana dentro de los 300 kilómetros (o si la base de datos de las ciudades cercanas no está disponible por alguna razón), se utiliza el esquema de regionalización sísmica y geográfica Flinn-Engdahl (F-E).
rms-El tiempo de viaje de Root-Medean (RMS) de viaje, en la SEC, utilizando todos los pesos. Este parámetro proporciona una medida del ajuste de los tiempos de llegada observados a los tiempos de llegada previstas para esta ubicación. Los números más pequeños reflejan un mejor ajuste de los datos.
status- Indica si el evento ha sido revisado por un humano. El estado es automático o revisado. Los eventos automáticos son publicados directamente por los sistemas de procesamiento automático y no han sido verificados ni alterados por un humano. Los eventos revisados han sido observados por un humano. El nivel de revisión puede variar desde una verificación de validez rápida hasta un reanálisis cuidadoso del evento.
time- tiempo cuando ocurrió el evento. Los tiempos se informan en milisegundos desde la época (1970-01-01T00: 00: 00.000Z), y no incluyen segundos de salto. En ciertos formatos de salida, la fecha está formateada para la legibilidad.
type- El tipo de evento sismico
updated- Tiempro cuando el evento fue más recientemente subido. Tiempos que han sido reportados en milisegundos desde la época.
Hay alrededor de siete terremotos que tinene una magnitud que es mayor a seis en la escala de richter.
A partir de ahora, extraeré dos características de los datos que son,
Ubicación del terremoto (estado/país, etc.)
Hora del día en ‘hora’
Desde la trama de línea a continuación podemos ver que el número máximo de terremotos que han sucedido a una hora particular. La medianoche parece ser la hora más popular del día cuando la mayoría de los terremotos han sucedido. La noche 5 p.m ve el número total más bajo de terremotos en un día. Cuando vemos la magnitud máxima en cada hora, entonces la mañana 8-9 a.m. tiene el terremoto más impactante de alrededor de 7.
#Location
earthquake$location <- sub('.*,\\s*','', earthquake$place)
#Time of the day in 'Hour'
earthquake$hour <- ymd_hms(earthquake$time)
earthquake$hour <- hour(earthquake$hour)
#Visualizing the number of quakes that have happened at a particular time
earthquake %>%
filter(!is.na(mag))%>%
group_by(hour)%>%
summarise(count = length(id),max_magnitude = max(mag))%>%
ggplot(aes(hour,count, color = max_magnitude))+geom_line()+
scale_color_viridis(direction = -1)+
scale_x_continuous(breaks=seq(0,23,1))+
xlab("Time of the day")+
ylab("Number of earthquakes")+
ggtitle("Number of quakes as per time of the day")+
theme_bw()+
theme(plot.title = element_text(hjust = 0.5))
En el mapa que sigue se presentan las ubicaciones en las que se han producido los recientes sismos. La región del Pacífico, que se extiende desde naciones sudamericanas como Chile, Perú y Ecuador, recorre la costa occidental de los Estados Unidos y llega hasta Alaska, exhibe un alto nivel de actividad sísmica. No obstante, la magnitud de estos sismos tiende a oscilar en el rango de 1 a 5. Otro cinturón de actividad sísmica es evidente en países como Indonesia, Japón, Papua Nueva Guinea y Nueva Zelanda.
Los siguientes son los terremotos más prominentes que han sucedido con mayor magnitud de 6 y más. (Entre el 18 de febrero 19 y 18 de marzo de 19) 1. Lugar: 115 km ESE de Palora, ** Ecuador Magnitud: 7.5 ** Hora: 2019-02-22 10:17:22
Lugar: 27 km nne de Azangaro, ** Perú Magnitud: 7 ** Hora: 2019-03-01 08:50:41
Lugar: 116 km SE de L’Sperance Rock, ** Nueva Zelanda Magnitud: 6.4 ** Hora: 2019-03-06 15:46:14
Lugar: 49 km NW de Namatanai, ** Papua Nueva Guinea Magnitud: 6.4 ** Hora: 2019-02-17 14:35:55
Lugar: 28 km s de Cliza, ** Bolivia Magnitud: 6.3 ** Hora: 2019-03-15 05:03:50
Lugar: 260 km SE de Lambasa, ** Fiji Magnitud: 6.2 ** Hora: 2019-03-10 08:12:25
Lugar: 140 km SSW de Kulumadau, ** Papua Nueva Guinea Magnitud: 6.1 ** Hora: 2019-03-10 12:48:00
bins=seq(1, 8.0, by=1.0)
palette = colorBin( palette="YlOrBr", domain=earthquake$mag, na.color="transparent", bins=bins)
d=leaflet(earthquake) %>%
addTiles() %>%
setView( lng = 166.45, lat = 21, zoom = 1.25) %>%
addProviderTiles(providers$Esri.WorldImagery) %>%
addCircleMarkers(~longitude, ~latitude,
fillColor = ~palette(mag), fillOpacity = 0.7, color="blue", radius=3, stroke=FALSE,
popup = paste("Place:", earthquake$place, "<br>",
"Magnitude:", earthquake$mag, "<br>",
"Time:", earthquake$time, "<br>")) %>%
addLegend( pal=palette, values=~mag, opacity=0.9, title = "Magnitude", position = "bottomright" )
htmlwidgets::saveWidget(d, "d.html")
display_html('<iframe src="d.html" width=100% height=450></iframe>')
Las treinta principales ubicaciones donde se han registrado la mayoría de las actividades sísmicas incluyen tanto países como estados de EE. UU. Aunque aproximadamente el 35% de los terremotos han ocurrido en California y el 27% en Alaska, las magnitudes promedio son de 0.9 y 1.7. En contraste, naciones como Nueva Zelanda, Indonesia, Papua Nueva Guinea, Chile, Japón y Filipinas han experimentado un porcentaje menor de terremotos. Sin embargo, las magnitudes promedio de estos sismos están por encima de 4.4.
earthquake %>%
group_by(location) %>%
filter(!(is.na(mag)))%>%
summarise(Number_of_quakes = length(location),
Average_Magnitude = mean(mag))%>%
mutate(Percent = round(prop.table(Number_of_quakes)*100,2))%>%
arrange(desc(Number_of_quakes))%>% top_n(25, Number_of_quakes)
## # A tibble: 25 × 4
## location Number_of_quakes Average_Magnitude Percent
## <chr> <int> <dbl> <dbl>
## 1 Alaska 4244 1.25 39.9
## 2 CA 2867 1.04 27.0
## 3 Hawaii 428 2.09 4.03
## 4 Turkey 263 4.52 2.47
## 5 Nevada 248 0.808 2.33
## 6 Alaska Peninsula 219 0.158 2.06
## 7 Washington 192 0.859 1.81
## 8 Texas 179 2.18 1.68
## 9 Puerto Rico 154 2.59 1.45
## 10 Utah 99 1.14 0.93
## # ℹ 15 more rows
Se sabe que la profundidad es la distancia donde el terremoto comienza a romperse. Es interesante plantearse si una profundidad mayor conduce a un terremoto de mayor magnitud. Trazé el trazado de magnitud de dispersión a continuación frente a la profundidad y descubrí que un número considerable de terremotos que son de magnitud entre 4-5 solo tienen profundidades más grandes. Incluso las profundidades de los terremotos que tienen más de 6 en magnitud están dispersas. Los terremotos de menor magnitud generalmente ocurren dentro de 200 km de profundidad.
ggplot(earthquake, aes(mag,depth,color = hour))+
geom_jitter(alpha = 0.5)+
gghighlight(max(depth>200)| max(mag>4))+
scale_x_continuous(breaks=seq(0,9,1))+
scale_color_viridis(direction = -1)+
theme_bw()+
xlab('Magnitude')+
ylab('Depth')+
ggtitle('Magnitude Vs. Depth in Km')+
theme(plot.title = element_text(hjust = 0.5))
Las actividades sísmicas son resultado de diversas acciones humanas,
como explosiones y trabajos en canteras, entre otros. No obstante, el
98% de las actividades sísmicas tienen su origen en los propios
terremotos.
earthquake %>%
group_by(type)%>%
summarise(count = length(type))%>%
mutate(Percent = prop.table(count*100))%>%
ggplot(aes(type,Percent, fill = type))+
geom_col()+theme_bw()+
xlab('Type of Seismic Activity')+
ylab('Percent')+
ggtitle('Percent of Seismic Activity')+
theme(plot.title = element_text(hjust = 0.5))
Cuando visualizamos estas actividades sesísmicas de acuerdo con su tipo,
encontramos que la mayoría de las actividades sísmicas además de un
terremoto tienen lugar en EE. UU. (Principalmente Ca y Alaska, Nevada,
Washington), Canadá. Sin embargo, Alaska experimenta muchos terrenos de
hielo. Haga clic en el mapa para saber más.
pal <- colorFactor(palette = "Accent",domain = earthquake$type)
e=leaflet(earthquake) %>%
addTiles() %>%
setView( lng = -119.417931, lat = 50.778259, zoom = 3) %>%
addProviderTiles(providers$CartoDB.Positron) %>%
addCircleMarkers(~longitude, ~latitude,
fillColor = ~pal(type), fillOpacity = 0.5, color="blue", radius=3, stroke=FALSE,
popup = paste("Place:", earthquake$place, "<br>",
"Magnitude:", earthquake$mag, "<br>",
"Time:", earthquake$time, "<br>",
"Type:", earthquake$type, "<br>")) %>%
addLegend( pal=pal, values=~type, opacity=0.9, title = "Type", position = "bottomright" )
htmlwidgets::saveWidget(e, "e.html")
display_html('<iframe src="e.html" width=100% height=450></iframe>')
Entendemos que la ‘profundidad’ se refiere al punto de inicio de la ruptura en un terremoto. A partir del siguiente diagrama de caja, se observa que la mayoría de las actividades sísmicas no naturales se localizan principalmente en la superficie terrestre. En contraste, los terremotos suelen originarse a una profundidad de 10-20 km debajo de la superficie, e incluso pueden manifestarse a varios kilómetros de profundidad. Sin embargo, este patrón generalmente no se aplica a otros tipos de actividades sísmicas.
ggplot(earthquake, aes('',depth, color = type))+geom_boxplot()+
scale_y_continuous(limits = c(0, 100))+theme_bw()+
xlab('Type of Seismic Activity')+
ggtitle('Depth of Seismic Activity')
El siguiente aspecto crucial es la magnitud. Mientras que un sismo natural puede exhibir magnitudes que oscilan entre 0 y 7 en la escala, los sismos generados por acciones humanas tienden a tener magnitudes significativamente más bajas, principalmente dentro del rango de 0 a 2.2 en la escala de Richter.
ggplot(earthquake, aes('',mag, color = type))+geom_boxplot()+
scale_y_continuous(limits = c(0, 8))+theme_bw()+
xlab('Type of Seismic Activity')+
ggtitle('Magnitude of Seismic Activity')
# Momento del día
Si experimenta vibraciones durante la madrugada, desde la medianoche hasta las 5 de la mañana, sería recomendable consultar las noticias en busca de información sobre posibles explosiones químicas en su zona. En caso de sentir que su mesa está temblando, podría estar relacionado con una detonación en una cantera cercana.
ggplot(earthquake, aes('',hour, color = type))+geom_boxplot()+
scale_y_continuous(limits = c(0, 24))+theme_bw()+
xlab('Type of Seismic Activity')+
ggtitle('Time of Seismic Activity')
En la siguiente sección, se busca anticipar el tipo de actividad sísmica utilizando un conjunto limitado de características, tales como profundidad, magnitud, latitud y longitud. Aunque existen muchas más características en el conjunto de datos, a partir de este punto, emplearemos estos parámetros para efectuar una predicción básica.
Para comenzar, se procederá a preparar el conjunto de datos con miras a la predicción. Se agruparán todas las actividades sísmicas que no sean terremotos naturales en una única categoría, dado que se ha observado que la mayoría de estos otros sismos presentan aproximadamente el mismo rango en cuanto a profundidad, magnitud y ubicación.
#Choosing the relevant columns
quake <- earthquake[,c(2,3,4,5,24,15)]
#Categorising the type
quake$type <- ifelse(quake$type == 'earthquake', 'Earthquake', 'Otherquake')
#quake[,c(1:5)] <- scale(quake[,c(1:5)])
#Converting our target column 'type' into a factor
quake$type <- factor(quake$type)
#Checking and removing any row having NA
colSums(is.na(quake))
## latitude longitude depth mag hour type
## 0 0 0 0 0 0
quake <- quake[!is.na(quake$mag),]
#Now look at the data
head(quake)
## latitude longitude depth mag hour type
## 1 63.1985 -149.3756 73.300 1.60 2 Earthquake
## 2 38.8345 -122.8182 1.520 0.71 1 Earthquake
## 3 17.3901 147.5300 10.000 4.90 1 Earthquake
## 4 -32.9073 -178.8674 45.006 5.10 1 Earthquake
## 5 58.6436 -154.3143 101.600 2.00 1 Earthquake
## 6 -1.6972 120.2673 42.456 5.50 1 Earthquake
Se emplearán máquinas de vectores de soporte para llevar a cabo una predicción, y anticipamos un problema de desequilibrio de clases en esta situación, ya que en nuestro conjunto de datos el 98% de las observaciones corresponden a terremotos naturales, mientras que solo el 2% de las observaciones se atribuyen a otros tipos de sismos.
Inicialmente, se generará el modelo sin abordar el desequilibrio de clases, y posteriormente se procederá a utilizar la biblioteca Rose para abordar el problema del desequilibrio en las clases.
table(quake$type)
##
## Earthquake Otherquake
## 10446 185
# splitting the data between train and test
set.seed(1234)
indices = sample.split(quake$type, SplitRatio = 0.7)
train = quake[indices,]
test = quake[!(indices),]
head(train)
## latitude longitude depth mag hour type
## 1 63.19850 -149.3756 73.300 1.60 2 Earthquake
## 2 38.83450 -122.8182 1.520 0.71 1 Earthquake
## 3 17.39010 147.5300 10.000 4.90 1 Earthquake
## 4 -32.90730 -178.8674 45.006 5.10 1 Earthquake
## 6 -1.69720 120.2673 42.456 5.50 1 Earthquake
## 7 38.79883 -122.7945 3.760 0.65 1 Earthquake
table(train$type)
##
## Earthquake Otherquake
## 7312 130
table(test$type)
##
## Earthquake Otherquake
## 3134 55
set.seed(1234)
#Using RBF Kernel
Model_RBF <- ksvm(type~ ., data = train, scale = FALSE, kernel = "rbfdot")
Eval_RBF <- predict(Model_RBF, test[,-6])
#confusion matrix - RBF Kernel
confusionMatrix(Eval_RBF,test$type)
## Confusion Matrix and Statistics
##
## Reference
## Prediction Earthquake Otherquake
## Earthquake 3134 55
## Otherquake 0 0
##
## Accuracy : 0.9828
## 95% CI : (0.9776, 0.987)
## No Information Rate : 0.9828
## P-Value [Acc > NIR] : 0.5358
##
## Kappa : 0
##
## Mcnemar's Test P-Value : 0.0000000000003305
##
## Sensitivity : 1.0000
## Specificity : 0.0000
## Pos Pred Value : 0.9828
## Neg Pred Value : NaN
## Prevalence : 0.9828
## Detection Rate : 0.9828
## Detection Prevalence : 1.0000
## Balanced Accuracy : 0.5000
##
## 'Positive' Class : Earthquake
##
En la predicción previa, se evidencia de manera clara una limitación. Todos los terremotos se pronostican de forma correcta, lo que resulta en una alta sensibilidad (verdaderos positivos). No obstante, ninguno de los ‘otros tipos de sismos’ se predice de manera precisa, lo cual resulta en una especificidad de 0 (verdaderos negativos).
Ahora, se recurre al paquete Rose (Random Over-Sampling Examples) para abordar el desafío del desequilibrio de clases mediante técnicas de sobremuestreo, submuestreo o una combinación de ambos. Empecemos por explorar el sobremuestreo.
set.seed(1234)
over <- ovun.sample(type~., data = train, method="over", N= 11640)$data
set.seed(1234)
#Using RBF Kernel
Model_RBF <- ksvm(type~ ., data = over, scale = FALSE, kernel = "rbfdot")
Eval_RBF <- predict(Model_RBF, test[,-6])
#confusion matrix - RBF Kernel
confusionMatrix(Eval_RBF,test$type)
## Confusion Matrix and Statistics
##
## Reference
## Prediction Earthquake Otherquake
## Earthquake 3020 1
## Otherquake 114 54
##
## Accuracy : 0.9639
## 95% CI : (0.9569, 0.9701)
## No Information Rate : 0.9828
## P-Value [Acc > NIR] : 1
##
## Kappa : 0.4705
##
## Mcnemar's Test P-Value : <0.0000000000000002
##
## Sensitivity : 0.9636
## Specificity : 0.9818
## Pos Pred Value : 0.9997
## Neg Pred Value : 0.3214
## Prevalence : 0.9828
## Detection Rate : 0.9470
## Detection Prevalence : 0.9473
## Balanced Accuracy : 0.9727
##
## 'Positive' Class : Earthquake
##
Es evidente un aumento sustancial en la especificidad. De los 55 sismos de otro tipo en nuestros datos de prueba, 47 son pronosticados de manera acertada, aunque se produce una predicción incorrecta para 150 sismos. La implementación del sobremuestreo ha demostrado ser efectiva al tratar el desequilibrio en la clase y ha elevado considerablemente nuestra especificidad al 85%.