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.

きのこ・たけのこの例

上武康亮・遠山祐太・若森直樹・渡辺安虎/著『実証ビジネス・エコノミクス』(日本評論社、2025年12月刊)のサンプルデータ

empirical_business_economics/01_Discrete_Choice_Ch02 at main · keisemi/empirical_business_economics

背景

「きのこが200円、たけのこが200円のとき、どちらを買うか?(あるいは「どちらも買わない」か?)」のような設問を、価格の組わせを変えて5問質問したアンケート調査で表明選好の情報を集めたとする。(選択型コンジョイント分析 という)

それを使い、離散選択モデルを構築して限界効用や支払意思額を分析する。

データ

Loading...
Loading...

多項ロジットモデル

選択肢は3つ:

  1. 買わない(outside goods)

  2. きのこ

  3. たけのこ

選択肢 j∈J≡{j \in \mathcal{J} \equiv\{ Kinoko,Takenoko,outside }\} から得られる効用 Ui,k,jU_{i, k, j} を以下のように与える。

Ui,k, Kinoko =βKinoko −αpKinoko ,k+ϵi,k, Kinoko Ui,k, Takenoko =βTakenoko −αpTakenoko ,k+ϵi,k, Takenoko Ui,k, outside =ϵi,k, outside \begin{aligned} U_{i, k, \text { Kinoko }} & =\beta_{\text {Kinoko }}-\alpha p_{\text {Kinoko }, k}+\epsilon_{i, k, \text { Kinoko }} \\ U_{i, k, \text { Takenoko }} & =\beta_{\text {Takenoko }}-\alpha p_{\text {Takenoko }, k}+\epsilon_{i, k, \text { Takenoko }} \\ U_{i, k, \text { outside }} & =\epsilon_{i, k, \text { outside }} \end{aligned}

ここで、

  • pj,kp_{j, k} は設問 kk における選択肢 jj の価格

  • ϵi,j,k\epsilon_{i, j, k} は i.i.d.の第 I 種極値分布に従う選好ショック

Pk( Kinoko ∣θ)=exp⁡(βKinoko −αpKinoko ,k)1+exp⁡(βKinoko −αpKinoko ,k)+exp⁡(βTakenoko −αpTakenoko ,k)Pk( Takenoko ∣θ)=exp⁡(βTakenoko −αpTakenoko ,k)1+exp⁡(βKinoko −αpKinoko ,k)+exp⁡(βTakenoko −αpTakenoko ,k)Pk( outside ∣θ)=11+exp⁡(βKinoko −αpKinoko ,k)+exp⁡(βTakenoko −αpTakenoko ,k)\begin{aligned} & P_k(\text { Kinoko } \mid \theta) \\ & \qquad=\frac{\exp \left(\beta_{\text {Kinoko }}-\alpha p_{\text {Kinoko }, k}\right)}{1+\exp \left(\beta_{\text {Kinoko }}-\alpha p_{\text {Kinoko }, k}\right)+\exp \left(\beta_{\text {Takenoko }}-\alpha p_{\text {Takenoko }, k}\right)} \\ & P_k(\text { Takenoko } \mid \theta) \\ & \quad=\frac{\exp \left(\beta_{\text {Takenoko }}-\alpha p_{\text {Takenoko }, k}\right)}{1+\exp \left(\beta_{\text {Kinoko }}-\alpha p_{\text {Kinoko }, k}\right)+\exp \left(\beta_{\text {Takenoko }}-\alpha p_{\text {Takenoko }, k}\right)} \\ & P_k(\text { outside } \mid \theta) \\ & \quad=\frac{1}{1+\exp \left(\beta_{\text {Kinoko }}-\alpha p_{\text {Kinoko }, k}\right)+\exp \left(\beta_{\text {Takenoko }}-\alpha p_{\text {Takenoko }, k}\right)} \end{aligned}

まとめると

Pr(di=j)=exp⁡(βjxj−αpj)1+∑l=1Jexp⁡(βlxj−αpl)Pr(d_i=j) = \frac {\exp( \beta_j x_j - \alpha p_j )} {1 + \sum^J_{l=1} \exp( \beta_l x_j - \alpha p_l )}
  • pjp_j: 財jjの価格

  • xjx_j: 財jjであることを示す{0,1}\{0,1\}の変数

  • α\alpha:価格感応度

  • βj\beta_j:財jjからの限界効用

効用関数:Vj=βjxj−αpjV_j = \beta_j x_j - \alpha p_j

共通の価格感応度α\alphaなのが通常の(statsmodelsパッケージにあるような)ロジットモデルと異なる点

→ conditional logit modelというらしい

ベイズ推定の場合

