なぜバスはいつも遅れて感じるのか?検査パラドックスが明かす時間認知の錯覚

統計

TL;DR(30秒で要点)
ランダムな時刻に観測すると、長い間隔に当たりやすいため、体感する間隔・待ち時間は平均より長くなりがち。これが検査パラドックス(Inspection Paradox)
数式で言うと、平均間隔を m、変動係数を CV とすると、
観測される平均間隔 = m·(1 + CV²)平均待ち時間 = ½·m·(1 + CV²)

はじめに

「ダイヤは10分ごとなのに、気づけば15分待ってる…」

——それ、錯覚ではなく“統計の性質”です。

毎日の通勤で「いつも待たされる」と感じるのは、単なる運の悪さではありません。原因のひとつが検査パラドックス。本稿では、直感→式→ミニ実験の順で、なぜ“長く待つ側に偏る”のかをスッキリ解説します。

検査パラドックスとは?(超要約)

ランダムな時点で観測すると、長い区間ほど出会いやすいため、体感する間隔は母集団の平均より長くなる——これが検査パラドックスです。

式だけ覚える版:
平均間隔 m = E[X]、分散 Var[X]、変動係数 CV = SD[X]/m とすると、
観測される平均間隔 = E[X²]/E[X] = m·(1 + CV²)
平均待ち時間 = E[X²]/(2E[X]) = ½·m·(1 + CV²)

直感でわかる:なぜ長い間隔に当たりやすい?

時間軸上に「5分区間」と「15分区間」が半々で並ぶとします。あなたがランダムな時刻に到着するなら、物理的に長い区間に着地する確率が高い(この例では3倍)ため、体験する平均間隔は10分より長くなります。

間隔の分布(例)母平均間隔 m観測される平均間隔平均待ち時間
一定10分(CV=0)10分10分5分
5分/15分が各50%(CV=0.5)10分12.5分6.25分
指数分布(CV=1)10分20分10分

ポイント:ダイヤが一定なら“平均5分待ち”ですが、ばらつき(CV)が大きいほど、あなたの体感は伸びます。

数式でつかむ“体感が伸びる”理由

# 直感の導出(要点だけ)
E[X²] = Var[X] + (E[X])² = m²·(CV² + 1)

観測される平均間隔 = E[X²]/E[X] = m·(1 + CV²)
平均待ち時間       = ½·E[X²]/E[X] = ½·m·(1 + CV²)
指数分布(発車にランダム性が大きい)だとどうなる?

指数分布は CV=1 なので、観測される平均間隔は 2m、平均待ち時間は m
「平均10分運行なのに、いつも10分くらい待つ」のは、ダイヤに揺らぎがあるときに自然と起こります。

1分でできるミニ実験(シミュレーション)

# Python(Colab可):検査パラドックスを可視化
import numpy as np
np.random.seed(42)

# 例1:5分/15分が半々
n = 100000
intervals = np.random.choice([5,15], size=n)
m = intervals.mean()
# ランダムな時刻に到着 → 区間長で重み付けされた確率で区間に当たる
weights = intervals / intervals.sum()
observed_interval = np.random.choice(intervals, size=10000, p=weights).mean()
mean_wait = observed_interval / 2  # 無記憶でない一般の更新過程でも平均待ちは観測間隔の半分

print("母平均間隔 m:", m)                      # ≈10
print("観測される平均間隔:", observed_interval)  # ≈12.5
print("平均待ち時間:", mean_wait)               # ≈6.25

# 例2:指数分布(CV=1)
intervals = np.random.exponential(scale=10, size=n)
m = intervals.mean()
weights = intervals / intervals.sum()
observed_interval = np.random.choice(intervals, size=10000, p=weights).mean()
mean_wait = observed_interval / 2
print("--- 指数分布 ---")
print("母平均間隔 m:", round(m,2))                 # ≈10
print("観測される平均間隔:", round(observed_interval,2))  # ≈20
print("平均待ち時間:", round(mean_wait,2))               # ≈10

実世界での“あるある”

  • ネット回線:快適な時間は短く、遅い時間に遭遇しがち。
  • 病院のアンケート:待ち時間が長い患者ほど回答しやすく、統計が“長い側”に寄る。
  • コールセンター:長く待った人の不満が目立ち、全体の印象を塗り替える。

対策と心構え(実務と生活のコツ)

  1. 分布で考える:「平均」だけでなく CV(ばらつき)を意識。CVが大きい路線は待ちが伸びやすい。
  2. リアルタイム情報を活用:運行アプリで直前の便間隔を見て動く。
  3. 戦略的にずらす:混雑ピークを避ける/乗り換えで“短い区間”に乗る機会を増やす。
  4. 評価設計を工夫:顧客満足度は「ランダム時点サンプリング」や「全件ログ」ベースで測る。

1分FAQ

Q. 本当に“いつも遅い”の?

A. ダイヤが一定(CV=0)なら平均待ちは m/2。
ばらつきがあるほど(CV>0)平均待ちは ½·m·(1+CV²) に伸び、“遅く感じる”のは統計的に自然です。

Q. どれくらいばらつくと体感が悪化するの?

A. 目安は CV。例えば m=10分なら
CV=0 → 待ち5分 / CV=0.5 → 6.25分 / CV=1 → 10分。

Q. “遅延”と検査パラドックスの違いは?

A. パラドックスはサンプリングの偏り由来。遅延は運行の実問題。
現実には両方が重なるので、リアルタイム情報の併用が有効です。

まとめ

  • ランダム観測では長い区間に当たりやすい(検査パラドックス)。
  • 平均間隔 m、変動係数 CV なら、観測間隔m·(1+CV²)平均待ち½·m·(1+CV²)
  • “平均”だけに頼らず、ばらつきリアルタイムで賢く動こう。

次に読むなら:「バークソンのパラドックス:選び方が作る“見かけの逆相関”」「シンプソンの逆説:全体と内訳で結論が逆転するとき」