Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

ロジットモデル

導出

二項選択モデル

最も単純なケースとして、財の数J=2J=2の場合を考える。各財から得られる効用を、平均的な満足度βj\beta_j、価格pjp_j、ランダムな選好ショックϵij\epsilon_{ij}で表す:

Ui1=β1αp1+ϵi1Ui2=β2αp2+ϵi2\begin{aligned} & U_{i 1}=\beta_1-\alpha p_1+\epsilon_{i 1} \\ & U_{i 2}=\beta_2-\alpha p_2+\epsilon_{i 2} \end{aligned}

このとき、消費者iiがとる選択did_iは、効用が多い方を選ぶと仮定すれば

di={1 if β1αp1+ϵi1>β2αp2+ϵi22 if β1αp1+ϵi1β2αp2+ϵi2d_i= \begin{cases}1 & \text { if } \beta_1-\alpha p_1+\epsilon_{i 1}>\beta_2-\alpha p_2+\epsilon_{i 2} \\ 2 & \text { if } \beta_1-\alpha p_1+\epsilon_{i 1} \leq \beta_2-\alpha p_2+\epsilon_{i 2}\end{cases}

となる。したがってその確率は、jjの効用が高くなる確率

Pr(di=1)=Pr(β1αp1+ϵi1>β2αp2+ϵi2)=Pr(ϵi1ϵi2>(β1β2α(p1p2)))\begin{aligned} \operatorname{Pr}(d_i=1) & =\operatorname{Pr}\left(\beta_1-\alpha p_1+\epsilon_{i 1}>\beta_2-\alpha p_2+\epsilon_{i 2}\right) \\ & =\operatorname{Pr}\big(\epsilon_{i 1}-\epsilon_{i 2}>-\left(\beta_1-\beta_2-\alpha\left(p_1-p_2\right)\right)\big) \end{aligned}

となる。

二項ロジットモデル

選好ショックϵij\epsilon_{ij}が第I種極値分布(ガンベル分布) P(ϵijx)=F(x)=eexP(\epsilon_{i j} \leq x)=F(x)=e^{-e^{-x}} に従うと仮定する場合、選好ショックの差分ϵi1ϵi2\epsilon_{i1} - \epsilon_{i2} は標準ロジスティック分布 F(t)=P(Xt)=11+exp(t)F(t)=P(X \leq t)=\frac{1}{1+\exp (-t)} に従うため、財1の購入確率は次のように表すことができる。

Pr(di=1)=11+exp({β1β2α(p1p2)})=exp(β1β2α(p1p2))1+exp(β1β2α(p1p2))\begin{aligned} \operatorname{Pr}\left(d_i=1\right) & =\frac{1}{1+\exp(-\{ \beta_1-\beta_2-\alpha\left(p_1-p_2\right)\})}\\ & =\frac{\exp \left(\beta_1-\beta_2-\alpha\left(p_1-p_2\right)\right)}{1+\exp \left(\beta_1-\beta_2-\alpha\left(p_1-p_2\right)\right)} \end{aligned}
Source
import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import gumbel_r

x = np.linspace(-4, 8, 200)

fig, axes = plt.subplots(1, 2, figsize=[8, 3])

for mu, beta in [(0, 1), (0, 2), (2, 1)]:
    axes[0].plot(x, gumbel_r.pdf(x, loc=mu, scale=beta), label=fr"$\mu={mu}, \beta={beta}$")
    axes[1].plot(x, gumbel_r.cdf(x, loc=mu, scale=beta), label=fr"$\mu={mu}, \beta={beta}$")

axes[0].set(title="PDF", xlabel="x", ylabel="f(x)")
axes[0].legend()
axes[1].set(title="CDF", xlabel="x", ylabel="F(x)")
axes[1].legend()
fig.tight_layout()
fig.show()
/tmp/ipykernel_16063/1017810842.py:18: UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown
  fig.show()
<Figure size 800x300 with 2 Axes>

多項ロジットモデル

消費者iiが財jjから得られる効用 UijU_{ij} が、個人の選好ショック ϵi\epsilon_i とそれ以外の部分 Vj(θ)V_j(\theta) からなるとする。

Uij=Vj(θ)+ϵiU_{ij} = V_j(\theta) + \epsilon_i

そしてV(θ)jV(\theta)_j

Vj(θ)=β0+k=1KβkxjkαpjV_j(\theta) = \beta^0 + \sum_{k=1}^K \beta^k x^k_j - \alpha p_j

のようにパラメータθ=(α,β0,β1,,βK)\theta = (\alpha, \beta^0, \beta^1, \dots, \beta_K)で決定されるとする。

JJ個の財があり、消費者iiが財jjを購入する確率 Pr(di=j)\operatorname{Pr}(d_i=j) は、財jjから得られる効用 Vj(θ)+ϵijV_j(\theta)+\epsilon_{i j} が他の財から得られる効用を上回る確率とする

Pr(di=j)=Pr({ϵij}j=0JVj(θ)+ϵij>Vl(θ)+ϵil,lj)\operatorname{Pr}\left(d_i=j\right) =\operatorname{Pr}\left(\left\{\epsilon_{i j}\right\}_{j=0}^J \mid V_j(\theta)+\epsilon_{i j}>V_l(\theta)+\epsilon_{i l}, \forall l \neq j\right)

選好ショック ϵij\epsilon_{ij} が第I種極値分布(ガンベル分布) P(ϵijx)=F(x)=eexP(\epsilon_{i j} \leq x)=F(x)=e^{-e^{-x}} に従うと仮定する場合、消費者にとっての製品jjの購入確率を以下のように書くことができる。

Pr(di=j)=exp(β0+k=1Kβkxjkαpj)1+l=1Jexp(β0+k=1Kβkxlkαpl)Pr(d_i=j) = \frac {\exp( \beta^0 + \sum_{k=1}^K \beta^k x^k_j - \alpha p_j )} {1 + \sum^J_{l=1} \exp( \beta^0 + \sum_{k=1}^K \beta^k x^k_l - \alpha p_l )}

jjの選択確率は自身の価格pjp_jや製品属性xjkx_j^kのみならず、他の選択肢の価格や製品属性(pl,xlk)(p_l, x_l^k)にも依存する点に注意。

最尤推定

顕示選好(「ある製品の選択肢のもとで、人々が実際にどの選択肢を選んだのか」が選好を反映している、とする考え方)の考え方を反映したものが、データを用いた最尤推定である。

製品の価格や性能などのデータ{pj,xj1,,xjK}j=1J\{p_j, x^1_j,\cdots,x^K_j\}^J_{j=1}と、各消費者がどれを購入したかというデータ{di}i=1N\{d_i\}^N_{i=1}が利用可能であるとする。このとき、多項ロジットモデルから尤度関数を以下のように書くことができる

L(θ)=i=1Nj=0J(Pr(di=j))1(di=j)L(\theta) = \prod_{i=1}^N \prod_{j=0}^J (Pr(d_i=j))^{1(d_i=j)}

この尤度関数をパラメータθ=(α,β0,,βK)\theta=(\alpha, \beta^0, \cdots, \beta^K)について最大化することで消費者の効用関数内のパラメータを得ることができる。

消費者の異質性を考慮する

上記の単純なモデルでは、消費者iiが財jjから得られる効用 UijU_{ij} がは 個人の選好ショック ϵi\epsilon_i とそれ以外の万人に共通な部分 VjV_j からなるとしていた。
しかし、VijV_{ij}としてより個人差を表す拡張もできる。

個人の属性を考慮する

消費者の所得や属性の違いをパラメータに取り入れる場合について。

例:消費者iiの所得yiy_iを取り入れる

Vij=k=1Kβkxjk(α0+α1yi)pjV_{i j}=\sum_{k=1}^K \beta^k x_j^k-(\alpha_0+\alpha_1 y_i) p_j

もし α1<0\alpha_1 < 0 なら所得が多いほど価格感応度 (α0+α1yi)-(\alpha_0+\alpha_1 y_i) が小さくなり、商品価格pjp_jの大きさによる効用の低下は緩やかになり、価格の高さを気にしなくなることが表現できる

例:個人の属性の考慮

例えば「どの病院を利用するか」の離散選択モデルを考えるとして、消費者iiの自宅と病院jjとの距離dijd_{ij}を考慮する場合

Vij=k=1Kβkxjk+γdijV_{i j}=\sum_{k=1}^K \beta^k x_j^k+\gamma d_{i j}

ここでγ\gammaはパラメータで、距離が遠いことによる不効用を捉える。

ランダム係数ロジット・モデル

ランダム係数ロジットモデル(random coefficients logit model) は、消費者の異質性は観察不可能な要因に由来すると考え、選択肢の属性についてのパラメータ(係数)が消費者間でランダムに異なる確率変数であると仮定する。

最もシンプルな例として製品属性が1つだけ存在するケースを考える。効用関数を次のように仮定する。

Uij=βixj+ϵijU_{ij} = \beta_i x_j + \epsilon_{ij}
  • UijU_{ij}:効用

  • βi\beta_i:係数。βiN(μ,σ2)\beta_i \sim N(\mu, \sigma^2)を仮定

  • ϵij\epsilon_{ij}:個人の選好ショック。第1種極値分布に従うと仮定

ロジットモデルは次のようになる

Pr(di=jβi)=exp(βixj)j=1Jexp(βixj)\operatorname{Pr}\left(d_i=j \mid \beta_i\right)=\frac{\exp \left(\beta_i x_j\right)}{\sum_{j=1}^J \exp \left(\beta_i x_j\right)}

しかし係数βi\beta_iは消費者ごとに異なり観察不可能なパラメータである。そこで係数に関して積分をとることで確率の期待値(平均的な選択確率)を用い、確率関数の引数からβi\beta_iを消去する

Pr(di=j)=exp(βixj)j=1Jexp(βixj)f(βiμ,σ2)dβi\operatorname{Pr}\left(d_i=j\right)=\int \frac{\exp \left(\beta_i x_j\right)}{\sum_{j=1}^J \exp \left(\beta_i x_j\right)} f\left(\beta_i \mid \mu, \sigma^2\right) d \beta_i

この積分のためにパラメータを解析的に推定することはできない。そこで推定はモンテカルロシミュレーションを用いる。具体的には、

  1. βi\beta_iについて正規分布から生成した疑似乱数で選択確率を計算することをRR回繰り返す

  2. そのRR個の実現値の平均によって積分値を近似し、選択確率を得る

  3. ほかのパラメータについてはβi\beta_iを積分消去したあとの選択確率での対数尤度 SLL(θ)=i=1Nj=1JdijlogPr^(di=jθ)SLL(\theta) = \sum^N_{i=1} \sum^J_{j=1} d_{ij} \log \hat{\operatorname{Pr}}(d_i = j\mid \theta) で最尤推定する。

この方法は シミュレーションによる最尤推定法(simulated maximum likelihood estimation: SML) と呼ばれる

価格弾力性

ロジットモデルと需要

消費者iiがマーケットtt(地理や時点の差異などを示す)において製品jjを購入した場合の効用UijtU_{i j t}は以下のように与えられる

Uijt={β0+k=1Kβkxjtkαpjt+ξjt+ϵijt,j=1,,Jtϵi0t,j=0U_{i j t}= \begin{cases}\beta^0+\sum_{k=1}^K \beta^k x_{j t}^k-\alpha p_{j t}+\xi_{j t}+\epsilon_{i j t}, & j=1, \ldots, J_t \\ \epsilon_{i 0 t}, & j=0\end{cases}

ロジットモデルでは製品jjの購入確率は次のように表される

Pr(j を購入 )=exp(β0+k=1Kβkxjtkαpjt+ξjt)1+l=1Jtexp(β0+k=1Kβkxltkαplt+ξlt)\operatorname{Pr}(j \text { を購入 }) =\frac{\exp \left(\beta^0+\sum_{k=1}^K \beta^k x_{j t}^k-\alpha p_{j t}+\xi_{j t}\right)}{1+\sum_{l=1}^{J_t} \exp \left(\beta^0+\sum_{k=1}^K \beta^k x_{l t}^k-\alpha p_{l t}+\xi_{l t}\right)}

この確率をすべての消費者について集約することで、マーケット全体の製品需要が得られる。
製品jjへの需要qjt(p1t,,pJtt)q_{j t}(p_{1 t}, \ldots, p_{J_t t})は、潜在的な消費者の数がMtM_tのとき、

qjt(p1t,,pJtt)=Mt×Pr(j を購入 )q_{j t}(p_{1 t}, \ldots, p_{J_t t})=M_t \times \operatorname{Pr}(j \text { を購入 })

となる。潜在的な消費者の数を使うのは製品を「買わない(アウトサイドグッズ)」という選択肢もあるためである。

ロジットモデルにおいて製品jjへの購入確率は、ほかの製品の価格や属性にも依存するため、推定される需要も同様となる。

ロジットモデルにおける価格弾力性

  • 需要の価格弾力性:価格が1%変化したときに、需要が何%変化するか?

    • 需要の自己価格弾力性:製品jjの価格が1%変化したときに、製品jjの需要が何%変化するか

    • 需要の交差価格弾力性:製品llの価格が1%変化したときに、製品j(jl)j (j \neq l)の需要が何%変化するか

マーケットttにおける製品jjのマーケットシェアをsjt=qjt/Mts_{jt} = q_{jt} / M_tとすると、需要の価格弾力性ηjlt\eta_{j l t}は次のようになる

ηjlt=qjtpltpltqjt={αpjt(1sjt),l=j(自己価格弾力性)αpltslt,lj(交差価格弾力性)\eta_{j l t}=\frac{\partial q_{j t}}{\partial p_{l t}} \frac{p_{l t}}{q_{j t}} = \begin{cases} -\alpha p_{j t}\left(1-s_{j t}\right), & l=j \quad (\text{自己価格弾力性}) \\ \alpha p_{l t} s_{l t}, & l \neq j \quad (\text{交差価格弾力性}) \end{cases}

ログ・サム公式

ロジットモデルの便利な性質のひとつは意思決定者の期待効用を解析的に求められること

導出

消費者iiが実際に得る効用は、選好ショックが実現したあとの最大効用 maxjUij=maxj(Vj+ϵij)\max_{j} U_{ij} = \max_{j} (V_j + \epsilon_{ij}) である。この期待値 E[maxjUij]E[\max_j U_{ij}] を求めたい。

まず maxj(Vj+ϵij)\max_j (V_j+\epsilon_{ij}) 自体の分布を調べる。ϵij\epsilon_{ij}は独立に標準ガンベル分布 F(x)=eexF(x)=e^{-e^{-x}} に従うので、その累積分布関数は

P(maxj(Vj+ϵij)x)=P(ϵijxVj, j)=jP(ϵijxVj)(ϵijは独立)=jexp(exp((xVj)))=exp(jexp((xVj)))=exp(exjeVj)\begin{aligned} P\left(\max_j (V_j+\epsilon_{ij}) \leq x\right) &= P(\epsilon_{ij} \leq x-V_j, \ \forall j)\\ &= \prod_j P(\epsilon_{ij} \leq x - V_j) && (\epsilon_{ij}\text{は独立})\\ &= \prod_j \exp\left(-\exp(-(x-V_j))\right)\\ &= \exp\left(-\sum_j \exp(-(x-V_j))\right)\\ &= \exp\left(-e^{-x}\sum_j e^{V_j}\right) \end{aligned}

ここで A=jeVjA=\sum_j e^{V_j} とおくと、exA=exp((xlogA))e^{-x}A = \exp\left(-(x-\log A)\right) なので

P(maxj(Vj+ϵij)x)=exp(exp((xlogA)))P\left(\max_j (V_j+\epsilon_{ij}) \leq x\right) = \exp\left(-\exp\left(-(x-\log A)\right)\right)

となる。これは位置パラメータμ=logA\mu=\log A、尺度パラメータβ=1\beta=1のガンベル分布の累積分布関数と一致する(ガンベル分布の定義は前掲の「ガンベル分布」を参照)。つまり

maxj(Vj+ϵij)Gumbel(μ=logjeVj, β=1)\max_j (V_j+\epsilon_{ij}) \sim \text{Gumbel}\left(\mu=\log\sum_j e^{V_j},\ \beta=1\right)

であり、独立なガンベル分布に従う変数の最大値に定数を足したものも、やはりガンベル分布に従うという性質(max-stability)がわかる。

ガンベル分布の期待値は E[X]=μ+γβE[X]=\mu+\gamma\betaγ0.5772\gamma\approx0.5772:オイラー・マスケローニ定数)なので、求める期待効用は

E[maxj{0,1,,J}Uij]=log(j=0Jexp(Vj))+γE\left[\max_{j \in \{0,1,\ldots,J\}} U_{ij}\right] = \log\left(\sum_{j=0}^J \exp(V_j)\right) + \gamma

となる。この右辺の log(jexp(Vj))\log\left(\sum_j \exp(V_j)\right) の形は ログ・サム公式(log-sum formula) と呼ばれる。定数項γ\gammaは効用の原点(スケール)の取り方に依存するだけで、効用の差分を使う分析には影響しないため、しばしば任意定数CCとして

E[maxjUij]=log(jexp(Vj))+CE\left[\max_j U_{ij}\right] = \log\left(\sum_j \exp(V_j)\right) + C

と書かれる。

解釈・応用

ログ・サム公式は「選択肢集合{0,1,,J}\{0,1,\ldots,J\}全体から得られる期待効用」を表しており、しばしば インクルーシブバリュー(inclusive value; IV) とも呼ばれる。

  • 消費者余剰の計算:価格改定など効用関数を変化させる政策の前後で消費者余剰の変化を評価する際に使われる(Small and Rosen, 1981)。価格の限界効用α\alphaVjV_jに占める価格の係数)を使うと、金額換算した消費者余剰の変化は

ΔCSi=1α[log(jexp(Vjafter))log(jexp(Vjbefore))]\Delta CS_i = \frac{1}{\alpha}\left[\log\left(\sum_j \exp(V_j^{\text{after}})\right) - \log\left(\sum_j \exp(V_j^{\text{before}})\right)\right]

と書ける。1/α1/\alphaは「効用1単位あたりの金額」なので、効用の変化分(ログ・サム公式の差)を金額に変換している。

  • 入れ子ロジットモデル(nested logit model):下位の選択肢集合(ネスト)内での期待効用をログ・サム公式で要約し、それを上位の選択(どのネストを選ぶか)の効用関数に組み込むことで、選択肢間の相関構造を表現する。