読了: Helveston (2023) 選択課題の個人レベル多項ロジットモデルをふつうのパラメータ化と「WTP空間」パラメータ化の両方で高速に最尤推定するRパッケージlogitr

 先月、コンジョイント分析の実験計画をRで作る方法についてのメモを作ってたんだけど(我ながらマニアックな話だ…)、そのきっかけになったのはRの cbcTools というパッケージをみつけたからであった。メモを公開したら、このパッケージの作者の方にコメント頂いたりして(機械翻訳で読んで下さったのだそうだ)、誠に恐縮でございました。一円の儲けにもならないけど、なんだかちょっと嬉しいですね。
 で、この方が作っている別のパッケージについて解説を眺めていたら、冒頭でいきなり「そうそう!そうなのよ!」と膝を叩くような話が出てきて…

Helveston, J.P. (2023) logitr: Fast Estimation of Multinomial and Mixed Logit Models with Preference Space and Willingness-to-Pay Space Utility Parameterizations. Journal of Statistical Sofware, 105(10).

1. イントロダクション
 選択モデルでは多項ロジットモデルをよく使う。その背後には、個々の消費者はランダム効用を最大化する、そしてランダム効用は製品の観察可能な属性とランダム変数の関数だ、という仮定がある。

 多くの応用場面では、モデラーは製品属性の変化に対するmarginalな支払意思額(WTP)の推定に関心がある。これらの推定を得るための典型的な手続きは、「選好空間」効用モデルのパラメータ推定値を、価格パラメータかける-1で割るというやり方である。
 しかしこのやり方では、異質性のあるランダム・パラメータのモデル(混合ロジットモデル)において、母集団を通じたWTPの分布がおかしな分布になりうる。たとえば、価格属性のパラメータとそれ以外のなにかの属性のパラメータの分布がそれぞれ正規分布だとすると、WTPはコーシー分布に従うということになる。つまりWTPの分布は無限大だということになる。

 [そうそう!そうなのよ! この先生なにをゆうとるのかというと、こういう話です。コンジョイント分析やるじゃないですか。で、たとえばブランドAの部分効用が2で、Bの部分効用が0.5だとするじゃないですか。ブランド間の部分効用の差は1.5ですね、って報告書に書くじゃん。でもそれだとわかりにくい、価格に換算してくれ、って云われるじゃん。価格を連続量として部分効用が100円あたり-0.5だったから、えーと、ブランドAはBより300円分の価値がありますね、って書くじゃん。ここまではコンジョイント分析の教科書に出てくる話だけど、いまどきは個人レベルで効用を推定してんじゃん。そこでブランドの部分効用を個人レベルで価格換算すると、それってなんかとんでもない分布になっててビビりません?]

 そこで出てくる代替案として、効用モデルを再パラメータ化して「WTP空間」上で事前分布を設定するというやり方がある。Train & Weeks (2005 Chap.); Sonnier et al.(2007 Quant.Mktg.Econ.); Daly, Hess, & Train (2012 Trasportation)をみよ。

 多項混合ロジットモデルの最尤推定ならRではmlogitパッケージがおなじみだが、WTP空間で効用をパラメータ化した多項混合ロジットモデルを推定する方法もいくつかある。もっとも一般的なのは一般化多項ロジットモデル(GMNL)で、Rにはgmlnパッケージがある。またapolloパッケージ、mixlパッケージもある。[意外にいっぱいある…]
 logitrパッケージは、推定できるモデルの範囲は狭いけど、選好空間とWTP空間の両方に対応している。マルチコア対応で速い。

2. モデル
2つの空間におけるランダム効用モデル
 ランダム効用モデルでは、選択肢\(j\)の効用を\( u_j = v_j + \epsilon_j \)とする。観察された属性を\(\mathbf{x}_j\)として\(v_j = f(\mathbf{x}_j)\)とする。\(\epsilon_j\)は確率変数。
 以下のランダム効用モデルを考える。$$ u^*_j = \beta^{*\top} \mathbf{x}_j + \alpha^* p_j + \epsilon^*_j$$ $$ \epsilon^*_j \sim Gumbel \left(0, \sigma^2 \frac{\pi^2}{6} \right) $$ \(\mathbf{x}_j\)は価格以外の属性、\(p_j\)は価格。\(\epsilon^*_j\)はiidとする。

 識別のため、すべての項を\(\sigma\)で割って $$ u_j = \beta^\top \mathbf{x}_j + \alpha p_j + \epsilon_j$$ $$ \epsilon_j \sim Gumbel \left(0, \frac{\pi^2}{6} \right) $$ これが選好空間でのパラメータ化。限界WTPは \(\frac{\hat{\beta}}{-\hat{\alpha}}\) となる。

 そうじゃなくて、\(\lambda = \frac{-\alpha^*}{\sigma}, u_j = \frac{\lambda}{-\alpha^*} u^*_j, \omega = \frac{1}{-\alpha^*} \beta^*, \epsilon_j = \frac{\lambda}{-\alpha^*} \epsilon^*_j\)とスケーリングして$$ u_j = \lambda(\omega^\top \mathbf{x}_j + p_j) + \epsilon_j$$ $$ \epsilon_j \sim Gumbel \left(0, \frac{\pi^2}{6} \right) $$ これがWTP空間でのパラメータ化。限界WTPは\(\hat{\omega}\)となる。[話の流れから、てっきり\(p_j\)の係数が1になるようにスケーリングするのかと思ったけど、そうじゃないのね。そうか、あとで価格弾力性の異質性を表現するためにはこっちのほうがいいか]

