Mukai Systems

タクシー問題

Introduction

書籍「ファスト&スロー」で、認知バイアスの例として以下の問題があげられていた。

夜、一台のタクシーがひき逃げをしました。この市では、緑タクシーと青タクシーの二社が営業しています。事件とタクシー会社については、次の情報が与えられています。

・市内を走るタクシーの85%は緑タクシーで、15%が青タクシーである。

・目撃者は、タクシーが青だったと証言している。裁判所は、事件当夜と同じ状況で目撃者の信頼性をテストした結果、この目撃者は青か緑かを80%の頻度で正しく識別し、20%の頻度で間違えた。

では、ひき逃げをしたのが青タクシーである確率は何%でしょうか?

ゆっくり考えれば(ファスト&スローでいうシステムⅡの思考)まったく難しいことはないのだが、私も含め、多くの人が熟考せずに80%と誤って即答してしまうという。

ベイズの定理

この問題は条件付き確率の問題であり、ベイズの定理によって簡単に解くことができる。

条件付き確率(証言が青のとき、ひき逃げしたタクシーが青)
=条件付き確率(ひき逃げしたタクシーが青のとき、証言が青)×事前確率(ひき逃げしたタクシーが青)/事前確率(証言が青)
=80%×15%/(80%×15%+20%×85%)
=約41%

ここで、「事前確立(証言が青)」は二通り——証言が正しかった場合(ひき逃げしたタクシーが青)と、誤っている場合(ひき逃げしたタクシーが緑)——あることに留意する。

より視覚的な解

ベイズの定理で導いた数式は、図を描くことによって視覚的に理解できる。正方形を、市内を走るタクシーの比率で縦に分割し、目撃者の証言の正誤の比率で横に分割すると以下のようになる。

ここで、証言が青だった場合にひき逃げをしたタクシーが青である確率は以下のように表現できる。

条件付き確率(証言が青のとき、ひき逃げしたタクシーが青)
=ひき逃げしたタクシーが青かつ証言が正しい場合/(ひき逃げしたタクシーが青かつ証言が正しい場合+ひき逃げしたタクシーが緑かつ証言が誤っていた場合)
=青色の面積/(青色の面積+緑色の面積)
=12/(12+17)
=約41%

これは、ベイズの定理によって導いた答えに等しい。

モンテカルロ法

この問題を解く別の方法として、モンテカルロ法というものがある。モンテカルロ法では、疑似乱数を用いて上記の確率に基づいてシミレーションを大量に行う。十分な回数のシミュレーションを行えば、統計学の基本定理である大数の法則によって確からしい結果が得られるというわけ。ある程度経験のあるプログラマにとってはこれが一番易しいだろう。

例えば、以下のような疑似コードによって実現できる。

while 試行回数が十分ではない:
    ひき逃げしたタクシーを確率に基づいて抽選
    目撃情報がの正否を確率に基づいて抽選
    if 目撃情報が青タクシーだったら:
        if ひき逃げしたタクシーが青タクシーだったら:
            ひき逃げしたタクシーを数える
        試行回数を増やす
試行回数に対するひき逃げしたタクシーが青の割合を計算する

Parenで実装してシミュレーションした結果、確かに41%程度の確立になることが分かった。

If a blue taxi is observed and it is a blue taxi: 0.413470

Source code

More info

See also