論文一覧に戻る 🕸 論文ネットワーク 🗺 用語ネットワーク 統計データ分析コンペ 教育用再現集
2023年 統計データ分析コンペティション | 審査員奨励賞 [高校生の部]

海水温からの降水量予測を目指して

⏱️ 推定読了時間: 約20分
三島 光太郎・石井 沙英・岸本 理央・宮本 賢一郎・八木 琳太郎(兵庫県立姫路西高等学校) | SSDSE-B + 気象庁(海水温・集中豪雨回数・市別降水量) | 相関分析・散布図・データ加工(差/比)
🔬 単回帰🔬 散布図🔬 相関分析🏷 防災・災害
🔬 手法タグ / 🏷 応用タグ(クリックで同タグの論文をネットワーク検索)
🔬 再現カルテ — 原論文と同じ種類のデータで再現(細部は簡略化)

この教材は原論文と同じ種類のデータで計算し直しています。ただし工程の一部は、学習しやすさのために簡略化しています(下の「できないこと」を参照)。

原論文が使ったデータSSDSE-B・過去の気象データ・日本近海の海面水温・大雨や猛暑日など(極端現象)のこれまでの変化
分析単位:その他
中核手法:相関分析
この教材が使うデータ
原論文(PDF)海水温からの降水量予測を目指して
審査員奨励賞/三島 光太郎、石井 沙英、岸本 理央、宮本 賢一郎、八木 琳太郎(兵庫県立姫路西高等学校)
✅ この教材でできること
  • 分析に使うデータは同梱済みで、ブラウザ上でそのまま読み込める
⚠️ この教材ではできないこと(原論文との違い)
  • 手順の一部が原論文と違う:論文の散布図+回帰直線が教材で簡略化
📄 原論文との違いを、もっと詳しく
📄 原論文:海域別・季節別の海水温と地点別降水量の散布図+回帰直線+相関係数を多数比較。
📘 本教材:SSDSE-B-2026 と気象データで相関分析を再現。地点別の網羅的な比較は簡略化している。
⚠️ 注意:原論文は多数の海域×地点の組合せを比較して結論を出している。教材は代表例のみ。

▶ ここに書いてある分析は、ページ下部の「🐍 ブラウザで動かす」でそのまま実行できます(インストール不要)。動かしているのは code/2023_H5_4_shorei.py(269 行)そのものです。

📝 3行で分かる要約

目次

  1. 研究概要と背景
  2. 使用データとデータ加工
  3. 集中豪雨と海水温の相関
  4. SSDSE-Bで降水量を実再現
  5. 太平洋側:夏と冬で符号が反転
  6. 太平洋側の冬・月別の相関
  7. 結果の解釈とまとめ
  8. 📥 データの準備
  9. ⚠️ よくある誤解
  10. 📖 用語集
  11. 📐 手法ガイド
  12. 🚀 発展の可能性
  13. 🎯 自分でやってみよう
  14. 🤔 Q&A
  15. 🐍 ブラウザで動かす

🎯 この記事を読むと何ができるようになるか

📥 データの準備(再現コードを動かす前に)

このページの図2(実再現)を自分で動かすには、以下の手順でデータを準備してください。コードの編集は不要です。図1・図3・図4は海水温を使う原論文の報告値の可視化で、SSDSE の追加ファイルは要りません。

1
データをダウンロードする 統計センターの SSDSE 配布ページから、以下のファイルをダウンロードします。
SSDSE-B-2026.csv ← SSDSE-B(都道府県データ)📥 直接DL
⬇ SSDSEダウンロードページを開く
2
ファイルを所定のフォルダに配置する ダウンロードしたCSVを、プロジェクトの data/raw/ フォルダに入れます。
2026 統計・データ解析コンペ/ ├── code/ │ └── 2023_H5_4_shorei.py ← 実行するスクリプト └── data/ └── raw/ SSDSE-B-2026.csv ← ここに置く
3
スクリプトをそのまま実行する ターミナルでプロジェクトルートに移動し、以下を実行します。
python3 code/2023_H5_4_shorei.py
図は html/figures/ に自動保存されます。
研究概要と背景

近年、1年間の総降水量は大きく変わらない一方で、1時間に50mmを超える集中豪雨の発生回数は増加傾向にある。雨の「降り方」が変わってきている、という問題意識が本研究の出発点である。

著者らは「雲を作り雨になる水の8割以上は海から蒸発する」「気象庁は台風の発達予想に海水温を使っている」という事実に注目し、その年の降水量を左右する要因の一つが海水温ではないかと考えた。もし海水温が降水量の手がかりになるなら、従来の予報に海水温という新しい指標を加えて精度を上げられるのではないか——これが本研究の問いである。

海水温が降水量に影響するメカニズム(著者の仮説) 海面水温が高いほど海からの蒸発が増え、大気中の水蒸気が増える。その水蒸気が運ばれて冷やされると降水になる。したがって海水温と降水量には正の相関が期待される、という気候学的な見立てを検証する。
分析の流れ
① 集中豪雨
×海水温
(全国)
② 日本海側
夏・冬の
降水量×海水温
③ 太平洋側
夏・冬の
降水量×海水温
④ 太平洋の冬
を月別に
詳しく分析

SSDSE-B(降水量) 気象庁(海水温) 相関分析 散布図 データ加工(差・比)

使用データとデータ加工

使用したデータ(原論文 表2)

