#数楽 #統計 以下のようなゲームを2人で行う。

①k=0,1,2,…,10に対応する11個の数p_k達の表を作って互いに交換する。

各p_kは「10回中k回成功」というデータが得られたときの真の成功確率qの推定値とみなされるので、0以上1以下の実数であるとする。

例えば、最尤推定ならp_k=k/10となる。続く
#数楽

②相手の推定法の数表を受け取った2人は、その推定法が失敗しそうな真の成功確率qを選んでコンピュータに入力する。

qの選択では次の③のステップに配慮することが重要である。例えば、受け取った数表が

0.05, 0.1, 0.2, …, 0.9, 0.95

の場合には、q=0.43とするのがほぼベストになる。続く
#数楽

③コンピュータは、成功確率qの10回のベルヌーイ試行での成功回数kに関するKL(q, p_k)を1000回分足し上げ、得られた数値×1万円を推定法p_kに対する罰金の金額とする。ここで

KL(q, p) = q log(q/p) + (1-q)log((1-q)/(1-p))

はKL情報量である。KL(q, p)≥0で等号とp=qは同値。

続く
#数楽 例:1000回を20回にした場合

推定法p_kの表が

0.05, 0.1, 0.2, …, 0.9, 0.95

のとき、q=0.43で10回中の成功回数20回分が

4, 3, 5, 6, 4, 2, 4, 3, 5, 5, 5, 5, 5, 1, 4, 2, 2, 4, 6, 4

のとき、罰金は

1.0374…万円

になる。この数値を再現できればゲームのルールを理解している。続く
#数楽

④互いに相手に知らせた自分の推定法に対する罰金を相手に支払う。実際には差額を支払うことにすればよいだろう。

罰金はKL情報量で測られる予測誤差の1000回分の合計になる。

さて、あなたは、以上のゲームでどのような推定法を採用して勝負したいだろうか?
#数楽 最尤法のp_k=k/10は避けた方が良さそうなことはすぐにわかる。なぜならば罰金を決めるKL情報量の定義が

KL(q, p) = q log(q/p) + (1-q)log((1-q)/(1-p))

なので、10回中0回成功の場合にp_0=0を推定値としたとき、もしも真の成功確率qが0で無ければ、KL(q, p_0)=∞となって破産してしまう。
#数楽 私相手に最尤法を修正した(上の例でも出て来た)

0.05, 0.1, 0.2, …, 0.9, 0.95

という推定法で勝負を挑むと、1000回分のKL情報量の総和の差額であなたが私に支払う金額の期待値は16.6万円程度、標準偏差は3.4万円程度になる。

そういう人は是非とも私と勝負して欲しい😊
#数楽 Jeffreys事前分布のベイズ法

p_k = (k+1/2)/11

は上記の修正最尤法よりずっと強い。しかし、これで私に勝負を挑むと、あなたが私に支払う金額の期待値は4.7万円弱で、標準偏差は3.0万円弱になる。5%強の確率で私に勝てる可能性が出て来る。
#数楽 私のツイッターでの雑談を真剣に読んでいる人なら、既出の論文

scholar.google.co.jp/scholar?cluste…

をダウンロードして解読し、p_kを添付画像のq_kにすることが、n=10をn→∞に変更したときの最良の結果を与えることを知るかもしれない。

これを、漸近的にベストな推定法と呼ぶことにする。続く
#数楽 この漸近的にベストな推定法でn=10のこのゲームで私に勝負を挑んだ人が私に支払う金額の期待値は2万円まで下がる。標準偏差は1.68万円で、私を打ち負かす確率も11%強まで上がる。

これもまた私にとってはおいしいギャンブルになる。

添付画像は10万回のモンテカルロシミュレーションの結果。
#数楽 私が使用する推定法p_kの数表は秘密にままにしておく。

おそらく、同じ数値を得る人が出て来るだろう。

以上のゲームは、KL情報量で定義された予測誤差の期待値の最大値を最小化するミニマックス型のゲームになっている。ある程度以上進んだ統計学では標準的な話題の1つになる。
#数楽 このスレッドを読んで、ゲームをコンピュータ上に実装して、モンテカルロシミュレーションを行うことができれば、沢山のことを勉強できます。

ベルヌーイ試行のデータを使った推定という最もシンプルな場合であっても、基準を設けてベストを目指すと相当に非自明であることが分かる。
#統計 最尤法や共役事前分布を使ったベイズ法(ベイズ統計)がこのスレッドの状況ではベストの推定法では全然なくて、それらの標準的な方法で私に勝負を挑むとお金をぶん取られる可能性が高い。

教科書に書いてある「○○法」が必ずしもベストでないことを知れば、視野を広げ易くなると思います。
#数楽 このスレッドでは罰金をKL情報量で見積もって払う設定だったが、罰金を

(p - q)²/(2q(1-q))

で見積もって支払う設定に変えると、最尤法がミニマックスの意味で最強の戦略になることを教科書に書いてあることを使えば比較的容易に示せます。

