MCMC
統計学
ベイズ推定
16
どのような問題がありますか?

この記事は最終更新日から1年以上が経過しています。

投稿日

更新日

Organization

【ベイズ統計学】ロジットモデルに対するギブスサンプリングを簡単に行う!(理論編)

こんにちは,株式会社Nospareリサーチャー・千葉大学の小林です.2項ロジットモデルは,ある試験に合格・不合格になる,消費者がある製品カテゴリから購入する・しない,ある疾患にかかる・かからない,といった結果に対してそれらが起こる確率が説明変数の値によってどのように変化するかを調べることができます.また2項ロジットモデルの一般化である多項ロジットモデルはある製品カテゴリ内にある複数ブランドからあるブランドをひとつ選択するといったような行動が観測されたデータを分析するのに用いられます.さらにロジットの構造は被説明変数が単純に何らかの選択行動の結果である場合に対する回帰モデルだけでなく,mixture of experts model(混合エキスパートモデル)やzero inflation(カウントデータにおけるゼロ過剰)などといったようなデータに内在するカテゴリーの分類確率を記述するのにも用いられ,とても幅広い応用の場面があります.本記事は前半部分にあたり,ロジットモデルをベイズ推定するための便利なモデル定式化とその応用例を紹介します.

2項ロジットモデル

まず2項ロジットモデルを紹介します.被説明変数をyi, i=1,,Nとします.yi01の値を取り,例えば来店時にある製品カテゴリからの購入があった場合にyi=1,なかった場合にyi=0が観測されます.ロジットモデルではyi=1が起こる確率(ここでは選択確率と呼ぶことにします)を説明変数のベクトルxiを用いて次のようにモデル化します.

Pr(yi=1)=exp(xiβ)1+exp(xiβ),i=1,,N.

ここでβxiに対する係数パラメータです.簡単に言えばyi成功確率が上のようなベルヌーイ分布に従います.この確率をもとに,尤度関数に対するi番目のデータについての部分は

p(yi|β)=[exp(xiβ)1+exp(xiβ)]yi[11+exp(xiβ)]1yi,i=1,,N,

と書けます.尤度関数はp(y|β)=i=1Np(yi|β)で,最尤法の場合にはこのまま尤度関数をβに関して最大化しますが,解析的に最大化は行えないので数値的な手法を利用します.ベイズではβの事前分布p(β)を特定し,事後分布p(β|y)p(y|β)p(β)に対する推測を行います.尤度関数がβについてきれいな形ではないので,きれいなギブスサンプラーは構築できず,メトロポリス・ヘイスティングス(MH)アルゴリズムなどによって事後分布からのサンプリングを行うのが普通でした.

ベイズではプロビットのほうが人気だった(読み飛ばしても大丈夫)

二項選択問題に対して最尤法による分析をする場合には二項ロジットモデルはよく用いられてきました.一方でベイズ推定においては二項選択問題においてもうひとつの定番的な手法であるプロビットモデルが定番で1990年代以降用いられてきました.これにはプロビットモデルに対するMCMCはデータ拡大法を使うことでギブスサンプリングだけで済ますことができるということが大きな理由だと考えられます.プロビットモデルは選択確率をPr(yi=1)=Φ(xiβ)Φは標準正規分布の分布関数)と書けます.ここで潜在変数yiを導入し,yi=xiβ+eiという回帰モデルを考えます(eiN(0,1)).この潜在変数yiと実際のデータyiを,yi0のときにyi=1が観測される,yi<0のときにyi=0が観測される,というように結びつけます(yiを積分消去するともとのプロビットの選択確率が得られます).プロビットモデルに対するギブスランプラーはyiを完全条件付分布(切断正規分布)からサンプリングすることで,あたかも普通の回帰モデルで被説明変数が観測されているかのようにβの完全条件付分布からサンプリングを行うことができます.

二項ロジットモデルに対しても同じようなデータ拡大法がHeld and Holmes (2006) によって提案されました.再びyi=xiβ+eiという潜在変数に対する回帰モデルを考えます.プロビットモデルと異なり,ロジットモデルではeiはロジスティック分布に従います.この論文はロジスティック分布に対して次のような表現のもとにギブスサンプラーを構築しました:eiN(0,λi), λ=(2ψi)2, そしてψiはKolmogorov-Smirnov(KS)分布という分布に従います.このアプローチでのギブスサンプリングは,yiλiβのサンプリングステップからなりますが,λiの完全条件付分布が標準的なものでなく,サンプリングがやや面倒というのもあって今まであまり使われてこなかったのかと思います.また予めパラメータとウェイトの値を定めておいた正規分布の有限混合モデルによってロジスティック分布を近似するという方法も提案されましたが,あくまでも近似モデルからのサンプルになってしまうということで定番的な方法として定着することはなかったと思います.

