見出し画像

タクシー番号問題

これまできちんとNon-Parametric statisticsは勉強したことがなかった。ふとしたきっかけでNoetherの"Introduction to Statistics: The Nonparametric Way"という本を買って、これがすこぶる面白い。

大学ではWilcoxon testなどはさらっと習ったのだが、Nonparametric statisticsは選択科目になっていて、他の科目で忙しかったのと、統計検定みたいな話はあまり興味が持てなかったのでやらなかった。この本を読んでみると、Nonparametricはt-testのように母分散が未知だとかなんだとか、よくわからない前提条件があまりないので分かりやすい、ということを理解できた。また、NonparametricはParametricな統計と対になるようなイメージを持っていたのだが、どちらかというと前提条件をあまり置かない、より一般化された統計と解釈した方が良さそう、というのも新しい発見だった。

タクシー番号問題

この本の中で、The Taxi Number Problemというのが紹介されている。もともと興味を持ったのは実はこの話で、第二次世界大戦中に連合国軍がドイツ軍の戦車の数を推定するのに、ドイツ軍が車両番号を几帳面に1から順に番号づけしていたという事実から、Nonparametricな推定方法を使ったというものだ。読む前はどうやるのか、全然想像もつかなかったが、読んでみると意外とシンプルで、確かにこれでおおよその推定はできそうだと分かった。

タクシー番号問題というのは、つまりこういうものだ。街中を走っているタクシーが何台あるか、というのが推定したいもので、どうやってやるかというとナンバープレートを見て推定するというものだ。日本のナンバープレートだと4桁になっていて、しかも地域ごとの名前や、ひらがなもあってちょっと複雑だが、少し単純に考えて、4桁の番号しかないものと想定する。街中で突っ立って、走ってきた車をランダムに5台ぐらい観察して、そのナンバープレートを控える。

例えばその番号が、

405 280 73 440 179

だったとする。この時街を走っているタクシーの台数は何台か?という問題。本の中では3つの推定方法が紹介されている。結構面白いので、答えを見る前に自分でも考えてほしい。

推定方法1

1つ目の推定方法は、中央値を使うものだ。さらに話を単純にするために、番号のデータが1つしかなかったとする。例えば405とする。

タクシーの番号は1から順についていると仮定すると、一番もっともらしい推定値は、405がちょうど真ん中の値だと考えて、405を2倍する、というものだ。さらに正確にすると、数字は1から始まって、405より小さい番号は404個しかないから、405より大きい番号も404個あると考えて、405 + 404 = 809とするものだ。一般化すると、出た数字を2倍して、1を引く。

観察したデータが2個以上だとするとどうするかというと、中央値を使う。上記の5つの数字が観察できたとすると、中央値は280だから、280 x 2 - 1 = 559が推定値となる。

推定方法2

2つ目の手法は、極値推定法 (The Extreme Estimate)というものだ。これはもっと簡単で、まず数字を小さい順に並び替える。そうすると、

73 179 280 405 440

というようになる。440より番号が大きいタクシーが何台あるかを知りたいのだが、それはわからない。一方で、73より小さいタクシーの台数はわかる。1から始まっているとすれば72だ。とすると、一番大きい440より番号が大きいタクシーの数も、72台あると考えられないだろうか。これが2つ目の推定方法だ。一般化すると、一番小さい数字から1を引いて、その数を一番大きい数字に足す。

この例だと、

440 + (73 - 1) = 512

となる。

推定方法3

最後の方法は、少しだけ複雑で、より良い方法らしい。差分を使うという手法だ。これはまず観察された数字を小さい順に並べ、隣り合う数字の差分を計算する。

73 179 280 405 440

なら、

72  105  100  124  34

という具合になる。それぞれ73-1 = 72, 179 - 73 - 1 = 105, 280 - 179 - 1 = 100, 405 - 280 - 1 = 124, 440 - 405 - 1 = 23と計算する。1を引いているのは、それぞれの数字の間に、何台のタクシーがいるか、と数えるからで、例えば数字が1と5だったら、間にあるタクシーは2,3,4の3台なので、5 - 1 - 1 = 3という具合になる。

3つ目の推定方法では、これら差分の平均を、観察された最大値に足すという手法だ。この例だと、

(72 + 105 + 100 + 124 + 34)/5 = 87

を最大値の440に足して、440 + 87 = 527と推定する。

これは計算をもうちょっと簡単にできる。差分をいちいち計算しなくても良い。n個のサンプルがあるとして、それぞれのサンプルをx1, x2などと書くとすると、差分の合計値というのは、

$$
(x_1 - 1) + (x_2 - x_1 - 1) + ... + (x_{n-1} - x_{n-2} - 1) + (x_n - x_{n-1} - 1)
$$

と書き表せる。そうするとx1, x2 などがキャンセルされて、上の式は結局

$$
x_n - n
$$

となる。一番大きな観測値をLとすると、これはL - nと書き表せる。すると推定方法は

$$
(L - n)/n + L = \frac{(L(n+1) - n)}{n} = \frac{(L(n+1) - n )}{n} = \frac{L(n+1)}{n} - 1
$$

となる。さっきのデータに当てはめると、Lは440、nは5だから、

440(5+1)/5 - 1 = 527

と同じ結果になる。

実際にやってみた

と言っても日本ではナンバープレートが地域名とひらがなで分かれているのと、正解を知らないから、タクシー番号ではできない。解答を知っているもので、応用できそうな問題がないか考えてみた。思いついたのは、学校の出席番号からクラスの人数を推定する、という方法だ。クラスの人の番号は1から順についているし、クラスの人数もわかる。

ということで、正確なランダムサンプリングではないが、子供に同じクラスの子を5人思い浮かべてもらって、出席番号を聞いた。すると番号は

14 27 11 25 1

だった。並び替えると

1 11 14 25 27

早速それぞれの手法で推定すると、

手法1:中央値は14なので、14 x 2 - 1 = 27

手法2:1番小さい数字は1だから、1 - 1 = 0 で、最大値の27に0を足して27が推定値

手法3:一番大きい数字は27で、サンプル数は5だから、27(5+1)/5 - 1 = 31.4。切り上げて31が推定値。

だった。クラスの人数は全部で28人だったので、手法1、2はかなり近く、手法3は少し多いぐらいと、意外と正確だった。

まとめ

ということで、タクシー番号問題を統計を使って推定する、という話でした。この本は数式を使うのではなく直感的な説明を使って順を追って説明しているので、ものすごく分かりやすくておすすめです。他の章で学んだことも順次紹介していこうと思います。

この記事が気に入ったらサポートをしてみませんか?