Playground 2:logit需要モデルの実験室

計量経済学II(ブラウザ上でRが動きます)

作者

Kei Ikegami

重要このページの使い方
  • このページのRコードは、あなたのブラウザの中で動く。インストールは不要だが、初回はR本体などの読み込みに30秒〜1分ほどかかる。
  • 各セルの冒頭の数値を書き換えて「Run Code」で実行しよう。再読み込みすれば元に戻る。共通の関数は最初に自動で読み込まれる。
  • Lecture 2と同じく、価格・属性 → 選択確率 → 需要関数 → 弾力性 → 推定 → プライシングの順に進む。ここでは全員に共通する係数を使い、個人ごとの違いは独立なGumbel誤差で表す。
  • 実験5の対数尤度の図と実験7は、先に実験5の推定セルを実行する。それ以外の実験は単独で試せる。図のラベルはブラウザでの文字化けを避けるため英語にしている。

実験1:価格を効用に入れ、Gumbel乱数で選択を作る

商品の効用を \(u_{ij}=a_j-\alpha p_j+\varepsilon_{ij}\) とする。\(a_j\) は商品の属性などによる非価格部分の魅力で、ここでは与えられている。価格係数 \(\alpha>0\) は全員に共通である。outsideは決定的効用を0とするが、Gumbel誤差は付くので、総効用は \(u_{i0}=\varepsilon_{i0}\) である。

「各人が最大の効用の選択肢を選ぶ」ことで得た頻度を、logit公式と比較しよう。初期設定では \(a_j-\alpha p_j=(0.8,0.3,-0.2)\) となり、講義のGumbel実験と同じである。

試すこと: Aの価格だけを100円から110円へ上げると、Aのシェアと他のシェアはどう動くか。次に N <- 500 にして、公式と頻度のずれを比べよう。選択頻度のばらつきと、価格変更による需要の変化を区別するのがポイントである。

実験2:logitを需要関数として読む

市場に \(M\) 人いて各人が高々1個買うなら、期待需要量は \(q_j=M s_j\) である。ここからは講義の需要曲線と同じA・B・outsideの市場にする。

\[ q_A(p_A,p_B)=M\frac{e^{a_A-\alpha p_A}}{1+e^{a_A-\alpha p_A}+e^{a_B-\alpha p_B}},\qquad q_B(p_A,p_B)=M\frac{e^{a_B-\alpha p_B}}{1+e^{a_A-\alpha p_A}+e^{a_B-\alpha p_B}}. \]

横軸が需要量、縦軸が自分の価格

それぞれの図で、自分の価格を動かすと1本の曲線に沿って動く。競合価格を変えると、その曲線が移動する。点は自分の価格が100円の位置である。

両方の価格を動かすと、需要曲面になる

今度は床の2軸が \(p_A,p_B\)、高さが需要量である。AとBそれぞれに1枚の曲面がある。曲面上の2本の線は、先ほどの競合価格を固定した断面である。このセルは単独で動くので、前のセルを変更した場合は同じ数値をここにも入れよう。講義ノートの図では、2枚を連動させて回転することもできる。

試すこと: \(\alpha\) を0.01や0.04にして、価格への反応を比べよう。自分の価格を上げる方向では曲面が低くなり、相手の価格を上げる方向では高くなる。この2方向の反応を、次に弾力性で測る。2次元図は価格が縦軸なので、図上の傾きをそのまま \(\partial q/\partial p\) と読まないこと。

実験3:小さな値上げから自己・交差価格弾力性へ

講義と同じく、計算を追いやすくするため非価格部分の魅力を変え、値上げ前のシェアをAが0.4、Bが0.3、outsideが0.3とする。Aの価格は100円である。Aだけを1円値上げすると、自分の需要は400から約395.210に、Bの需要は300から約302.395に変わる。

まず、需要の変化率を価格の変化率で割る計算をしよう。Aの行が自己価格の反応、Bの行が交差価格の反応になる。

この比の極限が、微分による定義

\[ \eta_{jk}=\frac{\partial q_j}{\partial p_k}\frac{p_k}{q_j},\qquad \eta_{jj}=-\alpha p_j(1-s_j),\quad \eta_{jk}=\alpha p_k s_k\ (j\ne k) \]

である。添字は需要が変わる財、価格を変える財の順である。初期設定での \(\eta_{AA}=-1.2\)、\(\eta_{BA}=0.8\) と、表の有限の変化率の比を比較しよう。値上げ幅を小さくすると両者が近づく。これで需要曲線の方向と、弾力性の数値・定義がつながった。

実験4:3人の記録から尤度を組み立てる

ここからは価格・属性・選択データを固定し、係数の候補を変える。実験2で価格を変えながら需要を予測したのとは、動かすものが違う。

買う/買わない:Bernoulliと二項分布

3人の記録を「買った、買わなかった、買った」とする。購入確率の候補が \(p=0.6\) なら、尤度は \(0.6\times0.4\times0.6=0.144\) である。ここだけの \(p\) は価格ではなく購入確率である。

個人の記録を使えば \(\ell(p)=\sum_i\{y_i\log p+(1-y_i)\log(1-p)\}\) である。「3人中2人」という二項分布のデータなら、\(\log\binom{3}{2}\) が加わる。これは \(p\) によらない定数なので、どちらの山も \(\hat p=2/3\) で最大になる。

A・B・outside:選んだ確率だけを拾う

講義の3人の表をそのまま計算しよう。各行は、ある共通の係数の候補から、各人の価格・属性のもとで得られた選択確率を表す。このセルは確率が計算済みの段階から、尤度の作り方だけを確かめる。

初期設定なら \(L=0.15\)、\(\ell\simeq-1.897\) になる。人数や選択肢が増えても、計算は同じである。