これは便利かも!Polya-Gamma mixtureによる定式化

さて遠回りになりましたが,本題のロジットモデルに対する画期的な定式化がPolson etal.(2013)によって提案されました.この論文の結果(Theorem 1)はロジスティック型の関数を次の積分で表現できるというものです.

(eψ)a(1+eψ)b=2beκψ0ewψ22p(w|b,0)dw,κ=ab/2,(1)

ここでwはPolya-Gamma分布PG(b,0)という分布に従う変数でp(w|b,0)という密度関数をもつとします(これについては後で書きます).

(1)でまず重要なのはwを所与にしてみると,積分の中にψについて正規分布の密度関数の核が現れるということです.ψxβのように回帰式で表される部分なので,この表現を利用するとデータとwが与えられたもとでβの完全条件付分布が正規分布になりそうな予感がします.実際に二項ロジットモデルの場合には,

p(yi|β)=exp(xiβ)yi1+exp(xiβ)

と書けるので,上の結果(1)を使って

p(yi|β)exp(κixiβ)0exp{wi2(xiβ)2}p(wi|b,0)dwi

となります(a=yi, b=1, κi=yi1/2).
βの事前分布をp(β)とすると,データとw=(w1,,wN)を所与としたときのβの完全条件付分布は

p(β|w,y)p(β)i=1Np(yi|β)=p(β)i=1Nexp{wi2((xiβ)22κixiβ/wi)}p(β)i=1Nexp{wi2(κi/wixiβ)2}p(β)exp{12(zXβ)W(zXβ)}

という形になります(z=(zi,,zN), zi=κi/wi, X=(x1,,xN), W=diag(w1,,wN)).このことから例えばβに対して正規事前分布を仮定すると完全条件付分布も正規分布になることがわかります.

さて(1)においてwが従うPolya-Gamma分布ですが,一般的にXPG(b,c)の場合には

X=12πk=1gk(k1/2)2+c2/(4π2),gkGa(b,1),

という独立なガンマ変数の無限和で表現されます.PG(b,c)の密度関数はPG(b,0)の密度関数のexponential tilting(指数傾斜)で表されます:

p(x|b,c)=exp{c2x2}E[exp(c22w)]p(x|b,0)

ここでp(x|b,0)PG(b,0)の密度関数で,分母の期待値はwPG(b,0)についてとったものです.では,(1)においてw|ψの条件付分布を考えてみると,

p(w|ψ)=exp{wψ22}p(w|b,0)exp{wψ22}p(w|b,0)dw

となることから,w|ψPG(b,ψ)となることがわかります.

二項ロジットモデルの場合には,wiの完全条件付分布は単純にPG(1,xiβ)となります.よってβN(b0,B0)の場合,次のふたつのステップから成るギブスサンプラーを回すことになります.

  1. i=1,,Nまで,wiPG(1,xiβ)からサンプリングする
  2. βN(b1,B1)からサンプリングする,ただしB1=[XWX+B01]1, b1=B1[XWz+B01b0]

この論文ではPG(1,c)からの効率的なサンプリング方法を提案しています.指数分布と逆ガウシアン分布に基づく棄却サンプリングによるものですが採択確率が99.9%以上という極めて効率的なものとなっています.nが自然数のときにはn個の独立なPG(1,c)変数を足し合わせるだけでPG(n,c)からのサンプリングができます.一般的なPG(r,c)の場合にはWindle et al.(2014)で提案されています.Rでの実装においてはBayesLogitパッケージ 内のrpg()関数が利用できます.このパッケージを利用した実装は後編で紹介したいと思います.

Polya-Gammaはいろいろなモデルで使える!

多項ロジットモデル

この定式化を利用することで,二項ロジットモデルの一般化である多項ロジットモデルに対するギブスサンプラーも構築することができます.多項ロジットモデルではJ個のカテゴリ(ブランドなど)からひとつのカテゴリが選択・実現されるという状態を考えます.被説明変数をyijとし,j番目のカテゴリが選択された場合にyij=1yih=0, hjが観測されます.多項ロジットモデルの選択確率pij=Pr(yij=1)

