Playground 1:予測・介入と値付けの実験室
計量経済学II(ブラウザ上でRが動きます)
- Rはブラウザの中で動く。インストールは不要だが、初回の準備には30秒〜1分ほどかかる。
- 準備が終わったら、まず上から順に「Run Code」を押そう。コードの冒頭にある「いじるのはここ」の数値を変えると、結果も変わる。
- 実験1は「予測」→「介入」の順、実験3・4は「需要推定」→「価格提案」→「来期の業績」の順に実行する。 前のセルを変えたら、後のセルも実行し直そう。実験2は単独で動く。
- おかしくなったらページを再読み込みすれば元に戻る。図のラベルは英語で、
low / normal / highは暇・普通・忙しい週を表す。 - 講義ノートと同じモデルを使う。実験1・2はシミュレーション1、実験3・4はシミュレーション2に対応している。
実験1:翌月予測が当たれば、介入にも使える?
従来の広告配分が続く2か月目を予測する
講義と同じ300店舗を追う。地力の強い店舗には広告費も多く配られる。1か月目に推定したモデルをそのまま使い、2か月目の売上を予測する。地力は月をまたいで変わらないが、広告配分と売上のノイズは毎月変わる。
広告配分ルールを変えた3か月目を予測する
3か月目には、2か月目の予算を据え置く予定だったところ、全店でそのad_multiplier倍にする。地力と売上が決まる仕組みは変えない。モデルを推定し直さず、新しい広告費を入力した予測と実現値を比べる。
最初の表は対数売上の平均二乗予測誤差、最後の表は店舗別の売上変化率の平均(%)である。「真の効果」は同じ地力・同じ3か月目の売上ショックを保った2つの世界の差であり、単なる2か月目から3か月目への増加率ではない。
- 倍率を1に戻すと、3か月目の予測はどうなるか。倍率だけ変えたら、このセルだけ再実行すればよい。
- 最初のセルで店舗数を3,000にして、2つのセルを順に再実行しよう。予測と介入の違いは、データを増やすだけで消えるだろうか。
conf_strength <- 0、またはbeta_quality <- 0にすると、何が変わるか。どちらが「地力→広告費」「地力→売上」の経路をなくす操作か、考えてから試そう。
実験2:無限のデータがあっても、2つの関数は違う
ここでは標本からの推定をやめ、母集団の条件付き平均を直接描く。広告配分を \(A_\lambda=\lambda\max(100+cQ+V,10)\) とし、売上の式は変えない。\(c\) は地力から広告費への係数、\(V\) の標準偏差は15である。
下限の点を除く \(a>10\lambda\) では、
\[ m_\lambda(a)=E[L_\lambda\mid A_\lambda=a] =5+0.002a+\beta_Q\frac{c}{c^2+15^2}(a/\lambda-100). \]
同じ広告費 \(a\) を入れても、どの店舗について平均するかが制度によって変わる。Aは旧制度で広告費100万円の店舗集団、Bは旧制度の曲線に変更後の広告費を入力した点、CはAの店舗集団の広告費を変えた結果である。
- ここには標本サイズの指定がない。推定誤差を完全になくしたのに、なぜ
BとCは違うのだろうか。 - 100万円も200万円も旧制度の支持域にある。それでも旧制度の関数だけでは足りない理由を、
A・B・Cの表を使って説明しよう。 - 倍率を1、交絡の係数を0、地力の売上への効果を0に、それぞれ変えてみよう。どの場合に2本の線が重なるか。数値は対数売上なので、
AからCへの0.2の変化は20%ちょうどの売上増加ではない。
実験3:価格実験から需要を推定する
今度は店長から、仕入費用の上昇に備えた値付けの提案を頼まれた。まず、価格を無作為に変えた実験から、
\[ \log q=\alpha_S-\eta_S\log(p/1000)+\varepsilon, \qquad \varepsilon\sim N(0,\sigma^2) \]
を推定する。\(S\) は価格を決める前にわかる需要の見通しである。価格弾力性は \(-\eta_S\)。各状態の来期の確率は、別に用意された通常営業の記録から推定する。
以下の折りたたみは、データ基盤課の代わりにデータを用意する道具である。自動実行されるので、開かずに次の推定セルへ進んでよい。
講義と同じ真値で、価格実験と通常営業の記録を作る。真値はこの関数の中でだけ使い、後の分析にはデータだけを渡す。対象店舗と実験店舗には同じ条件付き需要モデルを使えるものとする。
- 各状態の実験件数を20に減らし、
experiment_seedも変えてみよう。真の弾力性-3.5, -2.5, -2.0から推定値はどのくらいずれるか。 - 実験件数を増やす操作と、通常営業の記録を増やす操作では、どの推定値が変わるか。
- 価格実験では各状態が同じ件数なのに、来期の状態確率は3分の1ずつになっていない。なぜその確率には営業記録を使うのだろうか。
実験4:値付けを提案し、来期の業績を報告する
候補価格ごとの期待粗利益を比べる
実験3を実行してから始めよう。 粗利益は「(価格−1個あたり仕入費用)×数量」。店長には、週初にわかる需要の見通しごとに、期待粗利益が最大になる価格を提案する。価格の候補は実験と同じ600〜1,800円、50円刻みである。
このセルでは、状態と価格を固定して、売上ショックだけが異なる1週間の粗利益を20,000通り平均する。来期13週間の平均ではない。
提案した値付けで13週間を過ごす
今度は、見通しも売上ショックも異なる来期をn_future通り作る。各週の価格はその週の見通しだけで決める。価格比較用とは別の乱数を使い、3つの世界には同じ見通しとショックを与えて比較する。
表の数量・売上・粗利益は、13週分を合計してから、来期間で平均したものである。below_target_pctは目標未達の来期の割合(%)、risk_mcse_ppはその割合のモンテカルロ標準誤差(%ポイント)。図の破線が目標で、その左側が未達の来期だ。
- 費用を750円に変え、実験4の2つのセルを順に実行しよう。提案価格は各状態で一律100円上がるだろうか。提案価格を使っても、費用上昇前の粗利益に戻れるだろうか。
target_man <- 300に変えると、未達割合と利益分布はそれぞれどうなるか。目標だけ変えたら、最後のセルだけ実行すればよい。n_futureを500、5,000、20,000と変えよう。回数を増やすと、計算の誤差と実際の営業のリスクは、それぞれどうなるだろうか。- 実験3の標本を変え、実験3・4を順に実行し直そう。需要の推定誤差は、提案価格や業績の見通しにも影響するだろうか。
来期の計算には、需要の係数・ショックの大きさ・状態の確率の推定値を使った。費用や価格が変わっても需要モデルは使い続けられ、状態とショックは週ごとに独立に発生すると仮定している。数量は連続量として近似し、品切れや在庫の持ち越しは考えない。
図は推定したモデルの下での営業上のばらつきである。パラメータの推定誤差を織り込んだ予測区間ではない。シミュレーション回数を増やしても、需要を正しく推定できたことにはならない。また、この単純なモデルの週の期待粗利益は式から直接計算もできる。乱数は、候補価格を比べる共通の手順と、13週間の利益分布を調べるために使っている。