\[ \ell(\theta)=\sum_{i=1}^{N}\sum_{j=0}^{J}y_{ij}\log s_{ij}(\theta). \]

\(y_{ij}=1\) は各人に1つだけなので、この和は選んだ確率のlogを拾って足す。推定では確率の各セルを自由に変えるのではなく、共通の係数を変えて、logit公式が返す確率をまとめて変える。

実験5:3ブランドのMLEと対数尤度の山

講義と同じ3ブランドのデータを作り、4つの係数を推定する。outsideの決定的効用を0、Gumbel誤差のscaleを1に正規化する。さらにCのブランド切片を0とする。これは位置の正規化とは別の識別制約であり、甘さと全ブランドの切片を同時に入れたときの完全共線性を避けている。この3商品の例は、商品ごとの非価格部分を自由に推定するのと同じ自由度を持つ。少数の属性係数で多数の商品を結ぶ例は、次の実験6で扱う。

試すこと: N を300、3000、10000に変えて標準誤差を比べよう。標本ごとの揺れはあるが、同じDGPではおおむね \(1/\sqrt{N}\) の速さで小さくなる。seedを変えても、毎回必ず信頼区間に真値が入るわけではない。SEは独立で正しく特定されたlogit尤度を前提とするモデルベースの値である。

価格係数だけを動かした対数尤度の断面

先に上の推定セルを実行する。 そのデータと推定値を使い、価格係数 \(\alpha\) だけを変える。ほかの3係数は推定値に固定する。

実験4の二項分布と同じく山の頂点を探している。ただし横軸は購入確率ではなく、価格への反応を表す係数である。価格や選択データ自体は変えていない。また、各 \(\alpha\) でほかの係数を再推定する「プロファイル尤度」ではなく、固定した断面である。

実験6:属性の共通係数を推定し、商品の変更を予測する

講義の6商品A〜Fを使い、\(v_{ij}=\beta_0+\beta_{\mathrm{bitter}}\mathrm{bitterness}_j+\beta_{\mathrm{sweet}}\mathrm{sweetness}_j-\alpha p_{ij}\) を推定する。商品の非価格部分を共通購入切片・苦味・甘さの3係数で説明する特性アプローチである。商品固有の切片は置かず、属性で説明しきれない恒常的な魅力はないと仮定する。個人ごとの属性係数はまだ導入しない。

甘さを1上げると効用は \(\hat\beta_{\mathrm{sweet}}\) だけ上がるが、シェアがその値だけ上がるのではない。logit公式に戻すことで、Aだけでなく他の商品とoutsideの需要も予測する。これは、Aの新しい切片を推定し直す操作ではなく、全商品の選択から推定した属性係数を、Aの変更に当てはめる操作である。価格・ほかの属性・観測できない魅力・共通係数が変わらないという仮定を置いている。

試すこと: new_sweetness_A <- 0 なら需要の変化はすべて0になるか。2にすると、1にしたときのちょうど2倍だけAの需要が増えるだろうか。

実験7:推定した需要の弾力性とIIA

実験5の3ブランド推定を先に実行する。 その推定値を、全員に共通する基準価格で評価する。実験6の6商品とは別のモデルなので、推定値を混ぜないこと。ここで計算するのは「共通価格における需要」であり、各人の価格で計算したシェアを平均したものではない。

B列の交差弾力性はAとCで同じである。有限の値上げでも、AとCの増加率は同じで、A対Cのシェア比が保たれる。絶対的なシェアの増分まで同じとは限らない。これがIIAの代替パターンの制約である。商品間の近さをより柔軟に表す話はLecture 3・4へ進んでから扱う。

実験8:需要と弾力性をプライシングに使う

1商品+outside:収入と利益の最大値を比べる

講義と同じ \(a_A=2,\alpha=0.02,M=1000\) に戻る。限界費用が一定の \(c_A\) なら、利益は \(\pi_A=(p_A-c_A)q_A(p_A)\) である。収入 \(p_Aq_A\) と利益では最適な価格が異なる。利益最大化価格では \(\frac{p_A-c_A}{p_A}=-\frac{1}{\eta_{AA}}\) が成り立つか、表で確かめよう。

試すこと: 初期設定では収入最大化価格が100円、利益最大化価格が約128.36円である。cost <- 0 にすると一致するか。費用を上げたとき、最適な価格と数量、弾力性はどう変わるか。弾力性自体も価格で変わるので、元の価格での値を固定して値付けしないこと。

2社が別々の商品を売る:互いの最適反応と価格均衡

AとBを別々の企業が1商品ずつ販売し、同時に価格を選ぶ。相手の価格を固定して自分の利益を最大にする価格が「最適反応」である。両社の価格が互いに最適反応になった組合せがナッシュ均衡である。共通所有の2商品をまとめて値付けする問題とは異なる。

試すこと: Bの費用だけを70円にすると、BだけでなくAの均衡価格も動くか。自分の利益最大化条件には自己価格弾力性が入り、相手の価格が自分の需要を変えることは交差価格弾力性で表せる。最適反応の交点を求めるには、実験2で見た両方の価格に依存する需要関数が必要なのである。

ここでは計算のつながりが見えるように講義前半の係数を使った。推定需要を使う場合も、実験5の \(a_A=\widehat{\mathrm{const}}_A+3\hat\beta_{\mathrm{sweet}}\)、\(a_B=\widehat{\mathrm{const}}_B+6\hat\beta_{\mathrm{sweet}}\)、\(\alpha=\hat\alpha\) などを代入して同じ手順を使える。ただし上の2社例はA・B・outsideのみの市場なので、Cを販売しない設定での予測となる。需要の推定に加え、費用と競争の仕方の仮定が必要である。

次に読むもの