1. Introdução

O japão está localizado no “Círculo de Fogo do Pacífico”, uma zona de grande instabilidade geológica devido a convergência de 4 placas tectônicas. A compreensão dos padrões de eventos sismicos é cruscial para a engenharia civil e políticas de prevenção de desastres.

Esse projeto tem como ponto focal a análise de dados históricos de terremotos para identificar padrões de magnitude, profundidade e frequência, utilizando os dados do Serviço Geológico dos Estados Unidos (USGS). O objetivo geral é velidar estatisticamente a relação entre a profundidade do hipocentro e a magnetude do evento sísmico.

2. Pacotes Requeridos

Para realizar a extração, tratamento e visualização dos dados, utilizarei os seguintes pacotes da linguagem R:

library(tidyverse) # Manipulação e Visualização
library(lubridate) # Tratamento de Datas (Time Series)
library(scales)    # Formatação de Eixos Gráficos
library(DT)
library(knitr)     # Formatação de Relatórios

3. Importação e Preparação dos Dados

3.1 Coleta de Dados (API USGS)

Para garantir uma robustez e atualização dos dados utilizarei a API do Serviço Geológico dos Estados Unidos para extração da atividade sísmica.

A requisição foi configurada com os seguintes parâmetros para filtrar os dados relevantes:

  • Período: 01/01/2011 até a data atual (cobrindo o pós-Grande Terremoto de Tohoku).
  • Magnetude Mínima: 4.5 (Filtro aplicado para focar em eventos perceptíveis, inicialmente era 4, porém, devido a alta taxa de eventos sísmicos no japão, a quantidade de registros superava o limite da API).
  • Localização: “Bounding Box” (caixa geográfica) cobrindo as latitudes 20°N a 48°N e longitudes 120°E a 155°E.
# URL da API da USGS
url_usgs <- "https://earthquake.usgs.gov/fdsnws/event/1/query?format=csv&starttime=2011-01-01&minmagnitude=4.5&minlatitude=20&maxlatitude=48&minlongitude=120&maxlongitude=155"

# Leitura direta do CSV via URL
# O R vai baixar os dados mais recentes disponíveis no momento da execução
raw_data <- read_csv(url_usgs, show_col_types = FALSE)

# Verificação de integridade
print(paste("Total de registros importados:", nrow(raw_data)))
## [1] "Total de registros importados: 14861"

Para fins de transparência metodológica, apresentarei abaixo uma amostra dos dados exatamente como foram recebidos da API. Note a presença de diversas colunas técnicas (como gap, dmin, rms, net), além da presença de registros de outras regiões, que justificam a necessidade de uma etapa de limpeza filtragem.


# Exibição dos dados brutos
datatable(head(raw_data, 200), 
          options = list(scrollX = TRUE, pageLength = 5),
          caption = "Tabela 1: Amostra dos Dados Brutos (Raw Data da API USGS)")

3.2 Limpeza e Criação de Variáveis

O dataset contêm registros técnicos em formato de texto. Para tornar a análise cientifica, realizarei as seguintes transformações:

  1. Tratamento Temporal: A coluna time (ISO8601) foi convertida para objetos de data (datatime), permitindo a extração do ano para análise em séries temporais.
  2. Classificação de Magnetude: Criei a variável categórica sismic_class para agrupar os registros por níveis de impacto (Moderado, Forte, Muito Forte e Catastrófico).
  3. Classificação Tectônica: Criei a variável depth_class, Terremotos com hipocentro abaixo de 70km são classificados como “Profundos”, geralmente relacionados as zonas de subduccção das placas tectônicas.
  4. Filtro Geográfico: Aplicação de um filtro textual na coluna place para garantir que apenas locais contendo “Japan” sejam analisados, removendo ruídos de fronteiras marítimas.

df_quake <- raw_data %>%
  # Seleciona apenas as colunas de interesse
  select(time, latitude, longitude, depth, mag, place) %>%
  
  # Como o Bouding Box inclui algumas ilhas e locais além do japão decidi adicionar um filtro a mais
  filter(str_detect(place, "Japan")) %>%
  
  mutate(
    # Converte texto para Data/Hora e extrair o Ano
    data_evento = as_datetime(time),
    ano = year(data_evento),
    
    # Cria Categoria de Magnitude (Escala Richter/Moment)
    classe_sismica = case_when(
      mag < 5.0 ~ "Moderado (4.5-4.9)",
      mag < 6.0 ~ "Forte (5.0-5.9)",
      mag < 7.0 ~ "Muito Forte (6.0-6.9)",
      TRUE ~ "Catastrófico (>=7.0)"
    ),
    
    # Cria Categoria de Profundidade (Zonas de Subducção)
    tipo_profundidade = ifelse(depth < 70, "Raso (<70km)", "Profundo (>70km)")
  ) %>%
  
  # Ordena cronologicamente (mais recente primeiro)
  arrange(desc(data_evento))

# Exibição tabela iterativa
datatable(df_quake, 
          options = list(pageLength = 10, scrollX = TRUE),
          caption = "Tabela 2: Base de Dados Sismológicos Limpa e Classificada")

Dicionário de Dados

Nome da Coluna Tipo Primitivo (R) Explicação e Significado
time Character Timestamp original do evento fornecido pela API (formato ISO8601).
latitude Numeric (Double) Coordenada geográfica Norte-Sul (graus decimais).
longitude Numeric (Double) Coordenada geográfica Leste-Oeste (graus decimais).
depth Numeric (Double) Profundidade do hipocentro em quilômetros (km).
mag Numeric (Double) Magnitude do evento sísmico (Escala Richter/Moment).
place Character Descrição textual da localização geográfica (ex: “Near the east coast of Honshu”).
data_evento POSIXct (Datetime) Data e hora convertidas para formato temporal do R para análise de séries temporais.
ano Numeric (Int) Ano da ocorrência extraído da data do evento.
classe_sismica Character (Fator) Variável categórica criada para classificar o impacto (Moderado, Forte, etc.).
tipo_profundidade Character (Fator) Variável categórica criada para análise tectônica (Raso vs. Profundo).


