ともにゃん的データ分析ブログ

勉強したことの備忘録とかね

離散選択理論入門(その1)

はじめに

最近、大学院時代に読んでいた

Discrete Choice Methods with Simulation

Discrete Choice Methods with Simulation

を読み直しています。やっぱり面白いです。でも忘れてることも多いです。

ということで簡単にまとめるついでに、離散選択理論入門というシリーズで記事を書いていこうと思います。


離散選択理論とは

人々は日々意思決定をしています。意思決定にも、決定するものの種類によって色々考えられますが、身近な例としては物を買うという行為も意思決定のひとつです。
物を買うという行為は、いくつかの選択肢の中(商品群)の中から買うのもを選びます。このとき、選択肢は離散的な、つまりカテゴリカルなものとなっています。このように、離散的な選択肢の中からあるものを選択するという行為を離散選択と呼びます。そして、なぜそれを選択したのか?それを分析する道具として離散選択理論があります。そこで用いられる代表的なモデルとしては、ロジスティック回帰モデルがよく知られています。


効用と選択の原理

人々は何に基づいて選ぶという行為をしているでしょうか。直感で?好みで?色々と要因が考えられますが、その要因を定量化したものとして、効用関数というものを考えてみます。あることの効用とは、人がそのあることをした結果得られる満足感のことで、特にここではそれを定量的に表したもののことを指します。例えばある人が牛乳をスーパーに行って、明治の牛乳と雪印の牛乳を発見したとします。このとき、もし明治の牛乳を選んだのならば、その人にとっては明治の牛乳を選んだほうが雪印の牛乳を選んだときよりも満足感が高いからそうしたのだと考えます。これを効用を使った表現すると


\begin{eqnarray*}
\mbox{明治の牛乳を選んだときの効用} > \mbox{雪印の牛乳を選んだときの効用}
\end{eqnarray*}

であると言えます。


離散選択理論では、人々の選択の背後にはこのような効用が存在しており、それぞれの選択肢を選んだときの効用を考えながら、その中で最も効用が高い選択肢を選ぶという原理を採用しています。これは、僕たちが実際に脳内で効用を計算して、それによって選択という行為をしていると言っているのではなく、あくまでそういう"モデル"を考えるということです。ただこういったモデル化が、人々の選択という行動の本質をうまく抽出することの助けとなります。


さてこの効用ですが、様々な要素の関数となっていると考えられます。例えば、上記の牛乳の例であれば、"価格"という要因の関数になっていると考えられます。明治の牛乳を選択したとき、それは雪印の牛乳と比べて価格が安かったから選んだのかもしれません。つまり、価格が安いがために、明治の牛乳を選んだときの効用が雪印の牛乳を選んだときの効用を上回ったのかもしれません。他にも上記の例における選択という行為に影響を与える要因としては、牛乳の味や賞味期限の長さといったことも考えられるでしょう。したがって、効用というのはこういった選択肢に関連する様々な要因の関数になっていると考えられます。したがって、今後は効用のことを効用関数と呼んだりします。また効用についての記号を導入し、 n さんの選択肢 i に対する効用を U_{ni} という記号で表したりすることにします。上記の牛乳の例ではそれぞれの選択肢について


\begin{eqnarray*}
i &=& 1:\ \mbox{明治の牛乳を選んだとき}\\
i &=& 2:\ \mbox{雪印の牛乳を選んだとき}
\end{eqnarray*}

とすると


\begin{eqnarray*}
U_{n1} > U_{n2}
\end{eqnarray*}
と表せます。

効用の定式化

効用についての説明しました。しかし、これは選択という意思決定者の脳内のモデル化であって、選択という行為を分析したい人が意思決定者本人でない限り、その人の効用完全に知ることはできません。"外から"人々の選択という行為分析するためにはどうすればいいでしょうか。