上とKL情報量の比較↓

wolframalpha.com/input/?i=plot%…
#数楽 KL(q,p)=q log(q/p)+(1-q)log((1-p)/(1-q))をpの函数とみなしてp=qでTaylor展開すると最初の0にならない項が(p-q)²/(2q(1-q))になります。

q log(q/p)+(1-q)log((1-p)/(1-q)) = (p-q)²/(2q(1-q)) + O((p-q)³)

このTaylor展開による近似は本質的に二項分布の中心極限定理になっています。
#数楽 結局、私は、与えたp_kごとに罰金の期待値が最大になるqが与えられるという設定のもとで、その最悪の罰金の期待値を最小化するp_k達を最適化の数値計算で求めました。

p_5=0.5とp_{10-k}=1-p_kは仮定して数値計算した。

これは、最適化の数値計算の結構良い練習問題だと思いました。
#数楽 このスレッドのゲームはミニマックス型のゲーム(最悪の場合の損失を最小化するゲーム)でしたが、真の事前分布が分かっている場合のそれとは違う型のゲームの例については以下のリンク先を参照。

以下のリンク先のゲームでは理論的に最適戦略を決定できる。
#数楽 推定法の評価基準をゲームによって具体的に決めた場合で少し遊んでみれば、最尤法についての「尤度=もっともらしさを最大にする推定法」というまるで最尤法に必然性があるかのような説明の仕方はひどい誤解を招きかねないことが分かる。

多くのゲームで最尤法は最適戦略にならない。
#数楽 ベイズ統計では戦略に事前分布の自由度が増えているので、より適切な戦略を取れる可能性が、事前分布を使わない最尤法よりも増える。

ところが、ベイズ統計の「主観主義」による解釈の普及のせいで、事前分布は事前の主観的な信念の度合いを表すものとされてしまい、おかしなことになっている。
#数楽 具体的には、特にSavageさんの名前を出して「主観主義ベイジアン」の考え方が特に合理的であることを強調したがる人達は(たとえ社会的地位が専門家であったとしても)トンデモさん扱いで問題ない。

主観主義でベイズ統計を解釈することがあってもよいが、その解釈に特権的なメリットはない。
#数楽 伝統的な主観主義ベイジアン達の問題は、主観確率にこだわることだけではなく、(怪しげな)尤度原理に関する議論に基いて、標本分布を使う統計学を否定しようとすることである。

そういう諸々のトンデモを排除すれば、ベイズ統計も普通にゲームで勝つための合理的な選択肢の1つになりえます。
#数楽 「仮想的な統計的推定ゲームを設定して、その統計的推定ゲームでどのようにすれば勝てるのか?」を考える楽しさの方から、入門すれば「主義に基く統計学」の黒歴史の被害に遭い難くなると思います。至る所に地雷が埋まっている感じ。
#数楽 ミニマックスについては数式を書いた方が分かりやすいかも:

min_{[p_k]} max_q (真の確率qでの推定法[p_k]の期待損失)

を実現する推定法[p_k]を求めたい。ここで

期待損失 = Σ_k n!/(k!(n-k)!) qᵏ(1-q)ⁿ⁻ᵏ KL(q, p_k).

ここまで式を書けば、きっと誰かが遊んでくれると信じたい。
#数楽 コンピュータで

期待損失(q,[p_k]) = Σ_k n!/(k!(n-k)!) qᵏ(1-q)ⁿ⁻ᵏ KL(q, p_k)

について

argmin_{[p_k]} max_q 期待損失(q, [p_k])

を求めるときには、qの函数として 期待損失(q,[p_k]) が極小点を複数持つことへの注意が必要になる。さらに、q=0,1の場合もきちんと扱う必要あり。
#数楽 そして、漸近的に(n→∞で)ベストになる推定法のn=10の場合が

0.044444444
0.170212765
0.239130434
0.326086956
0.413043478
0.5
0.586956521
0.673913043
0.760869565
0.829787234
0.955555555

なので、これに近い値がn=10でのベストの推定法になるはず。

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with 黒木玄 Gen Kuroki

黒木玄 Gen Kuroki Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @genkuroki

19 Feb
#JuliaLang

v1.5.3 vs. v1.6.0-rc1

random counting

11 sec (v1.5.3)

3 sec (v1.6.0-rc1)

😊😊😊😊😊

gist.github.com/genkuroki/33f6… Image
#JuliaLang

3 sec (v1.6.0-rc1, single thread)

0.9 sec (v1.6.0-rc1, ThreadPools.tmap)

ThreadPools.tmap example.ipynb
gist.github.com/genkuroki/2e8f… Image
#Julia言語

forループの函数版:返り値のある函数fをX成分ごとに作用させた結果を得るためにはmap(f,X)を使い、返り値を使わずにXの各成分ごとにfを実行するにはforeach(f,X)を使う。

それぞれのスレッド並列版がThreadPools.{tmap, tforeach}。
github.com/tro3/ThreadPoo…
Read 8 tweets
19 Feb
#超算数

