「統計学とは何か、そしてベイズ統計学の話」に反論があまり寄せられなかったので調子に乗って、今度は(古典的な)統計モデルの話(ただ、だいぶ理解の怪しい話なので間違いがあれば教えてほしい)。
現実の世界では単なる加減算だけでなく2乗や 3 乗あるいはべき乗、反比例といったいろいろな関係があるはずなのに統計モデルではめったに出てこない。あったとしても対数変換や一般化線形モデルのリンク関数のように、それぞれの方法で1次関数の線形モデルに落とし込んで扱うものばかりで任意のモデルを自由に扱えるようなものではない。
では、n次関数はどう扱うんだろうと思って、調べた結果「Wikipedia: 多項式回帰」にたどり着いてはたと気付いた。これも結局、基底関数を使って1次関数の形に。そして、この先にはカーネル法を使うSVMがある。これもカーネル関数を使って1次関数に変換して解いている。
そういえば昔、人類は結局、線形しか理解できないんだよ、というツィートを読んだことを思い出した。なるほど統計モデルというのは結局、どんなモデルであれ最終的に勝手知ったる一次関数になんとか落とし込んでしまえ、という話だったのか。
逆にそこから出発すると、階層モデルというのは単に一次関数で表現できるようにデータを分割せよという話だし、カテゴリデータを0/1のバイナリで表現するのも同様だ。その一方で順序カテゴリデータは一次関数で扱いにくいので、ウィルコクソンの順位和検定のようにノンパラメトリック手法に頼らざるを得なくなる。こう考えると、いろいろと腑に落ちる。
もしかすると正規分布が良く使われるのも同じなのかもしれない。大数の法則と中心極限定理からサンプル数が多くなれば多くの場合、正規分布になる。正規分布の和も積も正規分布になる。実際の分布がどうあれ、だいたい正規分布になるなら正規分布になる前提で扱い、そうでない場合にはじめて困りましょう(例えば、サンプルサイズが小さい場合は t 分布を使うなど)、と。
ベイズ統計学の場合はどうなんだろうか。pymc を使う限り普通に式と確率分布を指定すればよく、前述のような制限は特にない。ベイズ更新しているだけで最小二乗法を使っているわけでもないので、扱える統計モデルの自由度は古典統計学よりも大きいように思える。*1
*1:順序カテゴリデータのあつかいについては似たようなもんだと思うけれども。