とーけい部

現在、このブログは工事中です。

統計学 統計検定 数学

待ち時間のパラドックス(数式無し)

とあるバス停にて

 今ここに、世にも奇妙なバス停があります。このバス停では、どの時間にバスが来るのかわかりません。ランダムにバスがやってくるのです。
 とんでもないバス停ですね、使い物になりません。
 さて、できるだけこんなバス停使いたくないところですが、割と高頻度でバスがやってくるおかげで、ある程度バス停で待っておけば、まあそこそこの時間待つだけで乗れることにしましょう。

 「バスが一度やってきてから、次のバスが来るまで」の時間間隔をストップウォッチを使って、「バスが合計で10回来るまで」測ってみたところ、以下のようなデータがとれました。
※とあるバスが到着した瞬間を0回目として、そこから計測開始したとしましょう。(当然ながら、0回目のバスの到着時間は0分00秒です)

set.seed(200)
tau <- rgamma(n = 10 , shape = 0.5 , scale = 8)
plot(cumsum(c(0,tau)) , 0:length(tau) , type = "s" , main = "「バスが来るまでの時間」と「バスが来た回数」",
     xlab = "時間(分)" , ylab = "バスが来た累積回数")
points(cumsum(c(0,tau)) , 0:length(tau),pch=16,cex=2)

f:id:hasegawa-yuta289:20210819123241p:plain  さて、この図によれば、バスが10回到着するまでにかかる時間は40分くらいなので、つまり4分に一回くらいは、バスが来るということになりますね。

 この「バスが一度到着してから次のバスが到着するまでの時間」のことをここでは「バス到着時間間隔」と呼ぶことにしましょう。あとで説明する「待ち時間」とは別の概念なので注意してください。

待ち時間のパラドックス

 あなたはこのバス停を利用したいと思っています。つまり、ふらっとこのバス停まで歩いてやってきて、次のバスがくるまで待つ……ということをしましょう。
 ここで、あなたは、先ほど確認したように「4分に一回くらいはバスがくる」ということを知っているとしましょう。

さて、問題です。

 あなたはどのくらいの時間このバス停で待たなければならないでしょうか?

フツーに素直に考えれば、この「歩いてバス停まで到着したときに次のバスが来るまで待たなきゃいけない時間(の平均)」は、「このバス停で降りてすぐに次のバスを待つまでの時間(の平均)」である4分よりは短いですよね。

答えは……実際に確かめてみましょうか。

 さて、先ほど確認したデータ上では、バスが10回到着するまでの累積時間(単位は「分」にしましょう)は以下のようになっています。

cumsum(tau)
> cumsum(tau)
 [1]  4.993815 10.672151 13.749107 14.014109 15.660872 19.262998 32.793644 35.170187 35.648799 41.419587

なので、あなたが歩いてやってきたとして、バス停に到着した時刻が0分~41.419分のどれかの値だということにしてみます。一様乱数を使って、あなたがバス停に到着した時刻を設定してみましょう。

set.seed(10)
TOUCHAKU <- runif(n = 1 , min = 0 , max = 41.419)
TOUCHAKU
> TOUCHAKU
[1] 21.01924

ということで、あなたがこのバス停に到着した時刻は21.0分ということになりました。次のバスが到着するまでの時刻まで待つと、その時間は32.8 - 21.0 = 11.8分でした。

あら、残念! バス到着時間間隔は平均して4分なのに、その倍以上の11.8分も待たなければなりませんでした!

運が悪かったですね……本当に、そうでしょうか?

 この、「バス停まで歩いてやってきて、到着してから次のバスがやってくるまでの時間」を「待ち時間」と呼ぶことにしましょう。あなたの今の待ち時間は約12分でした。バス到着時間間隔の平均は4分なので、その倍以上の時間を待ったわけですね。

 直感的に考えて、「バス到着時間間隔」は「待ち時間」よりも(平均的に)長くなるでしょう。しかし、実はそれが成立しない場合があります。今考えている例では、実はそのような状況を設定しています。

 これを「待ち時間のパラドックスと呼びます。

確かめてみる

 先ほどはバスが「10回」やってくるまで計測しましたが、もっとデータを増やすためにバスが「10000」回やってくるまでストップウォッチを使って気合で計測したとします。  

set.seed(1)
tau.10000 <- rgamma(n = 10000 , shape = 0.5 , scale = 8)
max(cumsum(tau.10000))
> max(cumsum(tau.10000))
[1] 39814.38

 バスが10000回到着するまでの合計時間は39184.38分でした。663時間、まる27日はかかってますね。頑張りました。

 ちなみに、バス到着時間間隔の平均は

mean(tau.10000)
> mean(tau.10000)
[1] 3.981438

4分だということがわかります。

 さて、あなたがふらっとこのバス停に到着した時刻を0分~39184.38分の間でランダムに取ることにしましょう。その「歩いてバス停にたどり着いた時刻」から「次のバスがやってくる」までの待ち時間を計算する、ということを仮想的に100000回行ってみます。

MACHIJIKAN <- c()
for(i in 1:100000){
  TOUCHAKU <- runif(n = 1 , min = 0 , max = max(cumsum(tau.10000)))
  MACHIJIKAN[i] <- cumsum(tau.10000)[(cumsum(tau.10000) - TOUCHAKU) > 0][1] - TOUCHAKU
}
mean(MACHIJIKAN)
> mean(MACHIJIKAN)
[1] 6.084652

こうすると、待ち時間の平均は6分で、明らかにバス到着時間間隔の平均である4分よりも大きいですね。待ち時間のパラドックスが起きていることがわかりました。

直感的な説明

 もう一度、先ほど計測したバスが10回来るまでのデータを見てみます。

plot(cumsum(c(0,tau)) , 0:length(tau) , type = "s" , main = "「バスが来るまでの時間」と「バスが来た回数」",
     xlab = "時間(分)" , ylab = "バスが来た累積回数")
points(cumsum(c(0,tau)) , 0:length(tau),pch=16,cex=2)

f:id:hasegawa-yuta289:20210819123241p:plain
 バスが一度到着してから、次のバスが到着するまでの時刻ですが、これに結構なばらつきがあるように見えますね。一度バスが到着したら即座に次のバスが来るか、一度バスが到着したら次のバスが来るまで結構な時間がかかるか、そのどちらかが起きる可能性が高そうです。つまり、バス到着時間間隔の分散が大きいわけですね。
 それら到着時間間隔の極端な長さ・極端な短さが互いに打ち消し合って、平均してみるとバス到着時間間隔は4分になっているわけです。

 ここで、ランダムな時間にバス停まで歩いてたどり着いたとして、たどり着いた時点がどのバス到着時間間隔に当てはまるか? を考えてみると、これは多分「バス到着時間間隔が長い間隔」内で到着する事の方が多いだろうと考えられますね。この図で言えば、20分~30分の間にバス停までたどり着いた場合は明らかに長時間待つ必要があります。

 このように、バス到着時間間隔の分散が(その平均に比べて)やたらと大きい場合は、待ち時間のパラドックスが発生してしまいます。

参考文献

 数式を使った具体的な説明は以下の本に載っているので、興味のある方は読んでみてください。全然話題を聞かないですけどめちゃくちゃ良い本だと思います。