上記の牛乳の例に戻りましょう。明治の牛乳を購入したのは、その人にとってその味が好きだから選んだのかもしれません。このとき、分析者はその人の味の好みを知りませんので、明治の牛乳の方が好ましい度、つまり効用がどういったものなのか知ることはできません。

では価格に注目するとどうでしょうか。明治の牛乳を購入したのは単に雪印の牛乳よりも価格が安かったからかもしれません。このとき価格は分析者も分かりますので、外から人の選択行為を分析する要因として使えそうです。

そこで、効用を外から観測できる部分と、観測できない部分に分割することを考えます。 n さんの選択肢 i に対する外から観測できる効用を V_{ni} 、観測できない効用を \epsilon_{ni} とすると、分割された効用は以下のように表せます:


\begin{eqnarray*}
U_{ni} = V_{ni} + \epsilon_{ni}
\end{eqnarray*}

ここで観測できる効用 V_{ni} は、上記の例でいうと、牛乳の価格の関数になっていると考えられます。価格等の要因に関わらない n さんにとっての牛乳 i そのもの好みを \alpha_{ni} 、牛乳 i の価格を p_{i} とすれば、例えば V_{ni} は次のような次のような形を考えることができます:


\begin{eqnarray*}
V_{ni} = \alpha_{ni} + \beta_{n}p_{i}
\end{eqnarray*}

ここで \beta_{n} は、牛乳 i の価格が n さんの牛乳 i への効用にどれだけ影響を与えるかの係数(重み)、言い換えると価格にどれほど反応するかを表していると考えられます。もちろん価格以外にも、もし購入日から賞味期限までの日数などがデータとして手に入っていれば、"賞味期限への係数 x 賞味期限の長さ"といった形を上記の式に組み入れることも可能です。また、上記の V_{ni} はデータと係数の線形和となっていますが、非線形な関係を仮定しても良いでしょう。そして \epsilon_{ni}n さんの味の好みといったような、観測できない要因の効果が全て詰め込まれた、分析者にとっては未知の値です。

このように定式化すると、 n さんの牛乳の購買情報(データ)がいっぱい手に入れば、 n さんの牛乳 i への好み \alpha_{ni} や、 n さんが価格にどれだけ反応するかを表す \beta_{n} といった値が購買情報から推定できそうです。実際に推定できるのですが、その方法は後ほどということで、ひとまずは


\begin{eqnarray*}
U_{ni} = V_{ni} + \epsilon_{ni}
\end{eqnarray*}

という効用の観測できる部分(分析者が得られるデータから推定できそうな部分) V_{ni} と、そもそもデータが手に入らなくて外からだと分からない部分 \epsilon_{ni} に効用を分割する、という一般的な定式化の下で選択確率という概念を導入したいと思います。

選択確率

効用関数を定式化しました。ここで牛乳の例に戻ると、ある人にとって明治の牛乳のほうが雪印の牛乳のほうが、"ある時"は好ましい、つまり U_{n1} > U_{n2} だったのでした。しかし、効用関数を U_{ni} = V_{ni} + \epsilon_{ni} と定式化したため、未観測の値である \epsilon_{ni} の値によっては雪印のほうが好ましい場合もあるでしょう。たとえば、目の前の人が雪印の牛乳を手にとっていたので、なんとなく明治の牛乳よりも雪印の牛乳のほうが"良いように見えて"、そのときは雪印の牛乳のほうが効用が高くなったということもあるでしょう。こういった"目の前の人が雪印の牛乳を手にとっていた"というが与える効用への影響は(ほぼ間違いなく)データとして観測することができないので、効用の未観測の部分である \epsilon_{ni} に押し込まれることになります。つまり、 \epsilon_{ni} はその時々で値を変えるが分析者にとっては不明の確率変数であると考えることができます。

いつも明治の牛乳のほうが雪印の牛乳のほうが好ましいわけではなくて、雪印の牛乳のほうが好ましいときもあるということであれば、確率で議論をするのが良さそうです。つまり、どのくらいの確率で] n] さんは明治の牛乳を好むのか(雪印の牛乳を好まないのか)、という議論をしたほうが良さそうです。そこで出てくる概念が、選択確率というものです。ある選択肢を選ぶ確率のことです。