データ名項目・地点・年度出典
SSDSE-B-2023降水量(豊岡・新潟・福井・金沢・富山・秋田)2009〜20年統計センター
過去の気象データ夏・冬の3か月降水量(日本海側6市+太平洋側8地点)統計開始〜2022年気象庁
過去の気象データ12〜3月の1か月降水量(太平洋側8地点)統計開始〜2022年気象庁
日本近海の海面水温年平均・季節別の平均海面水温の平年差(全海域・日本海中部・日本海南西部・四国沖・関東沖)1900〜2022年気象庁
極端現象の変化1時間降水量50mm/80mm/100mm以上の年間発生回数(全国アメダス)1976〜2022年気象庁
再現にあたっての重要な断り(二重明記) 本研究の中心変数である海水温(海面水温の平年差)は SSDSE に収録されていない。そのため、原論文の相関係数(図1・図3・図4)は「原論文の報告値」をそのまま可視化したもので、再計算ではない。一方、降水量(B4109)は SSDSE-B に収録されているため、図2 のみ SSDSE-B から実再現している。新たな数値の捏造は一切していない。

データの加工(原論文 表3)

著者らは長期トレンドの影響を取り除いて短い周期の関係を見るため、次の2つの加工を行い、加工前後で結果が変わらないかを確認している。

加工したデータ計算方法
海水温と過去10年平均海水温との海水温の平年差 − 前年までの過去10年の平年差の平均
集中豪雨の過去10年平均回数に対する集中豪雨の発生回数 ÷ 前年までの過去10年の平均発生回数
相関の強弱の定義(原論文 表1) |r|が 0.7以上=強い、0.4〜0.7=やや強い、0.2〜0.4=やや弱い、0.2未満=ほとんど相関なし。本ページでもこの基準で読み解く。
1
集中豪雨と海水温の相関(原論文 表4・表5)

まず、全国アメダスの集中豪雨の年間回数(1時間50mm/80mm/100mm以上)と海水温の関係を、1976〜2022年について季節ごとに相関分析した。以下は原論文 表4 の報告値である。

原論文の報告値(表4:集中豪雨回数 × 海水温の相関係数)
  • 年平均:50mm以上 r=0.598(やや強い正)> 80mm以上 r=0.491 > 100mm以上 r=0.383(やや弱い正)
  • どの季節・しきい値でもすべて正の相関。降水量が少ない豪雨(50mm)ほど海水温との相関が強い。
  • 加工後(表5・比×差, 1985〜2022)も相関は全体に小さくなるが傾向は同じ(50mm年平均 r=0.389 > 100mm r=0.259)。
やってみよう図1:集中豪雨 × 海水温の相関(原論文 表4 の報告値を可視化)
  • ① このコードの目的:原論文 表4 の相関係数(海水温 × 集中豪雨回数)を辞書に転記し、季節×しきい値の棒グラフにする。海水温は SSDSE 未収録のため再計算はできず、報告値の可視化にとどめる
  • ② 前後のつながり:ここは原論文の主張の核心(豪雨と海水温の正の相関)を、数値をそのまま図にして確認するパート。次のステップでは SSDSE 収録の降水量そのものを実再現する。
📝 コード
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# 原論文 表4:集中豪雨(1時間降水量)の年間回数と海水温の相関係数(1976–2022, 全国アメダス)
# 行 = 豪雨のしきい値, 列 = 季節。すべて «原論文の報告値» (新数値ではない)。
table4 = {
    '50mm以上':  {'年平均': 0.598, '冬': 0.525, '春': 0.365, '夏': 0.611, '秋': 0.493},
    '80mm以上':  {'年平均': 0.491, '冬': 0.451, '春': 0.319, '夏': 0.479, '秋': 0.390},
    '100mm以上': {'年平均': 0.383, '冬': 0.336, '春': 0.295, '夏': 0.440, '秋': 0.208},
}
seasons = ['年平均', '冬', '春', '夏', '秋']
print('\n【原論文 表4 の報告値】集中豪雨回数 × 海水温の相関係数(再計算ではない)')
for k, row in table4.items():
    print('  ' + k.ljust(9) + ' ' + '  '.join(f'{s}={row[s]:+.3f}' for s in seasons))
print(f'  → 年平均: 50mm(r={table4["50mm以上"]["年平均"]}) > 100mm(r={table4["100mm以上"]["年平均"]})')
print('    降水量が少ない豪雨ほど海水温との相関が強い、と原論文は報告。')

fig, ax = plt.subplots(figsize=(9.2, 5.2))
x = np.arange(len(seasons))
w = 0.26
colors = {'50mm以上': '#1565C0', '80mm以上': '#42A5F5', '100mm以上': '#90CAF9'}
for i, (k, row) in enumerate(table4.items()):
    ax.bar(x + (i - 1) * w, [row[s] for s in seasons], w, label=k, color=colors[k])
ax.axhline(0.2, color='gray', ls='--', lw=1)
ax.text(4.35, 0.205, 'r=0.2(やや弱い相関の目安)', fontsize=8, color='gray', ha='right', va='bottom')
ax.set_xticks(x)
ax.set_xticklabels(seasons)
ax.set_ylabel('相関係数 r(原論文の報告値)')
ax.set_title('図1【原論文 表4 の報告値・再計算ではない】\n集中豪雨の年間回数 × 海水温の相関(海水温は SSDSE 未収録)',
             fontsize=11)
