見出し画像

データを集めた後に確率の推測をしたい

渋谷駅前で働くデータサイエンティストのブログで紹介されていた標準ベイズ統計学という本を読みました。図書館で借りました。読んでみたらなかなか面白かったです。読んでて思いついたことを、思い出したことなどをいくつか書いてみたいと思います。

稀な事象の確率推定

一章の最初の方で紹介されていたベイズ統計の応用例です。ある小さな町での感染症の有病率に興味があるとして、住民への感染有無の検査から有病率を推定するという例です。本では20人に検査をし、全員感染していなかった、という状況で有病率を推定しています。

検査した人が感染している、していない、という2値を取るケースなので、こういう時は二項分布でモデル化します。仮に有病率がxとわかっていたなら、20人に検査をして感染している人の数は$$Binomial(20, x)$$でモデル化できます。

ベイズ的なアプローチだと、この有病率xについて事前分布を考えます。事前分布ってどうやって決めるのか、本当にそんなことを決めて良いのか、主観的にすぎないか、みたいな批判がベイズ統計についてはあるんですが、そういうことは一旦無視します。事前分布はなんでもいいのですが、ベータ分布を使うと計算が簡単になります。なぜかというと共益分布と呼ぶのですが、ベイズの定理を使って事後分布を計算するとまたベータ分布になるからです。本の例だと$$Beta(2, 20)$$を使っています。このパラメータの設定は最頻値を他の町での有病率である0.05に近くしたい、という理由で決めています。

証明は本の中でも紹介されていますが、ベイズの定理を使って事後確率を計算すると、かなり簡単に証明できます。事前分布がBeta(a, b)で尤度関数を$$Binomial(n, p)$$と、観測したデータがyの場合、事後分布は$$Beta(a+y, b+n-y)$$になります。20人の検査して、0人が感染していた、というときはy=0、n=20です。20人の検査で0人が感染していた、ということなので、事後分布は$$Beta(2, 40)$$となります。そうすると、20人を検査して感染した人が誰もいなかった、という状況で、有病率は$$Beta(2, 40)$$の分布に従う、という解釈をします。

これが便利なのは、確率分布を想定しているので、有病率についての解釈がやりやすくなる、という点です。

頻度主義に基づく伝統的な統計学で求められる信頼区間というのは、非常に理解が難しいややこしいもので、統計を学んだという人でも勘違いが多いです。それについてはまた別の機会に書くとして、ベイズ統計では信用区間 (Credible Interval)と呼び、有病率が10%以下の確率は何%、有病率が0% - 3%の確率は何%、という言い方ができます。例えば有病率が10%以下となる確率は、Beta(2, 40)の確率分布を使って93%と簡単に求められます。

似たような実例

以前勤めていた会社で似たような相談を受けたことがあります。詳しい内容は忘れてしまいましたが、社員の個人情報が漏れていないかどうかチェックするという調査をしないといけないというような状況でした。その仕事を担当している人から、「全社員400人を調査するのは大変で、なんとか40人の調査をして問題がなかった。これで全社員についても問題がないと確信を持って言えるものなのでしょうか?」という相談を受けました。

大学でベイズ統計を学んだはずだったのですが、その時は全然思い付かず、頻度主義的な方法で解こうとして袋小路に陥りました。結局答えられなかったように思うのですが、今ならわかります。

当時考えたこと

「標準ベイズ統計学」にも紹介されているのですが、非ベイズ的なやり方だと有病率などの率を推定する95%信頼区間は

$$
\bar{y} \pm 1.96 \sqrt{\bar{y} ( 1- \bar{y})}
$$

で求められます。ただ問題なのは、今回のように個人情報が漏れていないとか、稀な感染率の有病率といった調査の場合、サンプルを調べたけど結果何も見つかりませんでした、という状況があることです。上の信頼区間の数式に代入すると、$$\bar{y}$$が0になってしまうので、信頼区間も0になってしまいます。40人の社員を調べて個人情報漏れはなかったから、他の社員の情報が漏れている可能性は0%です、というのはなんか心もとないです。

うーん、これだとなんかうまくいかないよね、どうしたらいいんだろうね、というところで終わってしまいました。本書ではワルド調整というのが紹介されています

当時考えるべきだったこと

共益分布の計算、証明というのは学部の試験でよく出ます。問題にするのがちょうど良い難易度なのと、実際によく使われるからです。これはベイズ的に解けて、二項分布とベータ分布を使えばいいよね、と思いつけばよかったです。

まず全社員のうち40人に調査をしたので、この時個人情報が漏れている割合xは$$Binomial(40, x)$$でモデル化できます。

想定する事前分布ですが、パラメータの選択がちょっと難しいです。個人情報はそんなに漏れることはないとは思うのですが、「標準ベイズ統計学」のように他に参考になる事例がありません。そこで完全な勘ですが、例題とお同じように一番多そうなのが5%という想定で、全く同じ$$Beta(2, 20)$$を使います。

40人に対して調査をして、一人も個人情報漏れがなかったので、事後分布は$$Beta(2, 60)$$に従います。すると例えば個人情報が漏れている確率が1%以下である確率は12%などと計算できます。

意外と確率が低いな、と思ったんですがこれは想定した事前分布がかなり甘めだったかもしれません。$$Beta(2,20)$$だと最頻値は0.05、平均は0.09と100人中10人は個人情報が漏れている、ということになってしまいます。いくらなんでもそんなに漏れないだろう、というように思うのであれば、事前分布はもう少し稀になるように調整できます。

例えば1万人に一人ぐらいしか個人情報漏れない(これでも結構大変なことですが)と想定するなら、$$Beta(2, 10000)$$ぐらいとすると、平均は約0.01%です。40人に調査をして一人も個人情報が漏れていなかった、という場合、事後分布は$$Beta(2, 10040)$$です。これだと逆に事前分布の影響が強すぎて40人ぐらいの調査結果ではほぼ事前分布のままなんですけど、個人情報が漏れている可能性が0.05%以下という確率は96%と、まあほぼ漏れてないでしょう、と言えることになります。

まとめ

ベイズ統計の事例を紹介しました。最後の例で見た通り、事前分布の選択次第で結果が大きく変わるというのが、ベイズ統計に対する大きな批判の1つです。標準ベイズ統計学の本では、稀な事象ということで5%ぐらいの事象を紹介していましたが、もっと起きづらい、0.01%ぐらいしか起きない、というような時には少しばかりのサンプルでは足りない、ということがあります。でも信頼区間の式とか覚えてられないので、個人的にはベイズ的なアプローチの方が好きです。

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