調査観察データの統計科学 勉強記1 
西尾泰和
今回の目的 
•2章の「入試選抜による選択バイアス」問題を、 実際に類似の問題に出会った時に解くことが できるレベルまで理解する 
•…ためにまずはこの問題を実際に解く
問題の定義 
•得たいもの:「入試の点数と、入学後の点数 の関係を知りたい!」
入試の点数푦1 
入学後の試験の点数푦2
こうなってほしい 
真のモデルは푁푦1,푦250,50,(100,70,70,100))
データがない 
•入試で落ちた人の「入学後の点数」は不明 
不明
合格者のデータから推定… 
全然ダメだ! 
モデルは二次元ガウス分布と仮定して合格者のデータからパラメータを最尤推定
何ができる? 
•不合格者のデータも使おう!
不合格者のy2の値は実際には存在しないが、 あえて「実際には存在しているけどたまたま欠測しただけ」と考える 反実仮想アプローチ
尤度の定義 
「mが푦표푏푠だけで決まる」条件下での尤度 
この尤度を最大にするθが知りたい! 
→argmax휃 푝(푦표푏푠|휃) を計算すれば良い
Lを最小化する2つのアプローチ 
•Lをパラメータθの各変数について偏微分して 0と起き、連立方程式を解いたら極値を取るθ がわかるよね、という解析的アプローチ (人間が頑張って数式を計算する) 
•LをそのまんまPythonで実装して、 scipy.optimizeで最小値を求めるアプローチ (CPUが頑張って数値計算する)
2次元ガウス分布の負の対数尤度 
毎回データを舐めるなんて遅そう?でもとりあえずやってみる 
式をそのまんまコードにしてる:
1次元ガウス分布の負の対数尤度
観測データに対する負の対数尤度 
足すだけ
Scipyに投げる 
適当な初期値(平均0、分散1)から探索スタート
できた!
before
after
正解とのズレ
所要時間 
•N=300: 0.67sec 
•N=900: 1.68sec 
•N=2700: 4.83sec 
•N=8100: 15.24sec 
意外と速くていろんな応用に使えそう。 
速度が問題になるケースでは両群について十分統 計量Σ푦1,Σ푦2,Σ푦12,Σ푦1푦2,Σ푦22を計算することで尤 度関数からループを追い出せるはず。 
指摘:今回パラメータが5個で、それが変わった時の速度の変化を調べてない 指摘:微分を計算してoptimizeに与えることで高速化って手も
まとめ 
•対数尤度関数を適当に実装してscipyに突っ 込んだけど意外と速かった 
•意外と簡単に応用できることがわかったので 実際に解いてみるアプローチはよさげ 
•次回はp.72「小学校での英語教育の有無で 国語の成績に有意差があるけど実は家庭環 境の差が原因」問題を解く?

調査観察データの統計科学1