ax.legend(fontsize=9)
ax.grid(axis='y', alpha=0.3)
fig.tight_layout()
fig.savefig(os.path.join(FIG_DIR, '2023_H5_4_fig1_scatter2022.png'), bbox_inches='tight')
plt.close(fig)
print('  → 図1 保存: 2023_H5_4_fig1_scatter2022.png(報告値の可視化)')
▼ 実行結果
【原論文 表4 の報告値】集中豪雨回数 × 海水温の相関係数(再計算ではない)
  50mm以上    年平均=+0.598  冬=+0.525  春=+0.365  夏=+0.611  秋=+0.493
  80mm以上    年平均=+0.491  冬=+0.451  春=+0.319  夏=+0.479  秋=+0.390
  100mm以上   年平均=+0.383  冬=+0.336  春=+0.295  夏=+0.440  秋=+0.208
  → 年平均: 50mm(r=0.598) > 100mm(r=0.383)
    降水量が少ない豪雨ほど海水温との相関が強い、と原論文は報告。
  → 図1 保存: 2023_H5_4_fig1_scatter2022.png(報告値の可視化)
  • ④ 実行結果の読み取り:棒はすべて 0 より上、つまり全季節・全しきい値で正の相関。同じ季節内では 50mm>80mm>100mm の順で棒が高く、「弱い豪雨ほど海水温と強く相関」という原論文の指摘が読み取れる。ただしこれは報告値であり、因果関係を示すものではない点に注意。
集中豪雨と海水温の相関(原論文 表4 の報告値)
図1:集中豪雨(1時間50/80/100mm以上)の年間回数と海水温の相関係数(原論文 表4 の報告値・再計算ではない)。海水温はSSDSE未収録のため気象庁データによる原論文の値をそのまま可視化。
2
SSDSE-B で降水量そのものを実再現する

海水温は SSDSE に無いが、降水量(B4109)は SSDSE-B に収録されている。そこで、原論文が扱った日本海側・太平洋側の地点を都道府県に対応づけ、年降水量の推移を実データで再現する。海水温は含めない(含められない)ことを図タイトルと図注に明記する。

やってみようまず SSDSE-B-2026(都道府県データ)を読み込む
  • ① このコードの目的:cp932 の CSV を読み、地域コードが R+数字5桁の47都道府県行だけを残し、降水量 B4109 と年平均気温 B4101 を数値化する。
  • ② 前後のつながり:この df_b が以降のすべての実再現の土台。先頭列名 SSDSE-B-2026 が年度を表す。
📝 コード
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
df_raw = pd.read_csv(
    os.path.join(DATA_DIR, 'SSDSE-B-2026.csv'),
    header=0,            # 行0がコード名(B4101 等)
    encoding='cp932',    # 日本語Windows由来の文字コード
)

# 都道府県行だけを抽出(地域コード Code が R##### 形式)
mask_pref = df_raw['Code'].astype(str).str.match(r'^R\d{5}$', na=False)
df_b = df_raw[mask_pref].copy()
df_b = df_b.rename(columns={'SSDSE-B-2026': '年度', 'Prefecture': '都道府県'})

# 降水量(B4109)・年平均気温(B4101)・年度を数値化
for c in ['B4101', 'B4109']:
    df_b[c] = pd.to_numeric(df_b[c], errors='coerce')
df_b['年度'] = pd.to_numeric(df_b['年度'], errors='coerce')

years = sorted(df_b['年度'].dropna().unique().astype(int))
print('=' * 62)
print('■ SSDSE-B-2026 読み込み完了(都道府県データ)')
print(f'  都道府県 × 年度の総行数: {len(df_b)}')
print(f'  収録年度: {years[0]}{years[-1]}{len(years)}年分)')
print(f'  2023年度の都道府県数: {(df_b["年度"] == 2023).sum()}')
print('  ※ 海水温は SSDSE 未収録。降水量 B4109 のみ実再現に使用。')
print('=' * 62)
▼ 実行結果
■ SSDSE-B-2026 読み込み完了(都道府県データ)
  都道府県 × 年度の総行数: 564
  収録年度: 2012〜2023(12年分)
  2023年度の都道府県数: 47
  ※ 海水温は SSDSE 未収録。降水量 B4109 のみ実再現に使用。
==============================================================
  • ④ 実行結果の読み取り:総行数 564 = 47都道府県 × 12年(2012〜2023)。2023年度は47件そろっている。海水温は無いので、実再現できるのは降水量・気温だけ、という前提をここで確認する。
やってみよう図2:日本海側/太平洋側の年降水量(B4109)を実再現
  • ① このコードの目的:原論文の観測地点を都道府県に対応づけ(豊岡→兵庫 など)、日本海側6県・太平洋側6県それぞれの年降水量の平均を年ごとに計算して折れ線にする。これは SSDSE-B からの実再現(実計算)
  • ② 前後のつながり:前ステップの df_bgroupby('年度') で集計。原論文は市・季節別の3か月降水量を使うが、SSDSE は都道府県・年降水量なので集計単位が異なる点を図注に明記する。
📝 コード
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# 原論文の観測地点 → 対応する都道府県(SSDSE-B は都道府県単位)
JPSEA_PREFS = ['秋田県', '新潟県', '富山県', '石川県', '福井県', '兵庫県']  # 豊岡=兵庫
PACIFIC_PREFS = ['千葉県', '静岡県', '愛知県', '和歌山県', '高知県', '宮崎県']

def annual_mean_precip(prefs):
    sub = df_b[df_b['都道府県'].isin(prefs)]
    return sub.groupby('年度')['B4109'].mean()

jpsea = annual_mean_precip(JPSEA_PREFS)     # 日本海側6県の年降水量の平均
pacif = annual_mean_precip(PACIFIC_PREFS)   # 太平洋側6県の年降水量の平均

print('\n【SSDSE-B 実再現】日本海側/太平洋側の年降水量(B4109, mm)')
print(f'  日本海側6県  12年平均 = {jpsea.mean():.0f} mm / 変動係数CV = {jpsea.std()/jpsea.mean():.3f}')
print(f'  太平洋側6県  12年平均 = {pacif.mean():.0f} mm / 変動係数CV = {pacif.std()/pacif.mean():.3f}')