Initializing NUTS using jitter+adapt_diag...
Multiprocess sampling (4 chains in 4 jobs)
NUTS: [alpha, beta_Kinoko, beta_Takenoko]
Loading...
Loading...
Sampling 4 chains for 2_000 tune and 2_000 draw iterations (8_000 + 8_000 draws total) took 8 seconds.
Loading...

支払意思額(WTP: willingness to pay)
WTP_kinoko = 202.89円
WTP_takenoko = 212.60円

最尤推定の場合

converged: True
Log-Likelihood: -1067.662
Loading...

biogemeによる推定

biogemeパッケージを使うとconditional logit modelや複雑な離散選択モデルを比較的簡単に実装できる

An NVIDIA GPU may be present on this machine, but a CUDA-enabled jaxlib is not installed. Falling back to cpu.
/home/mitama/notes/.venv/lib/python3.12/site-packages/tqdm_joblib/__init__.py:4: TqdmExperimentalWarning: Using `tqdm.autonotebook.tqdm` in notebook mode. Use `tqdm.tqdm` instead to force console mode (e.g. in jupyter console)
  from tqdm.autonotebook import tqdm
Results for model kinoko_takenoko_logit
Nbr of parameters:		3
Sample size:			1180
Excluded data:			0
Final log likelihood:		-1067.662
Akaike Information Criterion:	2141.324
Bayesian Information Criterion:	2156.544

Loading...

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

ここまでのモデルは、価格感応度や基本効用がすべての消費者で共通だと仮定していた。しかしこのアンケートには回答者の年齢・性別・地域・実家暮らしかどうかといった属性も含まれている。個人の属性を考慮する拡張をこの例で試してみる。

ここでは次の2つの異質性を導入する。

  • 年齢による価格感応度の違い:年齢が高いほど価格を気にしなくなると仮定し、価格の係数を年齢の1次関数にする(所得の代理変数として年齢を使うイメージ)

  • 性別による基本効用の違い:性別によって「きのこの山」「たけのこの里」それぞれへの基本的な選好が異なるかもしれないので、性別ダミーを効用関数に加える

Vi,k,Kinoko=βKinoko+γKinoko⋅Malei+(βprice+βprice,age⋅Agei) pKinoko,kVi,k,Takenoko=βTakenoko+γTakenoko⋅Malei+(βprice+βprice,age⋅Agei) pTakenoko,kVi,k,outside=(βprice+βprice,age⋅Agei) poutside,k\begin{aligned} V_{i,k,\text{Kinoko}} & = \beta_{\text{Kinoko}} + \gamma_{\text{Kinoko}} \cdot \text{Male}_i + (\beta_{\text{price}} + \beta_{\text{price,age}} \cdot \text{Age}_i) \, p_{\text{Kinoko},k} \\ V_{i,k,\text{Takenoko}} & = \beta_{\text{Takenoko}} + \gamma_{\text{Takenoko}} \cdot \text{Male}_i + (\beta_{\text{price}} + \beta_{\text{price,age}} \cdot \text{Age}_i) \, p_{\text{Takenoko},k} \\ V_{i,k,\text{outside}} & = (\beta_{\text{price}} + \beta_{\text{price,age}} \cdot \text{Age}_i) \, p_{\text{outside},k} \end{aligned}

poutside,k=0p_{\text{outside},k}=0なのでVoutside=0V_{\text{outside}}=0となり、これまでと同様に外側の選択肢を基準化する。

Loading...
Results for model kinoko_takenoko_hetero_logit
Nbr of parameters:		6
Sample size:			1180
Excluded data:			0
Final log likelihood:		-1048.987
Akaike Information Criterion:	2109.973
Bayesian Information Criterion:	2140.413

Loading...

年齢・性別を加えたモデルの対数尤度は-1049.0で、共通パラメータのモデル(-1067.7)より改善しており、いずれの係数も統計的に有意(p<0.01)。

  • B_PRICE_AGEが正:価格係数(負の値)が年齢とともに0に近づく、つまり年齢が高いほど価格感応度が下がる

  • ASC_KINOKO_MALE・ASC_TAKENOKO_MALEがともに負でほぼ同じ大きさ:男性は女性より「きのこの山」「たけのこの里」どちらに対しても基本効用が低い。つまり性別による差は「どちらを買うか」よりも「(どちらかを)買うかどうか」に主に表れている。実際、ASCTakenoko−ASCKinoko\text{ASC}_{\text{Takenoko}} - \text{ASC}_{\text{Kinoko}}(たけのこ優位の度合い)は性別によらずほぼ一定であり、たけのこの里への選好が男女で大きく変わるわけではない。