4. Análise Exploratória dos Dados

4.1 Ditribuição de Magnetude

A lei de Gutenberg-Richter postula a existência de uma relação logarítmica entre a magnetude e a frequência total de terremotos de uma determinada região. De maneira simples: para cada terremoto de magnetude 6, espera-se cerca de 10 terremotos de magnetude 5 e 100 de magnetude 4.

O histograma a seguir, com escala logaritmica no eixo Y, permite a visualização desse decaimento exponencial.

# Histograma de Frequência das Magnitudes
ggplot(df_quake, aes(x = mag)) +
  geom_histogram(binwidth = 0.1, fill = "firebrick", color = "white", alpha = 0.8) +
  
  # Aplicação de escala logarítmica no eixo Y para vizualização a Lei de Gutenberg-Richter
  scale_y_log10(labels = label_number(accuracy = 1)) +
  
  labs(
    title = "Distribuição de Frequência das Magnitudes (2011-2025)",
    subtitle = "Escala Logarítmica: Evidência do decaimento exponencial da frequência",
    x = "Magnitude (Richter/Moment)",
    y = "Contagem de Eventos (Log10)",
    caption = "Fonte: USGS API"
  ) +
  theme_minimal()

4.2 Mapeamento dos Epicentros

Ao plotar a latitude e longitude de cada evento é possivel recontruir as fronteiras das placas tectônicas. A cor dos pontos representa a profundidade o que permite identificar a Japan Tranch, onde a placa do Pacífico mergulha sob a placa continental.

# Mapa de dispersão geográfica
ggplot(df_quake, aes(x = longitude, y = latitude, color = depth)) +
  # Pontos menores (size=0.5) para evitar poluição visual dado o alto volume de registros
  geom_point(alpha = 0.6, size = 0.5) +
  
  # Escala de cores viridis (Magma) para destacar profundidade
  scale_color_viridis_c(option = "magma", direction = -1, name = "Profundidade (km)") +
  
  labs(
    title = "Mapeamento Tectônico dos Epicentros no Japão",
    subtitle = "Zonas escuras indicam subducção profunda (Placas convergentes)",
    x = "Longitude",
    y = "Latitude"
  ) +
  theme_dark() +
  coord_quickmap() # Ajuste de proporção para não distorcer o mapa

4.3 Magnitude vs. Profundidade

Por fim, decidi analisar a correlação entre a profundidade e a magnetude dos terremotos usando um gráfico de dispersão, para isso diferenciei os eventos pela classificação de impacto.

# Scatter plot: Profundidade vs Magnitude
ggplot(df_quake, aes(x = depth, y = mag)) +
  geom_point(aes(color = classe_sismica), alpha = 0.4, size = 1.5) +
  
  # Adiciona linha de tendência suave para facilitar a leitura de padrões
  geom_smooth(method = "gam", color = "black", se = FALSE, linetype = "dashed") +
  
  labs(
    title = "Correlação: Profundidade do Hipocentro vs. Magnitude",
    subtitle = "Análise da dispersão de energia por profundidade",
    x = "Profundidade (km)",
    y = "Magnitude",
    color = "Classe Sísmica"
  ) +
  theme_bw() +
  theme(legend.position = "bottom")

5. Conclusões e Considerações Finais

A execução deste projeto de análise sismológica permitiu processar um volume massivo de dados em tempo real, superando a marca de 5.000 registros e atendendo aos critérios de robustez estatística exigidos pela disciplina.

Através da extração automatizada via API da USGS e da aplicação de técnicas de visualização científica, chegamos a três conclusões fundamentais sobre a geofísica japonesa:

  1. Validação da Lei de Gutenberg-Richter (Frequência): O histograma logarítmico (Seção 4.1) confirmou o decaimento exponencial da sismicidade. A análise demonstra que eventos catastróficos (Mag > 7.0) são estatisticamente raros (“outliers”), enquanto a atividade sísmica moderada é uma constante diária no arquipélago.

  2. Geometria da Subducção (Espaço): O mapeamento geoespacial (Seção 4.2) revelou a “cicatriz” tectônica ao leste do país. A visualização evidenciou a Fossa do Japão, onde a Placa do Pacífico mergulha sob a placa continental, validando visualmente a teoria da tectônica de placas sem necessidade de mapas geológicos prévios.

  3. Correlação Profundidade vs. Magnitude (Energia): A análise de dispersão (Seção 4.3) indicou que a maior parte da energia sísmica destrutiva concentra-se na crosta rasa (< 70km). Embora o Japão registre terremotos profundos (devido à subducção), os dados mostram que os eventos de magnitude extrema (acima de 8.0) tendem a ocorrer em profundidades menores, o que justifica o foco da engenharia civil japonesa em mitigar danos de tremores superficiais.

Relevância para o MEXT e Sociedade: A capacidade de monitorar esses padrões utilizando dados abertos e ferramentas de Data Science (R/Tidyverse) tem aplicação direta na área de Bousai (Prevenção de Desastres). Este projeto demonstra como a análise de dados pode subsidiar políticas públicas de zoneamento e construção civil.

Limitações: Uma limitação observada foi o filtro de magnitude mínima (4.5) imposto para respeitar os limites operacionais da API. Trabalhos futuros poderiam integrar dados locais da JMA para investigar micro-tremores e precursores sísmicos.