fig, ax = plt.subplots(figsize=(9.2, 5.2))
ax.plot(jpsea.index, jpsea.values, 'o-', color=C_JPSEA, lw=2.2,
        label='日本海側6県 平均(秋田・新潟・富山・石川・福井・兵庫)')
ax.plot(pacif.index, pacif.values, 's-', color=C_PACIF, lw=2.2,
        label='太平洋側6県 平均(千葉・静岡・愛知・和歌山・高知・宮崎)')
ax.set_xlabel('年度')
ax.set_ylabel('年降水量 B4109(mm)')
ax.set_title('図2【SSDSE-B 実再現】都道府県別・年降水量の推移(2012–2023)\n'
             '※海水温は SSDSE 未収録のため本図に含まない/原論文は市・季節別3か月降水量を使用(集計単位が異なる)',
             fontsize=11)
ax.legend(fontsize=9, loc='upper right')
ax.grid(alpha=0.3)
fig.tight_layout()
fig.savefig(os.path.join(FIG_DIR, '2023_H5_4_fig2_timeseries.png'), bbox_inches='tight')
plt.close(fig)
print('  → 図2 保存: 2023_H5_4_fig2_timeseries.png(実再現)')
▼ 実行結果
【SSDSE-B 実再現】日本海側/太平洋側の年降水量(B4109, mm)
  日本海側6県  12年平均 = 2093 mm / 変動係数CV = 0.105
  太平洋側6県  12年平均 = 2130 mm / 変動係数CV = 0.089
  → 図2 保存: 2023_H5_4_fig2_timeseries.png(実再現)
  • ④ 実行結果の読み取り:日本海側6県は12年平均約2093mm(変動係数CV=0.105)、太平洋側6県は約2130mm(CV=0.089)。年ごとに数百mm揺れており、原論文が「過去10年平均との差・比」で年ごとの変動を取り出そうとした理由が体感できる。これは降水量そのものの再現で、海水温との相関ではないことに注意。
日本海側・太平洋側の年降水量の推移(SSDSE-B 実再現)
図2:SSDSE-B-2026 による実再現。日本海側6県・太平洋側6県の年降水量(B4109)の平均の推移(2012–2023)。海水温は SSDSE 未収録のため本図に含まない。原論文は市・季節別の3か月降水量を使用しており集計単位が異なる。
3
太平洋側:夏と冬で相関の符号が反転(表8・表9)

降水量と海水温の関係を、日本海側・太平洋側 × 夏・冬の4通りで検証したのが本研究の山場である。日本海側は夏(表6・図1相当 r=−0.129)・冬(表7・図2相当 r=−0.128)ともに正の相関なし。太平洋側のも全地点で負(表8・四国沖平均 r=−0.237)。ところが太平洋側のだけ、全8地点・2海域で正の相関(表9・四国沖平均 r=0.257)に転じた。

やってみよう図3:太平洋側 夏 vs 冬の相関(原論文 表8・表9 の報告値を可視化)
  • ① このコードの目的:原論文 表8(夏)・表9(冬)の四国沖の相関係数(8地点分)を転記し、夏=赤・冬=緑で並べて符号の反転を見せる。海水温絡みなので報告値の可視化(再計算ではない)
  • ② 前後のつながり:前セクションで見た「4通りの検証」のうち、最も対照的な太平洋側の夏と冬を1枚に並べる。次のステップでは正だった冬をさらに月別に分解する。
📝 コード
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
sites = ['油津', '清水', '室戸岬', '潮岬', '伊良湖', '御前岬', '石廊岬', '館山']
# 原論文 表8(太平洋側の夏・四国沖)/表9(太平洋側の冬・四国沖)——報告値
summer_shikoku = [-0.147, -0.060, -0.289, -0.150, -0.251, -0.349, -0.379, -0.274]  # 表8 四国沖
winter_shikoku = [0.360, 0.285, 0.289, 0.303, 0.322, 0.190, 0.228, 0.077]          # 表9 四国沖
print('\n【原論文 表8・表9 の報告値】太平洋側 海水温×降水量の相関(四国沖・再計算ではない)')
print('  地点     夏(表8)   冬(表9)')
for s, a, b in zip(sites, summer_shikoku, winter_shikoku):
    print(f'  {s.ljust(4)} {a:+.3f}   {b:+.3f}')
print(f'  夏の平均 r={np.mean(summer_shikoku):+.3f}(全地点で負)/'
      f'冬の平均 r={np.mean(winter_shikoku):+.3f}(全地点で正・図4の四国沖 r=0.257)')

fig, ax = plt.subplots(figsize=(9.4, 5.2))
x = np.arange(len(sites))
w = 0.38
ax.bar(x - w / 2, summer_shikoku, w, label='夏(表8・四国沖)', color=C_NEG, alpha=0.85)
ax.bar(x + w / 2, winter_shikoku, w, label='冬(表9・四国沖)', color=C_POS, alpha=0.85)
ax.axhline(0, color='black', lw=0.8)
ax.set_xticks(x)
ax.set_xticklabels(sites, fontsize=9)
ax.set_ylabel('相関係数 r(原論文の報告値)')
ax.set_title('図3【原論文 表8・表9 の報告値・再計算ではない】\n'
             '太平洋側:海水温(四国沖)×降水量 は 夏=負・冬=正 に反転(海水温は SSDSE 未収録)',
             fontsize=11)