【超算数をインストールされた人、なぜか再生産を行う傾向にある】

そうなる理由↓

日本で算数教育で飯を食って行きたい場合には、ちょー算数マスターになると、就職先が増えたり、出世できる可能性が増えたりする。

ちょー算数には100年以上の伝統に支えられた社会的基盤があります。
かけ算順序問題が新聞で話題にされても、ダメージも受けない理由は、社会的に硬い基盤を持っているから。

子供の保護者側は自分ちの子が被害を受けずに通過すれば発言を続ける意欲は減ります。

ちょー算数マスターになると算数教育界で出世してより良い地位に転職できるかもしれない。

この対比。
例えば、算数の教科書の著作者リストに載っている人達がちょー算数についてどのような考え方を持っているか、どこでその考えを身につけたのか、どのような経歴で算数の教科書の著作者まで出世できたのか、などについては調べる価値があります。

これ面倒な作業で結構大変。
Read 8 tweets
19 Feb
#Julia言語

github.com/johnmyleswhite…

は古過ぎるパッケージであることがProject.tomlがないことからわかります。

そして、add ContinuedFractionsでインストールされるパッケージはさらに古く、ContinuedFraction自体を持っていません。

古めのパッケージが放置されていることがあるので要注意。
#Julia言語 適当なフォルダに

github.com/johnmyleswhite…

をクローンしておいて、そこにaddで追加されたContinuedFractionsのProject.tomlをコピーして、devで使えるようにすれば、ContinuedFractionを最初から含むそのパッケージを使えるようになります。

たまにこういうことがある。
#Julia言語 スクショ

~/.julia/dev/ContinuedFractions にリポジトリのクローンを置いておいて、そこにProject.tomlを追加し、

pkg> dev ContinuedFractions

してある。こうしておけば、ContinuedFractions.jlパッケージを使える↓
Read 4 tweets
17 Feb
尤度函数を最大化することに必然性はないです。実際、比較基準を明確にしたとき、最尤法は最良の方法にならないことが多いです。

モデルを固定して、正則性などの条件を仮定して、サンプルサイズ→∞とすれば(非現実的!)、最尤法によってモデル内で可能な最良の結果が得られることは証明できます。
尤度の定義は「モデル内でデータと同じ数値が生成される確率または確率密度」であり、「モデルのデータへの適合度」の指標にはなりますが、「もっともらしさ」ではないし、「最大化するべき量」でもありません。

最尤法以外にも沢山の方法があり、条件を変えるごとにどれが良い方法であるかは変わる。
ダメな考え方:尤度は英語でlikelihoodであり、もっともらしさを表す。最尤推定はもっともらしさを最大化する推定法である。得られたデータと同じ数値が生成される確率を最大化することは非常にもっともらしい推定法だろう。

↑非論理的な考え方の典型例

最尤法は沢山ある方法の中の1つにすぎない。
Read 4 tweets
17 Feb
#統計 統計学関連の文献で、「不偏」(unbiased)という条件を付けて「〇〇法が最良」というようなことを述べる行為が普通に行われていますが、不偏性は数学的にものすごく強い制限で、その制限の中で「最良」と言われても、「どうせ、井の中の蛙だろ?」という印象がどうしても出て来てしまう。
#統計 不偏性(unbiasedness)の条件は座標依存なので、座標をちょっと変えただけで維持されなくなってしまう。

例えば、統計学入門で習う不偏分散は真の分散の不偏推定量になっているのですが、不偏分散の平方根は真の標準偏差の不偏推定量にはなっていません。
#統計 不偏性はおそろしく強い数学的条件であり、実用的には問題がない小さな不偏性の崩れを許容した方が良い場合の方が多いと思う。

不偏性を仮定すると数学的に強い結果を出し易いのですが、「実用的には不偏性の条件の維持にこだわることは不合理である」と正直に言うべきだと思う。
Read 5 tweets
17 Feb
#Julia言語 私が自分の勉強用に作ったパッケージ

github.com/genkuroki/Meta…
MetaUtils.jl
↓使い方
nbviewer.jupyter.org/github/genkuro…

添付画像1:print_tree(AbstractMatrix)←これの出力結果を見れば、Juliaが多彩な行列の型を持っていることが分かる。他の事柄についても同様。ジャングル的な複雑さ。 ImageImage
#Julia言語

print_tree(Number), print_tree(AbstractVector) の結果

行列だけではなく、数やベクトルの型も沢山ある。

パッケージを読み込むとこれらの内容がさらに増える。

型の継承がツリー型階層構造に限ることが原因で生じる設計上の困難は Holy traits を使えば解消される。 ImageImage
#Julia言語 数の型ぐらいは全部覚えられても、ベクトルや行列の型はとても覚え切れない。そういう複雑な型の世界の構築はベクトルや行列の効率的な計算に必要。

しかし、一般ユーザー側はベクトルや行列の型を無理に覚えることなく、効率的な計算が可能である。そういうユーザーフレンドリーな設計。 ImageImageImage
Read 6 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!