南海トラフ地震はいつ起きるのか
過去データから予測してみる事としました。

解説動画はこちら





南海トラフ地震とは

駿河湾から日向灘沖にかけてのプレート境界を震源域として
概ね100~150年間隔で繰り返し発生してきた大規模地震

静岡県から宮崎県にかけての一部では震度7となる可能性があります。

過去の発生年

発生年 名称
1946年 昭和南海地震
1944年 昭和東南海地震
1854年 安政南海地震
1707年 宝永地震
1605年 慶長地震
1498年 明応地震
1361年 正平南海地震


地震の発生確率の計算方法


最近の調査ではBPT分布というものを
用いた予測が基本になっています。

BPT分布
(Brownian Passage Time:ブラウン通過時間)
地震の発生間隔をモデル化する確率分布

確率的に「平均的な間隔」の周辺で起こるが
バラつきがあるというモデル


ポアソン分布は発生確率が常に一定(ランダム)とする一方
BPT分布は時間経過による「成熟度」を考慮したものです。



BPT分布の基本式

BPT分布の確率密度関数  𝑓(𝑡)  は、以下の式で表されます。
スクリーンショット 2026-03-14 17.25.49



条件付き確率の考え方

「前回の地震から  𝑡  年経過した時点で
今後  Δ𝑡  年以内に地震が発生する確率」

𝑃(𝑡,Δ𝑡)  は、以下の式で計算します。

スクリーンショット 2026-03-14 17.26.44


コード上では下記が確率計算部分になります。
prob = (f_future - f_t) / (1 - f_t)

分子:(f_future - f_t)
「現在からXX年の期間内に地震が発生する」という確率

分母:(1 - f_t)
「現在で、まだ地震が起きていない」という確率

BPTモデルでは時間が経つほど  𝐹(𝑡)  が大きくなるため
分母はどんどん小さくなっていき、確率が高まります。


Pythonで地震確率をシミュレーションする

あらかじめことわりますが
政府予測とは異なります!!!!


予測条件

平均再来間隔 (南海トラフの直近データ 1361 ~ 1946)
97.5

ばらつき係数 (地震調査委員会採用値)
0.24

前回の発生年 (昭和南海地震)
1946

今後30年間の地震発生確率を求めるコードは以下です。
import numpy as np
from scipy.stats import norm

def bpt_cdf_30(t, mu, alpha, delta_t=30):
    """
    BPT分布に基づき、今後 delta_t 年以内の地震発生確率を計算する
    
    Parameters:
    t: 前回からの経過年数
    mu: 平均再来間隔
    alpha: ばらつき係数
    delta_t: 評価期間(デフォルトは30年)
    """
    if t <= 0:
        return 0.0
    
    # 現在までの間に、既に地震が起きているはずだった累積確率
    inv_alpha_sq = 2 / (alpha**2)
    term1_t = norm.cdf((t / mu - 1) / (alpha * np.sqrt(t / mu)))
    term2_t = np.exp(inv_alpha_sq) * norm.cdf(-(t / mu + 1) / (alpha * np.sqrt(t / mu)))
    f_t = term1_t + term2_t
    
    # delta_t 年後までの間に、地震が起きる累積確率
    t_future = t + delta_t
    term1_f = norm.cdf((t_future / mu - 1) / (alpha * np.sqrt(t_future / mu)))
    term2_f = np.exp(inv_alpha_sq) * norm.cdf(-(t_future / mu + 1) / (alpha * np.sqrt(t_future / mu)))
    f_future = term1_f + term2_f
    
    if f_t >= 1.0:
        return 1.0
        
    prob = (f_future - f_t) / (1 - f_t)
    return max(0.0, min(prob, 1.0))

mu = 97.5       # 平均再来間隔 (南海トラフの直近データ 1361 ~ 1946)
alpha = 0.24    # ばらつき係数 (地震調査委員会採用値)
last_event = 1946  # 前回の発生年 (昭和南海地震)
target_year = 2026
t = target_year - last_event

# 30年分を予測
for delta_t in range(1, 31):
  prob = bpt_cdf_30(t, mu, alpha, delta_t)
  print(f"今後 {delta_t} 年以内の発生確率: {prob:.2%}")

今後30年間の発生確率は
ぜひ動画を見てみてください。




まとめ

地震の発生確率は確率分布をもとに
予測が行われています。

政府予測では
今後、30年の間に 60%~90%程度以上の確率で
南海トラフ地震来るという予測です

絶対は無いけど、明日来るかもしれない
いつ来ても良いように備えておきましょう!!!

それでは