ax.legend(fontsize=9)
ax.grid(axis='y', alpha=0.3)
fig.tight_layout()
fig.savefig(os.path.join(FIG_DIR, '2023_H5_4_fig3_panel_scatter.png'), bbox_inches='tight')
plt.close(fig)
print('  → 図3 保存: 2023_H5_4_fig3_panel_scatter.png(報告値の可視化)')
▼ 実行結果
【原論文 表8・表9 の報告値】太平洋側 海水温×降水量の相関(四国沖・再計算ではない)
  地点     夏(表8)   冬(表9)
  油津   -0.147   +0.360
  清水   -0.060   +0.285
  室戸岬  -0.289   +0.289
  潮岬   -0.150   +0.303
  伊良湖  -0.251   +0.322
  御前岬  -0.349   +0.190
  石廊岬  -0.379   +0.228
  館山   -0.274   +0.077
  夏の平均 r=-0.237(全地点で負)/冬の平均 r=+0.257(全地点で正・図4の四国沖 r=0.257)
  → 図3 保存: 2023_H5_4_fig3_panel_scatter.png(報告値の可視化)
  • ④ 実行結果の読み取り:夏(赤)は全地点で 0 より下、冬(緑)は全地点で 0 より上。同じ海域・同じ地点でも季節で相関の符号がひっくり返るのが一目でわかる。夏の平均 r=−0.237、冬の平均 r=+0.257 は、それぞれ原論文の図3・図4の四国沖の値と一致する。
太平洋側 夏 vs 冬の海水温×降水量の相関(原論文 表8・表9)
図3:太平洋側の8地点における海水温(四国沖)×降水量の相関係数(原論文 表8・表9 の報告値・再計算ではない)。夏は全地点で負、冬は全地点で正。海水温はSSDSE未収録。
4
太平洋側の冬・月別の相関(表10・表11)

太平洋側の冬に正の相関が出たので、冬(12〜3月)を1か月ごとに分けて、冬の四国沖の海水温との相関を調べ直した。以下は原論文 表10 の8地点平均である。

やってみよう図4:太平洋側の冬・月別の相関(原論文 表10 の報告値を可視化)
  • ① このコードの目的:原論文 表10 の「8地点平均」列(12月〜3月)を転記し、r≧0.2 を緑・それ未満を灰色にした棒グラフにする。海水温絡みなので報告値の可視化(再計算ではない)
  • ② 前後のつながり:前ステップで正と分かった太平洋側の冬を、月単位まで分解する最終ステップ。ここまでの結論を解釈のセクションでまとめる。
📝 コード
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
# 原論文 表10:8地点の平均相関(月別)——報告値
months = ['12月', '1月', '2月', '3月']
month_avg = [-0.010, 0.263, 0.193, 0.011]   # 表10「平均」列
print('\n【原論文 表10 の報告値】太平洋側の冬・月別(8地点平均・再計算ではない)')
for m, r in zip(months, month_avg):
    print(f'  {m}: r={r:+.3f}')
print('  → 1月(r=0.263)・2月(r=0.193)で正の相関。12月・3月はほぼ0。')
print('    原論文は「1〜2月に発達する南岸低気圧の影響」と解釈。')

fig, ax = plt.subplots(figsize=(8.2, 5.0))
bar_colors = [C_POS if r >= 0.2 else '#9E9E9E' for r in month_avg]
bars = ax.bar(months, month_avg, color=bar_colors, width=0.55)
for b, r in zip(bars, month_avg):
    ax.text(b.get_x() + b.get_width() / 2, r + (0.008 if r >= 0 else -0.02),
            f'{r:+.3f}', ha='center', va='bottom' if r >= 0 else 'top', fontsize=10)
ax.axhline(0, color='black', lw=0.8)
ax.axhline(0.2, color='gray', ls='--', lw=1)
ax.set_ylabel('相関係数 r(原論文の報告値・8地点平均)')
ax.set_ylim(-0.1, 0.35)
ax.set_title('図4【原論文 表10 の報告値・再計算ではない】\n'
             '太平洋側の冬・月別:1〜2月に海水温×降水量の正の相関(海水温は SSDSE 未収録)',
             fontsize=11)
ax.grid(axis='y', alpha=0.3)
fig.tight_layout()
fig.savefig(os.path.join(FIG_DIR, '2023_H5_4_fig4_beta_ts.png'), bbox_inches='tight')
plt.close(fig)
print('  → 図4 保存: 2023_H5_4_fig4_beta_ts.png(報告値の可視化)')

print('\n' + '=' * 62)
print('全図の生成完了(4枚)')
print('  図1: 集中豪雨×海水温の相関(表4)        … 報告値の可視化')
print('  図2: 日本海側/太平洋側の年降水量 B4109    … SSDSE-B 実再現')
print('  図3: 太平洋側 夏 vs 冬(表8・表9)          … 報告値の可視化')
print('  図4: 太平洋側の冬・月別(表10)            … 報告値の可視化')
print('  ※ 海水温絡み(図1・図3・図4)は原論文の報告値であり再計算ではない。')
print('  ※ 新たな数値の捏造は一切していない。')
print('=' * 62)
▼ 実行結果
【原論文 表10 の報告値】太平洋側の冬・月別(8地点平均・再計算ではない)
  12月: r=-0.010
  1月: r=+0.263
  2月: r=+0.193
  3月: r=+0.011
  → 1月(r=0.263)・2月(r=0.193)で正の相関。12月・3月はほぼ0。
    原論文は「1〜2月に発達する南岸低気圧の影響」と解釈。
  → 図4 保存: 2023_H5_4_fig4_beta_ts.png(報告値の可視化)