多項混合ロジット確率
 ガンベル分布にしておいたので、選択確率は閉形式でかける。$$ P_{nj} = \frac{\exp(v_{nj})}{\sum_k^J \exp(v_{nk})} $$ 選好の異質性を導入しよう。$$ P_{nj} = \int \left(\frac{\exp(v_{nj})}{\sum_k^J \exp(v_{nk})} \right) f(\theta) d(\theta) $$ \(\theta\)は\(\beta, \alpha\)なり\(\omega, \lambda\)なりのベクトル。モデラーは密度\(f(\theta)\)にいろんな仮定を入れ込める。たとえば\(\alpha\)は負にならないように、対数正規分布ないしゼロ打ち切り正規分布にするとか。

2.3 最尤推定
 どっちの空間でパラメータ化しても最尤推定できる。選択を\(y_{nj}=1\)として対数尤度は$$ L = \sum_n^N \sum_j^J y_{nj} \log P_{nj}$$ だ。混合ロジットなら\(f(\theta)\)からドローしてシミュレーションすればよい(これをsimulated 対数尤度という)。
 選好空間モデルで固定パラメータなら、対数尤度を最大化すればそれが大域解だけど、WTP空間だったり混合ロジットだったりすると大域解であることは保証されない。初期値を変えて繰り返す必要がある。

3. WTP空間効用モデルのインプリケーション
3.1 母集団を通じたWTP推定値の分布
 WTPの分布はモデル・パラメータの分布の仮定に敏感で、仮定はどっちのパラメータ化を採用するかによって変わってくる。研究例をいくつか紹介しよう。

  • Train & Weeks(2005): 選好空間モデルで価格の係数を対数線形分布にしたら、データへのあてはまりはよかったんだけどWTPは異常に大きくなった。WTP空間モデルだとまともになった。
  • Sonnier et al.(2007): 選好空間モデルだとWTPの事後分布がおかしくなった。
  • Daly et al.(2012): 価格の係数について一般的な分布を使うと、WTPの分布のモーメントが無限大になることを示した。

 [推定例。メモは省略するけど、面白い]
 一般に、WTPの分布の推定は、WTP空間モデルのほうがまともになる。

3.2 予測
 いっぽう、予測においてどっちのパラメータ化が有利なのかははっきりしていない。[へー]

3.3 実務的考慮事項
 WTP推定値やモデル適合や予測以外にも、実務的にみて検討が必要なことがある。

  • WTP空間でパラメータ化しておけば再計算がいらなくなるし、WTP係数は誤差のスケーリングから独立なので、他のモデルと比べやすい。
  • 選好空間パラメータ化は限界効用の分布が属性間で独立だと仮定しているので、WTP値の間に強い相関が生じ、属性・水準間でWTPを比べにくいが、WTP空間パラメータ化だと選択肢全体のWTPを単なる足し算で求められる。

 限界効用が標準的な分布に従うと仮定すべきか、限界WTPがそうだと仮定すべきかは、理論的には明白でない。どっちが良いともいえないので、モデラーが自分で試して考えるしかない。

4. ソフトウェア・アーキテクチャとパフォーマンス
[パス]

5. logitrパッケージの使い方
[22pにわたって懇切丁寧に説明している。パス]

6. WTP空間モデルの限界

  • WTP空間モデルではスケールパラメータをひとつしか推定しないので、もし価格感受性が異なる複数の潜在クラスがあったら、真のWTPは過少ないし過大に推定される。いっぽう選好空間モデルでは、交互作用を使って群ごとのWTPを推定できる。WTP空間モデルに潜在クラスを入れるというのはまだ検討されていない。
  • WTP空間モデルでは非線形効用を考えるわけで、発散しやすいし、初期値に敏感である。とくにスケール・パラメータをランダムパラメータとすると発散しやすい[そらそうだろうな]。

しかし、logitrは他のパッケージと比べれば性能がいいし収束しやすい。パッケージのビネットを読んでね。

 最後に、WTP空間モデルは計算的に高くつく。常に複数の初期値での最適化ループを回すこと(時間が掛かるけど)。まず10イテレーションくらいで試し、最後にもっと回すとよい。

7. 結論
[略]
——–
 いやー、面白かった。

 直感として、価格属性以外の部分効用を価格に換算したい場合はWTP空間パラメータ化のほうがよさそうだけど、部分効用推定値にもとづく購買シェア・シミュレーションとかセグメンテーションの際には、効用空間パラメータ化のほうが有利なんじゃないかという気がする。でも、なぜそう思うのかよくわからない(WTP空間パラメータ化は最尤推定が難しそう、というのは別にして)。著者の仰るとおり、両方試してみろ、ってことでしょうね。
 自分の仕事の場合、そもそも価格の部分効用が価格に対して線形だと仮定するのが怖くて、価格を離散属性として推定することのほうが多いし(他の属性の部分効用の価格換算はあきらめる)、ここぞという場面ではブランドx価格の交互作用も考慮する。だから、正直なところ価格空間パラメータ化の出番は少なそうだ。
 でもこの論文を読んでいて、理論的には部分効用パラメータ化やWTP空間パラメータ化のほかにもいろんなパラメータ化があり得るわけだから、個々の場面では、これまでに思いもよらなかったようなより良いパラメータ化がありうるんじゃないか… という気がしてきた。視野が広がりましたです。