【ベイズデータ分析】#1 概要
こんにちは、ぽむぽむです。計量テキスト分析シリーズと並行して、ベイズデータ分析の授業で学習したことについても記録していきたいと思います。この授業では、一般的なベイズ統計をベースとした上で、空間モデルや時空間モデルを用いたデータ分析がメインとなっていて非常に面白かったです。
空間モデルや時空間モデルは主に健康・医療データの分析に用いられます。例えばアメリカでのある時点における、州・群ごとのコロナ死亡者数データが揃っていれば空間モデルを適用できますし、ある一定期間における、州・群ごとのコロナ死亡者数の推移データが揃っていれば時空間モデルを用いることができます。
このようなモデルは、単なる回帰モデルでは取りこぼしてしまう空間的な要素や時間的な要素を可視化することができるので疫学や公衆衛生の分野で活用されているそうです。私は金融に関係する統計学ばかりをフォローしていてこの分野に足を踏み入れたことがなかったので、非常に新鮮に感じました。
こちらのシリーズでは、ベイズ統計学の基本的な内容についてはほとんど扱わないので、最初に超基本的事項のみまとめておきます。
ベイズ統計の基本
ベイズ統計学はベイズの定理
$$
P(\theta | X) = \cfrac{P(\theta) P(X | \theta)}{P(X)}
$$
をベースとした統計学のことです。
この定理の意味することは
$${ \theta }$$に関する当初の情報は$${P(\theta)}$$
新しいデータを得ることで$${P(X|\theta)}$$が分かる
これを用いて$${\theta}$$ に関する情報を更新 → $${P(\theta|X)}$$
の三つです。最初にパラメータに対する主観確率$${P(\theta)}$$が出てくるところや、データを得るたびにパラメータに関する情報を更新するといった点が特徴的です。頻度主義ではパラメータを定数とした上でデータを確率変数と見るのに対し、ベイズ統計ではデータを定数とした上でパラメータを確率変数と見る、と捉えることもできるでしょう。
頻度論者とベイズ論者の間では長い対立の歴史があり、今でもベイズを批判する教授も多いですが、私の考えでは、都合の良いように状況に合わせて頻度統計とベイズ統計を使い分ければ良いのでは、と思っています。データが十分にある時は頻度統計、データが少ない時はベイズ統計…という具合に。
授業で扱ったモデル
このシリーズでは、授業で扱った以下のモデルについて記録していきたいと思います。
ベイズ線形回帰
階層モデル
空間モデル
時空間モデル
ベイズ回帰は普通の線形回帰のベイズバージョンで、これを徐々に発展させていきます。まず階層モデルは、地区ごとにラベルをつけて、パラメータがラベルごとに異なる分布に従っているのではないかと仮定するモデルです。しかし、このモデルでは地区のラベルを入れ替えても同じ結果になるので地理的な位置関係を反映することはできません。これに対し、地理的な関係を反映するのが空間モデルです。そして最後に、この空間モデルに時間的な要素も掛け合わせたものが時空間モデルとなります。
ツール
この授業で用いた言語はRです。パッケージは Nimble, Stan, INLA を用いたのですが、あまり馴染みのない方も多いと思いますので、少し説明しておきます。(私もあまり詳しくないので、あくまでも浅い内容です。詳しい仕組みはよく分かりません。)
Nimble
階層的な統計モデルをコーディングするためのパッケージです。普通のRの関数との違いは、特定の分布やモデルのみならず、すべての分布やパラメータ等を指定する必要があるところです。使い方の流れとしては、①Nimble コードでモデルを記述、②C++ でコンパイル、③MCMC でサンプリング、といった感じです。JAGS や BUGS に似ていますが、新しい関数などを自分で追加することができ、より柔軟なものとなっています。
Stan
Nimble や JAGS と似たものですが、計算速度が速く、非常に複雑なモデルにも対応できると言われています。Gibbs Sampling を用いるJAGS などとは異なり、Hamilton Monte Carlo を用います。
INLA
時空間モデルのような複雑なモデルを扱う場合、モンテカルロによるサンプリングをベースとするソフトウェアではかなり計算が遅くなってしまうので、INLA を用います。INLA はパラメータの事後分布をサンプリングによってではなく、直接近似によって求めるので計算コストが非常に低いです。
この記事が気に入ったらサポートをしてみませんか?