==============================================================
  • ④ 実行結果の読み取り:1月(r=0.263)・2月(r=0.193)で正の相関が立ち、12月(−0.010)・3月(0.011)はほぼ 0。冬全体の弱い正の相関は、実は1〜2月がけん引していた。原論文はこれを「1〜2月に発達し太平洋側に降水をもたらす南岸低気圧」の影響と解釈している。加工後(表11・比×差)も 1月 r=0.259・2月 r=0.214 と同傾向で、結果の頑健性を確認している。
太平洋側の冬・月別の海水温×降水量の相関(原論文 表10)
図4:太平洋側の冬・月別(12〜3月)の海水温(四国沖)×降水量の相関係数・8地点平均(原論文 表10 の報告値・再計算ではない)。1〜2月に正の相関。海水温はSSDSE未収録。

結果の解釈とまとめ

主要な発見(原論文の結論)

  1. 集中豪雨は海水温と正の相関:特に50mm以上(年平均 r=0.598)は相関がやや強く、海水温は集中豪雨予測の助けになりうる。100mm以上(r=0.383)は相関が弱く、風・地形など他要因の影響が大きいと考えられる。
  2. 太平洋側の冬だけ正の相関:日本海側の夏・冬、太平洋側の夏では相関がほとんど見られなかったが、太平洋側の冬(特に1〜2月)は正の相関。南岸低気圧の発達が降水量に効いている可能性があり、海水温からその発達を予想できるかもしれない。
  3. 加工しても傾向は不変:「過去10年平均との差・比」に変換しても相関の向きは変わらず、長期・短期どちらで見ても関係があると考えられる。
この研究の限界(原論文の記述より) ①日本海と太平洋の2海域だけに絞った(瀬戸内海・オホーツク海・東シナ海などは未検討)。②海水温が降水量に影響するまでのタイムラグを考慮していない。③風・地形・南岸低気圧など他の気象条件を分析に含めていない。
より正確に読むための補足 原論文が示したのは相関であって因果ではない。太平洋側の冬の平均相関 r=0.257 は「やや弱い正」の水準で、地点によるばらつきも大きい。また海水温の平年差・集中豪雨回数は年々増加という共通トレンドを持ちうるため、見かけの相関が上乗せされている可能性も残る(原論文が「差・比」への加工で緩和を試みているのはこのため)。結論は「予測指標になりうる」という示唆として読むのが正確である。

データ・コードのダウンロード

🐍 再現コード(2023_H5_4_shorei.py) 📊 SSDSE-B-2026.csv

図2(日本海側/太平洋側の年降水量 B4109)は SSDSE-B-2026 からの実再現です。図1・図3・図4は、中心変数の海水温が気象庁データで SSDSE 収録外のため、原論文の報告値(表4・表8・表9・表10)を数値そのまま可視化したものです(再計算ではありません)。新たな数値の捏造はしていません。

⚠️ よくある誤解と注意点

この研究を読むとき・まねするときに陥りやすい誤解を整理する。

❌「海水温と降水量に相関がある=海水温が降水量を決める」ではない
相関因果ではない。海水温と集中豪雨がともに年々増える共通トレンドを持てば、直接の因果がなくても相関は高く出る(疑似相関)。原論文が「過去10年平均との差・比」に加工したのは、この共通トレンドの影響を薄めて短周期の関係を見るためである。
❌「このページの図はすべて原論文と同じ数値を計算し直した」ではない
中心変数の海水温は SSDSE に無い。だから図1・図3・図4は原論文の相関係数をそのまま可視化(報告値)したもので、再計算ではない。実データで計算し直したのは図2(降水量 B4109)だけ。図タイトルと図注で必ず区別している。
❌「r=0.257 なら十分に強い関係」ではない
原論文の基準では |r|=0.2〜0.4 は「やや弱い正の相関」。太平洋側の冬の平均 r=0.257 も、地点によっては 0.077(館山)と弱く、ばらつきが大きい。相関係数は1つの数字で全体を要約してしまうので、地点別・月別に分けて見る(図3・図4)ことが誤読を防ぐ。
❌「気温を海水温の代わりに使えば同じ分析ができる」ではない
SSDSE の年平均気温(B4101)は陸上の観測値で、海面水温とは別物。密接に連動する場面もあるが、季節・地域による差が大きく、そのまま海水温の代理にすると結論を誤りうる。本ページは安易な代理を避け、海水温絡みは報告値の可視化にとどめるという誠実な切り分けを採っている。

📖 用語集(この記事に出てくる統計用語)

本文で出てくる用語を初心者向けに解説します。クリックで詳しい解説ページに移動できます。

相関係数(Pearson の r)
2つの量が一緒に増減する強さと向きを −1〜+1 で表す。本研究では 0.7以上=強い、0.4〜0.7=やや強い、0.2〜0.4=やや弱い、0.2未満=ほぼ無相関、と定義して評価している。
散布図
横軸・縦軸に2変数をとり各データを点で描く図。点が右上がりなら正、右下がりなら負の相関。回帰直線の傾きが関係の向きを示す。原論文の図1〜図4はこの散布図。
平年差(アノマリ)
ある年の値と「平年値(30年平均など)」との差。海面水温はそのままだと季節変動が大きいため、平年差にしてその年が平年より高いか低いかを見る。
データ加工(差・比)
本研究の工夫。海水温は「過去10年平均との差」、集中豪雨回数は「過去10年平均に対する比」に変換して、長期トレンドを除いた短周期の関係を取り出す。
疑似相関
共通の原因(例:年々の温暖化トレンド)によって、直接関係のない2変数が相関して見える現象。相関を因果と読み違える最大の落とし穴。
海面水温(SST)
海の表面の水温。蒸発量を通じて大気中の水蒸気量に影響するとされ、台風の発達予想にも使われる。SSDSE には収録されていないため本ページでは実再現できない。
南岸低気圧
冬から春(特に1〜2月)に日本の南岸を進み、太平洋側に雨や雪をもたらす低気圧。原論文は太平洋側の冬の降水量と海水温の相関の背景にこれを挙げている。
SSDSE
統計センターが提供する教育用標準データセット。本ページは SSDSE-B(都道府県・時系列)の降水量 B4109 を実再現に用いた。