選択確率を導出しましょう。選択確率は、商品 i よりも商品 j の効用が高いときに商品] i] を選択するという原理を確率で表現したものです。つまり、商品 i よりも商品 j の効用が高い確率が選択確率です。 n さんが商品 i を選ぶ確率、選択確率を P_{ni} とすると、以下のように表現できます:


\begin{eqnarray*}
P_{ni} = \mbox{Prob}(U_{ni} > U_{nj}\ \forall j \neq i)
\end{eqnarray*}

ここで \forall j \neq i は、すべての商品 i でない商品 j に対して、という意味です。この式を更に書き下していきます:


\begin{eqnarray*}
P_{ni} &=& \mbox{Prob}(U_{ni} > U_{nj}\ \forall j \neq i)\\
&=& \mbox{Prob}(V_{ni} + \epsilon_{ni} > V_{nj} + \epsilon_{nj}\ \forall j \neq i)\\
&=& \mbox{Prob}(V_{ni} - V_{nj} > \epsilon_{nj} - \epsilon_{ni}\ \forall j \neq i)\\
&=&  \mbox{Prob}(\epsilon_{nj} - \epsilon_{ni} < V_{ni} - V_{nj}\ \forall j \neq i)
\end{eqnarray*}

ここで、 \epsilon_{n} = (\epsilon_{1},\ldots,\epsilon_{J})^{'} という J 次元ベクトルで、 J 個ある選択肢それぞれに対する効用の未観測部分をベクトル化したものです。また I(\cdot) は指示関数で、カッコ内の条件が満たされていれば 1 、そうでなければ 0 を返す関数です。

以上が選択肢 i の選択確率です。最後の式を見ると、選択確率は未観測な要因 \epsilon_{j},\ \epsilon_{i} の差よりも、観測できる効用 V_{ni},\ V_{nj} の差の方が大きい確率と言い換えることができます。

選択確率が定義できました。しかし、上記のままでは具体的に確率を計算することはできなそうです。そこで。効用関数の未観測部分 \epsilon_{ni} に様々な確率部分布を仮定することで、上記の選択確率を具体的に計算できる形にします。 \epsilon_{ni} にどんな確率分布を仮定すると、上記の確率はどのように計算できて、その確率はどういった性質を持っていて、そこから何が分かるのか、これを調べるのが離散選択理論です。

ここで、 \epsilon_{n} = (\epsilon_{1},\ldots,\epsilon_{J})^{'} という J 次元ベクトルで、 J 個ある選択肢それぞれに対する効用の未観測部分をベクトル化したものとします。効用関数の未観測部分 \epsilon_{ni} に確率分布 f(\epsilon_{n}) を仮定したとすると、上記の選択確率は次のように書けます:


\begin{eqnarray*}
P_{ni} &=&  \mbox{Prob}(\epsilon_{nj} - \epsilon_{ni} < V_{ni} - V_{nj}\ \forall j \neq i)\\
&=& \int_{\epsilon}I(\epsilon_{nj} - \epsilon_{ni} < V_{ni} - V_{nj}\ \forall j \neq i)f(\epsilon_{n})d\epsilon_{n}
\end{eqnarray*}

例えば \epsilon_{ni} にガンベル分布を仮定すると、上記の積分が解析的に解けて、選択確率はみなさんがよく知っている(多項)ロジスティック回帰における確率になります。様々な f((\epsilon_{n}) を仮定することで、個性的な性質をもった様々な選択確率を考えることができ、その性質と人々が選択するという行為を照らし合わせながら、どの確率を用いることで現実の現象をうまく表現できるのか、といったことが検討できます。

次回以降の記事では、 f(\epsilon_{n})パラメトリックな分布を色々と仮定することで導出される様々な選択確率を紹介していきたいと思います。