もうタイトルを読んで字の如しなんですが、要は「統計モデリングってぶっちゃけ何なのよ?」という問題意識が最近非常に局所的ながら影響力の大きいところ*1から出てきておりまして。
で、僕もその議論にマターリ参加しながら「このもやもやしたものをどうやったらうまく表現できるかなー」と思っていて、何日かして自分なりにちょっと整理がついた気がするので、自分向けの備忘録も兼ねてちょっとブログにまとめてみることにしました。ちなみに@berobero11さんは既にこの議論についてまとめていらっしゃるようで。
そうそう、今回もお題はこちらの久保先生の緑本です。というかここから議論が始まったわけで。
データ解析のための統計モデリング入門――一般化線形モデル・階層ベイズモデル・MCMC (確率と情報の科学)
- 作者: 久保拓弥
- 出版社/メーカー: 岩波書店
- 発売日: 2012/05/19
- メディア: 単行本
- 購入: 16人 クリック: 163回
- この商品を含むブログ (21件) を見る
今や参加者100名を超えるという巨大読書会までもが催されるという大人気の一冊になっているようで。。。これからはBUGSとか階層ベイズとか流行しちゃうんですかね?(笑)
統計モデリングとは「枠組み」である、「手法」ではない
端的に言い切ってしまいましたが、多分これに尽きるんだと思います。「統計モデリング」と言った場合に出てくるのは正規線形モデルとか一般化線形モデルとか混合効果モデルとかMCMCとかいう「手法」の名前ではなく、あくまでもデータを説明するモデルを構築しようとするあれやこれやを一連の流れとして実践していく「枠組み」であるべきだ、という。
裏を返すと、統計モデリングとは何ぞやということを学ぶ際にあまり「手法」にフォーカスし過ぎると全体像を見失うかもしれない?ということでもあるのでしょう。例えばシンプルな正規線形モデルを当てはめる際にMCMCを使うのはいくら何でもやり過ぎ(非効率)なわけで。
そういう意味で言うと、具体的には後述しますが要は
- 抱いた疑問に即した目的変数を選び
- 目的変数が従う分布を推定し
- 説明変数を持ってきたら当てはめたいモデルの複雑さを勘案し
- 様々な当てはめの原理&計算方法の中から目の前の変数たちに対してベスト(orよりマシ)のものを選び出し
- 実際に当てはめてみて
- 当てはめた結果をもとに最初の疑問に答えられたかどうかを議論する
という一連の流れを自分のものとして体得することが大事なのではないかなぁ、と。その中において、4番目のステップなんかはおそらく人によって得手不得手もしくは好みがあったりして、必ずしも完全に理想的なものが選ばれないケースもありそうなわけですが、そこでそういう細かいところは一旦置いといて全体の流れをきちんと作る。。。というのが重要なんじゃないかと思うわけです。
「モデル」には色々な解釈があるが、あえて言えば「物事を説明する」ためのもの
統計モデリングとは「枠組み」であるとは言っても、その次にじゃあ「モデル」って何だよ?という疑問が出てくるのが普通でしょう。この辺も@berobero11さんの記事で議論になっていましたが、僕はシンプルにこう表現したいと思います。
「モデル」とは、「物事を説明する」ためのもの
特にここで意図されているのは「回帰」と「予測」だと思うので尚更だと思うんですが、要はデータによって表される何かしらの物事を、どういう粒度のどういう方向性にせよ、とにかく「説明」するために「モデル」を当てはめるということだと個人的には考えています。その「説明」の向こう側に、例えばパラメータ推定とか予測とかがあるのだと思います。もっともこの辺についても@ibaibabaibai先生から以下のような指摘がありまして、
「モデル=ある現象のしくみを近似したもの」 http://t.co/NQIsHyQXwL …
というのは、物理のセンスに近い考え方。「モデル=似顔絵」説かな。赤池ふうのモデル観はむしろ「モデル=メガネ」説。統計モデルというのはこの両極端の間のどこかに位置づけられるのだろう。
— baibai (@ibaibabaibai) June 5, 2014
この辺は踏み込むと果てしない議論になるので、僕はあまり深入りしないようにしておきます(笑)。ただ、仰るように物理学者の考える「説明」と統計学者の考える「説明」はレイヤーが違うのかなという気はしますね。
大事なことは目的変数が従う確率分布への(ある程度)深い洞察
で、ここで話題になってる「統計モデリング」というのは今のところ大半が回帰モデルなので、畢竟どうしても目的変数が従う分布をきちんと踏まえてモデルを当てはめていかないとどうにもならないわけです。その辺を僕なりにまとめてみたのが以下の図です。ちなみにここでは例として正規分布・ポアソン分布・二項分布の3つが挙がっていますが、もちろん他の分布にも言えることなので念のため*2。
この図の横方向は「目的変数の分布のバリエーション」、縦方向は「モデルの複雑さ」です。前者はズバリ分布形状、後者は例えば固定効果・変量効果・空間相関といったところを思い出してもらえればよろしいかと。
はっきり言って、最初に目的変数がどんな分布に従うかさえ分かってしまえばその先はある程度自動的にやってしまえる部分が大きいです。一方で、例えば加法モデルみたいに当てはめが可能かどうかを度外視してどんどん別々の要因を足していくようなモデルを選んだ場合は、何もかも自分で手取り足取り決めていかなければならない*3という側面もあったりします。
先日の記事で挙げた例なんかはまさにそうでしょう。あの例だと線形モデル+トレンド過程、即ち
みたいなモデルになるわけですが、いかな基本となるモデルがただの正規線形モデルであったとしても、最小二乗法で当てはめられるはずもなく*4。。。結局MCMCなりの出番になるということなのかなと。左端の正規分布に従うケースであっても、一番下のMCMCのところまで伸びているのはそういう含みを持たせてますよ、ということで。
実は既に久保先生による分かりやすい見取り図があるんですが、どうやらそれでも何かが語り尽くされていないという指摘が局所的ながらあるようで*5。とは言え、基本的にはこういう感じに俯瞰すれば良いのではないかなぁと思います。
だが実務上は例えばRで言えばlm, glm, glmm, BUGS / Stanの使い分けの問題になる
というわけで四の五の言ってきたわけですが、ビジネスの現場で実務をこなす側としては「で、結局R / Pythonではどーやってそれをやればいいんだよ」という身も蓋もない疑問に帰着してしまうんですよね。
ということで先ほどの図にRで対応する関数&パッケージを書き足したのが下の図です。色々抜けてますけど、その辺は皆さん脳内補完して下さいねということで(笑)。
結局こういうtipsというかノウハウが欲しい!という人が多いんだと思いますが、ノウハウだけあっても正しく理解していなければ困ったことになるというのは昔書いた記事で指摘した通りです。大事なことは冒頭でも書いたように、きちんと一連の流れを体得し、チェックすべきポイントでしっかりチェックすることだと思ってます。
最後に、このエントリを書くことになったきっかけ
それは割と単純で、何気なく昼時にTLを眺めていたら@ibaibabaibai先生がこんなことを呟いていらっしゃるのを見かけたのでした。
久保本に言ってることは、端的にいえば、初心者に最小二乗法とかランダム効果モデルとか教える必要なし、最初から最尤法、階層ベイズモデルでいいじゃない、ということだと思うよ。概念がウリというのはそういうこと。ただ計算法は別で、なんでもMCMCでやる人がいたらそれはアホ。
— baibai (@ibaibabaibai) May 30, 2014
これは久保本も大い問題ありだけど、「モデル」「あてはめの原理」「あてはめを実装する計算法」を混同するのはいい加減にやめたほうが。GLMはモデル、ベイズや最尤法はあてはめの原理、MCMCは計算法。
— baibai (@ibaibabaibai) May 30, 2014
あてはめの原理の中でもベイズと最尤法ではレベルが違うけど、その辺はおくとして、せめていまの3つは区別しよう。そうでないと「計算が正確になったらモデルの欠点が出てきて予測力が落ちた」なんていうのは理解不能になってしまう。
— baibai (@ibaibabaibai) May 30, 2014
そこで僕は何となくこんなことを呟いてみたわけですが、
Rだと結局lm, glm, glmm, stan {rstan}の使い分けという話になるわけでして。モデルは1番目が普通の線形モデルで残りが一般化線形モデル、当てはめの原理はOLS, MLEx2, Bayes、計算方法はOLS, ニュートン法x2, MCMC。。。
— TJO (@TJO_datasci) May 30, 2014
その後も久保先生(@KuboBook)と@berobero11さんとでこんなやり取りが続きまして。
@TJO_datasci @berobero11 あ,そうか,お二人が言ってるのは,たとえば……ゑくせるで直線回帰のやる方法は知っているから,GLM とかのほうが良いと言われても「もう勉強したくない,直線ひけばこたえは得られるから」と応答するようなヒトたちですかね……
— 久保拓弥 (@KuboBook) June 2, 2014
@KuboBook 両方いますね。特に前者が多そうです。個人的には「データをどんなふうに図示したらよいか」と「モデリングをどうしたらよいか」はかなり密接につながっていて、少しデータがややこしいとどちらもできなくなるという状況に思います。
— ホクソエム (@berobero11) June 2, 2014
@KuboBook @berobero11 あと、もう一段上がったところにいる「Rでglmって関数使えばとにかく正しい結果得られるんだよね?え?ダメなの?面倒だなぁ」という人たちにどう受け入れてもらうか、ですかね。
— TJO (@TJO_datasci) June 2, 2014
呟きっぱなしだといい加減になるかなぁと思ったので、ブログでまとめてみることにしたのでした。ちなみにこの辺は基本的にはみどりぼん読書会が流行っていることを受けての流れだったりするという。。。