📐 使っている手法をわかりやすく解説

この研究の手法(相関分析・散布図・データ加工)を、目的・読み方・注意点の順に説明する。

🔗 相関分析
何をする
2変数(海水温と降水量など)が一緒に動く強さ・向きを相関係数 r で数値化する。
本研究での使い方
季節(年平均・冬・春・夏・秋)×しきい値(50/80/100mm)×海域×地点、と条件を細かく切って何十通りも相関を計算し、どこで関係が強いかを探した。
結果の読み方
符号(+/−)が向き、絶対値が強さ。本研究の基準では 0.2〜0.4=やや弱い、0.4〜0.7=やや強い。
⚠️ 注意点
(1) 相関≠因果——r が大きくても海水温が降水量を「起こす」証明にはならない。(2) 共通トレンドで水増し——両変数が年々増える傾向を持つだけで r は上がる。差・比への加工はこの緩和策。(3) 多重比較——何十通りも相関を見ると、偶然大きく出る組み合わせが混じる。地点別・月別に一貫した傾向があるか(図3・図4)で裏を取る。(4) 1つの数字への圧縮——r=0.257 でも地点差が大きい。散布図と併読する。
📈 散布図による可視化
何をする
2変数の関係を点の散らばりで見る。回帰直線の傾きで向きを、点の締まり具合で強さを直感的に確認する。
本研究での使い方
各地点の平均をとった海水温×降水量の散布図(原論文 図1〜図4)で、回帰直線が横ばい/右下がり/右上がりのどれになるかを示した。
⚠️ 注意点
(1) 外れ値に弱い——端の1点が回帰直線を大きく動かす。(2) 平均化で情報が減る——「各地点の平均」をとると個々のばらつきが見えなくなる。(3) 軸スケール——縦横のスケール次第で「相関が強そう」に錯覚させられる。軸の範囲を明示する。
🧮 データ加工(過去10年平均との差・比)
何をする
海水温を「過去10年平均との差」、集中豪雨回数を「過去10年平均に対する比」に変換し、長期トレンドを除いてその年が平年からどれだけずれたかだけを取り出す。
なぜ有効か
2つの系列が共通の増加トレンドを持つと相関が水増しされる。差・比にすればトレンド成分が抜け、より短周期の(=より本質的な)関係を見られる。
⚠️ 注意点
(1) 加工で相関は弱まりがち——本研究でも表5・表11 は表4・表10 より小さくなった。これは「水増し分が取れた」とも読める。(2) 過去10年平均の定義——「前年まで」の窓の取り方で値が変わる。(3) 加工前後で符号が一致するかを必ず確認する(本研究はここを頑健性の根拠にしている)。
📌 「報告値の可視化」という作法(このページ特有)
何をする
中心変数(海水温)が手元のデータセットに無いとき、原論文が報告した相関係数をそのまま図にする。新しい計算はしない。
なぜ必要か
無いデータを別の変数で無理に代用すると、結論をゆがめる恐れがある。「再現できる範囲」と「報告値を借りる範囲」を分けるのが誠実。
⚠️ 注意点
図タイトルと図注の両方に「報告値・再計算ではない」と二重明記し、実再現の図(図2)と混同させないこと。数値は原典(表番号)を明示して転記し、勝手な数値を足さない

◆ 関連・発展手法(本論文では未使用)

ラグ相関/時差相関
何をする
「海水温が上がってから数か月後に降水量が変わる」といった時間差のある関係を、系列をずらして相関を測る手法。
❌ 未使用の理由
本研究は同じ年の海水温と降水量をそのまま相関させ、タイムラグを考慮していない(限界として明記)。「海水温の影響は遅れて出る」という発展課題に直結する手法。
📉 重回帰・時系列予測モデル
何をする
海水温・風・地形など複数の要因を同時に入れて降水量を予測したり(重回帰)、将来値を予測したり(ARIMA など)する。
❌ 未使用の理由
本研究は「海水温という指標が使えそうか」を相関で探る段階にとどまる。著者が挙げる「他の気象条件も加える」発展では、複数要因を扱える重回帰が次の一手になる。

🚀 発展の可能性(結果 X → 新仮説 Y → 課題 Z)

著者自身が挙げた「今後の展望」に沿って、次の一手を考える。

① 海域を広げる
結果 X
日本海と太平洋の2海域に絞った結果、太平洋側の冬でのみ正の相関が出た。
新仮説 Y
観測地点の近くの海だけでなく、瀬戸内海・オホーツク海・東シナ海など他の海域の海水温も降水量に効いているのではないか。
課題 Z
気象庁の他海域の海面水温データを集め、同じ相関分析を各地点に対して行い、どの海域が効くかを比較する。
② タイムラグを入れる
結果 X
同じ年の海水温と降水量をそのまま相関させており、時間差を考慮していない。
新仮説 Y
海水温が降水量に効くまでに数か月かかるなら、系列をずらしたラグ相関の方が強く出るのではないか。
課題 Z
海水温を1〜6か月先行させて相関を測り直し、相関が最大になるラグを探す。
③ 他の気象条件を加える
結果 X
夏・日本海側・100mm豪雨などでは相関が弱く、海水温だけでは説明しきれなかった。
新仮説 Y
風・地形・南岸低気圧などを合わせれば、降水量の説明力が上がるのではないか。
課題 Z
複数の気象要因を説明変数にした重回帰で、海水温の寄与を他要因と一緒に評価する。

