1. イントロダクション
小売店の来店客数を予測するうえで、天候は重要な要素の一つです。雨の日には外出を控える人もいれば、雨が降る前に買い物を済ませる人もいるでしょう。
中でも台風は、実際の雨風だけでなく、接近するという予報自体が買い物のタイミングに影響する可能性があります。
今回は、そんな台風と来店客数の関係を調べるために、台風の位置情報を活用した分析アプローチを紹介します。
2. 暴風警報だけでは捉えきれない?
台風による客数への影響を調べる方法の一つに、店舗のある地域に暴風警報が発令された日と、通常時の客数を比較する方法があります。
しかし、台風が接近していても、必ずしも暴風警報が発令されるとは限りません。警報が出ていなくても、台風の接近を知って買い物を早めたり、外出を控えたりする人もいるかもしれません。
実際、当初の分析でも暴風警報を基準にすると対象日が非常に少なく、十分な検証ができませんでした。
そこで考えたのが、警報の有無ではなく、台風が店舗にどれくらい近づいたかで判断する方法です。
3. 台風と店舗の距離を計算してみる
今回使用したのは、気象庁が公開している「台風位置表」です。このデータには、台風中心の緯度・経度や観測日時などが記録されています。
この位置情報と店舗の緯度・経度を組み合わせれば、台風中心から各店舗までの距離を求められます。
分析の流れは、次のとおりです。

- 台風の位置情報を取得する
- 気象庁の台風位置表から、2024〜2026年の台風中心の位置情報を取得しました。取得時点でCSVに収録されていない期間は、公開PDFから補完しています。
- 台風と店舗の距離を計算する
- 台風中心と店舗の緯度・経度を組み合わせ、Haversine(ハバーサイン)公式で2地点間の距離を計算します。
- 店舗ごとの最短距離を求める
- 台風位置表には台風の発生前や温帯低気圧に変わった後の位置も含まれるため、実際に台風だった時点に限定します。そのうえで、店舗・日付・台風ごとの最短距離を求めました。
- 台風接近日を抽出する
- 最短距離が300km以内だった店舗・日付を「台風接近日」と判定します。同じ日に複数の台風が接近した場合は、最も近い台風を代表とし、重複を除外しました。
Haversine公式をPythonで実装する
Haversine公式は、2地点の緯度・経度から、地球を球体とみなしたときの地表上の距離を求める計算方法です。
Pythonでは、例えば次のように実装できます。
from math import radians, sin, cos, asin, sqrt
#lat1 = 地点1の緯度 / lon1 = 地点1の経度 / lat2 = 地点2の緯度 / lon2 = 地点2の経度
def haversine_km(lat1, lon1, lat2, lon2):
R = 6371.0 # 地球の平均半径(km)
#緯度経度をラジアンに変換
lat1, lon1, lat2, lon2 = map(radians, [lat1, lon1, lat2, lon2])
#2地点間の緯度と経度の差
dlat = lat2 - lat1
dlon = lon2 - lon1
#ハバーサイン公式の中間計算
lat_component = sin(dlat / 2)**2
lon_component = cos(lat1) * cos(lat2) * sin(dlon / 2)**2
a = lat_component + lon_component
#地球表面に沿った2地点間の距離を求める
distance = 2 * R * asin(sqrt(a))
return distance
# 架空の座標例
distance = haversine_km(35.0, 139.0, 34.0, 140.0)
print(round(distance, 1))今回は、この距離計算を台風の各観測位置と店舗の組み合わせに適用しました。その後、日付ごとに最短距離を集計することで、店舗単位の接近状況を判定しています。
なぜ300kmを基準にしたのか?
気象庁では、ある地点への台風の接近を「台風中心がその地点から300km以内に入ること」と定義しています。
そこで今回は、300km以内を接近判定の基準として採用しました。
ただし、300km以内に入ったからといって、すべての店舗で客数が減少するとは限りません。そこで、100km以内、100〜200km、200〜300kmの3つの距離帯に分け、客数の変化を比較することにしました。

例えば、距離を計算すると、次のように店舗ごとの接近状況を整理できます。
| 店舗 | 台風中心との最短距離 | 判定 |
| 店舗A | 75km | 100km以内 |
| 店舗B | 155km | 100〜200km |
| 店舗C | 240km | 200〜300km |
| 店舗D | 355km | 接近対象外 |
※説明用の架空データです。実際の店舗情報や分析結果ではありません。
これにより、「台風が接近したかどうか」だけでなく、「台風との距離によって客数の変化に違いがあるのか」も調べられるようになりました。
4. 実際に客数と比較してみると?
抽出した台風接近日について、通常時と比較した客数の変化を調べました。
通常時の客数には、直近13週の同じ曜日から最大・最小の週を除いた平均値を使用しています。客数変化率は、次の式で算出しました。
この方法で分析したところ、台風中心との距離が近いほど、客数の減少が大きくなる傾向が見られました。また、日中に接近した場合は、それ以外の時間帯にのみ接近した場合よりも減少が大きい傾向があり、接近終了後には客数が回復する動きも確認できました。一方で、台風の強さによる違いや、接近前の買いだめについては明確な傾向が見られませんでした。
ただし、今回の対象事例は限られており、休日や実際の雨風など、ほかの要因も考えられます。そのため、台風との距離が客数減少を引き起こしたと断定することはできません。
そして、もう一つ気になるのが、「人は台風の予報を見て行動を変えるのか、それとも実際の雨風によって行動を変えるのか?」という点です。
今回使ったのは過去に観測された台風の位置情報です。実際の需要予測に活用するには、予測時点で利用できる進路予報を使い、予測精度が改善するかを別途検証する必要があります。
今回の分析を通して、警報の発令有無だけに頼らず、台風の位置情報から店舗ごとの接近状況を捉えることができました。今後は、進路予報や店舗周辺の降水量・風速なども組み合わせることで、台風接近時の購買行動をより詳しく捉えられるのではないかと考えています。