pij=exp(ψij)h=1Jexp(ψih)

で与えられ,ψij=xiβjとモデル化します.尤度関数は

f(y|β)=i=1Nj=1J(exp(ψij)h=1Jexp(ψih))yij

となります.一見Polya-Gammaが使えそうにないですが,βj以外のパラメータβjを条件付けると

f(y|βj,βj)=i=1N(eηij1+eηij)yij(11+eηij)1yij

と書けます(ηij=xiβjCij, Cij=loghjexiβh).こうすると冒頭の二項ロジットモデルの尤度のような形になっていて,κij=yij1/2, b=1でPolya-Gammaが使えることがわかります:

i=1Nexp{κijηijwij2ηij2}p(wij|b,0).

βjの事前分布をN(bj0,Bj0)とすると次のギブスサンプラーを構築できます.

  1. i=1,,N, j=1,,JについてwijPG(1,ηij)からサンプリングする.
  2. j=1,,JについてβjN(b1j,B1j)からサンプリングする,ただしB1j=[XWjX+Bj01]1, b1j=B1j[XWj(Cj+zj)+B01b0], Cj=(C1j,,CNj), zj=(z1j,,zNj), zij=κij/wij.

負の二項分布(Negative binomial)

負の二項分布はポアソン分布に代わるカウントデータに対する確率分布として広く使われてきました.確率関数は

p(yi)=Γ(ξ+yi)Γ(ξ)yi!(1ψi)ξψiyi,yi=0,1,2,

と書け(ξ>0はoverdispersionのパラメータ),負の二項分布における回帰モデルはψi=exiβ/(1+exiβ)と与えられます.ここでまたPolya-Gammaが使える形になっていることに気づきます.実際,

(1ψi)ξψiyi=exp(xiβ)yi[1+exp(xiβ)]ξ+yi

なので, ai=yi, bi=ξ+yiとすればあとは二項ロジットの場合と同じようなギブスサンプラーが構築できます.事前分布βN(b0,B0)の場合,
 
1. i=1,,Nまで,wiPG(yi+ξ,xiβ)からサンプリングする.
2. βN(b1,B1)からサンプリングする,ただしB1=[XWX+B01]1, b1=B1[XWz+B01b0], z=(z1,,zN), zi=yiξ2wi.

3. ξをMHアルゴリズムなどでサンプリングする.
となります.

おわりに

前篇となる本記事ではPolya-Gammaを使った2項ロジットモデルの再定式化から始まり,Polya-Gammaを使うと幅広いクラスのモデルに対してギブスサンプラーを構築できるようになることを紹介しました.ここではψβについて単純な回帰モデルや事前分布を考えていましたが,時間相関や空間相関が含まれるより複雑な階層モデルや,説明変数の選択のための馬蹄事前分布(horseshoe prior)などといったより高度なβの階層事前分布のもとでの推定も簡単な拡張で実行できます.後編ではRによる実装を紹介したいと思います.

一緒にお仕事しませんか!
株式会社Nospareではベイズ統計学に限らず統計学の様々な分野を専門とする研究者が所属しており,新たな知見を日々追求しています.統計アドバイザリーやビジネスデータの分析につきましては弊社までお問い合わせください.


株式会社Nospare

新規登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
新規登録ログイン
gen_nospare
ベイズ統計学に関する研究を行っています.
nospare
統計・データ分析に関するアドバイザリー、ビジネスデータの分析や企業におけるDX支援等、データに関して幅広い価値提供を行っております。 統計学において国際的に活躍する研究者陣を中心に、統計学における知見を発信していきます。

コメント

この記事にコメントはありません。
あなたもコメントしてみませんか :)
新規登録
すでにアカウントを持っている方はログイン
記事投稿イベント開催中
Go強化月間~開発する上で知っておくべき知見を共有しよう~
~
エンジニア夏休み企画!~自由研究や読書感想文を発表しよう~
~
16
どのような問題がありますか?
新規登録して、Qiitaをもっと便利に使ってみませんか

この機能を利用するにはログインする必要があります。ログインするとさらに下記の機能が使えます。

  1. ユーザーやタグのフォロー機能であなたにマッチした記事をお届け
  2. ストック機能で便利な情報を後から効率的に読み返せる
新規登録ログイン
ストックするカテゴリー