🎯 自分でやってみよう(5つのチャレンジ)

再現コード(図2)を少し変えるだけで試せる課題を、易しい順に用意した。

★☆☆☆☆ 難易度1
図2をそのまま再現する
付属スクリプトを実行し、日本海側/太平洋側の年降水量(B4109)の推移を再現しよう。ポイント:どのコード行がどの図を作っているかをたどる。海水温絡みの図1・図3・図4が「報告値」である理由も確認。
★★☆☆☆ 難易度2
対象の都道府県を入れ替える
JPSEA_PREFSPACIFIC_PREFS の県を増減させて、平均降水量や変動係数がどう変わるか見よう。ポイント:豊岡(兵庫県)のように「県の代表地点が別の気候区」だと平均がずれる理由を考える。
★★★☆☆ 難易度3
年降水量のランキングを作る
2023年度の47都道府県を B4109 で降順に並べ、上位・下位を確認しよう。ポイント:日本海側・太平洋南部が上位に来るか、原論文の地理的傾向と合うかを見る。
★★★★☆ 難易度4
「過去平均との比」への加工を体験する
各県の年降水量を「その年 ÷ それ以前の平均」に変換して推移を描こう。ポイント:原論文の「比」加工の考え方を、SSDSE の降水量だけで(海水温なしで)体験する。
★★★★★ 難易度5
なぜ海水温の相関は再現できないのか説明する
図1・図3・図4がなぜ SSDSE で再計算できないのかを、海水温の出典(気象庁でSSDSE収録外)集計単位(市・季節 vs 都道府県・年)の2点から自分の言葉でまとめよう。「報告値の可視化」と「実再現」の違いを説明できれば合格。

💼 この手法は実社会でこう使われている

「気象・海洋の指標と結果を相関で結び、予測の手がかりを探す」発想は、防災や産業の現場で広く使われている。

🌊
気象予報・防災
気象庁は海面水温を台風の発達予想や季節予報に活用している。海水温という「先行指標」で豪雨や積雪の増減を早めに見積もる発想は本研究と同じ。
🌾
農業・水資源管理
降水量の多寡は作付け・ダム運用・かんがい計画に直結する。海洋指数(エルニーニョなど)と降水量の相関から作柄や渇水リスクを予測する。
🐟
水産業
海水温は魚の回遊・漁獲量を大きく左右する。同じ相関分析で、海水温から不漁・豊漁を早めに読む取り組みが各地で行われている(関連論文「いかなご」参照)。
エネルギー需要予測
気温・降水は冷暖房や水力発電の需給に影響する。気象指標と需要の相関から、電力会社は需要のピークを予測して供給計画を立てる。
🏢
保険・リスク管理
損害保険は豪雨・洪水リスクを気象データとの相関で評価し、保険料や引受方針を決める。極端現象の増加傾向は保険設計の重要な前提。
🎓
気候・環境研究
海洋と大気の相互作用の研究では、海面水温と降水・気温の相関分析が出発点。本研究のような「指標探し」は学術研究の第一歩でもある。

🤔 よくある質問(読者からの想定Q&A)

この研究を読んで浮かびやすい疑問に答える。

Q. このページの図は原論文と同じ数値ですか?
A. 図2(降水量 B4109)だけが SSDSE-B からの実再現です。図1・図3・図4は、中心変数の海水温が気象庁データで SSDSE 収録外のため、原論文の報告値(表4・表8・表9・表10)を数値そのまま可視化しています。新たな数値の捏造はしていません。
Q. なぜ海水温を SSDSE から計算しないのですか?
A. 海面水温は SSDSE のどのデータセットにも収録されていないからです。原論文は気象庁の海面水温データを使っています。SSDSE の陸上気温(B4101)で代用することもできますが、海水温とは別物で結論をゆがめかねないため、本ページは代用せず報告値の可視化にとどめています。
Q. 「太平洋側の冬に相関」は強い結果ですか?
A. 平均 r=0.257 は原論文の基準で「やや弱い正の相関」です。ただし全8地点・2海域で符号が正にそろい、1〜2月に集中している点が意味を持ちます。強さより一貫性が根拠になっているタイプの主張です。
Q. なぜ夏と冬で相関の符号が逆になるのですか?
A. 原論文は、太平洋側の冬の降水が1〜2月に発達する南岸低気圧によってもたらされ、その発達に海水温が関与している可能性を挙げています。夏は別の気象メカニズム(梅雨・台風など)が支配的で、海水温との単純な相関は現れにくい、という解釈です。

✅ 理解度チェック(4問)

この論文を理解できたか、クリックで確認しましょう。間違えても解説が出ます。

🐍 ブラウザで動かす — インストール不要でこの論文の分析を再現する

このページの分析は、この画面の中でそのまま実行できます。 Python をインストールする必要も、CSV をダウンロードする必要もありません。 下のセルの 「▶ ブラウザで実行」 を上から順に押すか、 「▶ 最初から全部実行」 で一気に流してください。 表示されるのは、本文の図表とまったく同じ計算の結果です (動かしているのは再現スクリプト code/2023_H5_4_shorei.py そのもの)。

コードは書き換えられます。「✏️ 書き換える」で数字や変数を変えて ▶ を押すと、 結果がどう変わるかをその場で確かめられます(元に戻すボタンつき)。 ページを開いた時点で裏で実行環境の準備が始まっているので、待ち時間はほとんどありません。 初回だけ実行環境の取得にインターネット接続が必要です。