Playground 14:ロイヤルティと買いだめの実験室

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

作者

Kei Ikegami

重要このページの使い方
  • このページのRコードは、あなたのブラウザの中で動いている(WebAssembly + webR)。インストールは一切不要。
  • 初回だけ、ページ読み込みに30秒〜1分かかる(R本体とパッケージのダウンロード)。2回目以降はキャッシュで速くなる。
  • 各セルのコードは自由に書き換えて「Run Code」で実行できる。何をどう壊しても誰にも迷惑はかからない。おかしくなったらページを再読み込みすれば元に戻る。
  • 元ネタは講義ノート(lecture14.html)。ここでは「数値をいじって挙動を体感する」ことに集中する。

実験1:本物のロイヤルティ vs 見せかけのロイヤルティ

講義の謎1をそのまま実験する。消費者 \(i\) が期 \(t\) にブランドAを買うかどうかの効用は

\[ u^1_{it}-u^0_{it} = c + \beta_p p_{it} + \lambda y_{i,t-1} + \mu_i + \eta_{it} \]

で決まる。\(\lambda\) は状態依存の強さ(前回買ったこと自体が今回の効用を押し上げる。本物のロイヤルティ)、\(\mu_i \sim N(0, \sigma_\mu^2)\) は個人の好みのばらつき(もともと好きな人はずっと好き。ただの異質性)。世界(a)は \(\lambda > 0\) かつ \(\sigma_\mu = 0\)、世界(b)は \(\lambda = 0\) かつ \(\sigma_\mu\) が大きい。定数項は全体購買率がそろうように較正してある(講義1.3節と同じ値)。まず観測できる集計統計量——p11 = P(買う | 前回買った)、p10 = P(買う | 前回買わず)、gap はその差——が2つの世界でほぼ同じになることを確かめ、続けて前回購入ダミーを入れただけのnaiveなpooled logitを両方の世界に当てる。なお講義ノートは fixest::feglm() にクラスタ標準誤差を付けて推定していたが、webRでは標準の glm() で代用する。点推定は同じで、標準誤差はクラスタ化されないぶん小さめに出る(今日の論点は推定値そのものの歪みなので、結論には影響しない)。

世界(b)の真の \(\lambda\) はゼロなのに、naiveな推定は1前後の「有意にプラス」を返す。前回購入ダミーが \(\mu_i\)(もともと好きかどうか)の代理変数として働いてしまうからだ。これが見せかけの状態依存である。

ノートやってみよう
  • sigma_b <- 0.7(世界(b)の異質性を半分に)にすると、(b)のnaiveな lambda_hat はどこまで下がるか。ゼロまで戻るか。
  • Tn <- 60 にして観測期間を3倍にしてみよう。パネルを長くすれば、naiveな推定は正しい答えに近づくだろうか。
  • 上の2つの表だけで2つの世界を見分けられるか。講義ノート1.5〜1.6節を読み、動学FEの問題と、残差ランダム効果を積分するWooldridge型CREを区別してから考え直そう。

実験2:セールと前借り — post-promotion dip

後半の主役、在庫を持てる財(洗剤やトイレットペーパー)に移る。講義3.2節の在庫モデル——状態は在庫 \(x\)、行動は購入量 \(a\)、価値関数反復で最適政策 \(a^*(x)\) を解く——をそのまま使い、2000世帯を同じカレンダーの上で動かす。10週目だけセールを打ち、さらにシミュレーションならではの贅沢として、同じ乱数で「セールを打たなかった世界」も並走させ、その差からセールの「純増」と「前借り」を分解する。消費者はセールの深さと頻度を織り込んで買い方のルールを決めるので、下のパラメータを変えると裏でDPが解き直される点に注意しよう。

セール週に売上が跳ね(スパイク)、直後の数週間は破線(セールなしの世界)を下回る(post-promotion dip)。買いだめした世帯が在庫を消化するためだ。どの程度が前借りかは上のpull-forward shareで確認し、固定した割合として一般化しない。

ノートやってみよう
  • discount <- 0.40 にするとスパイクとdipはどちらも大きくなる。純増(net gain)と前借り率(pull-forward share)はどう動くか。逆に discount <- 0.10 ではどうなるか(浅すぎるセールは政策関数を動かせず、スパイクごと消えるはずだ)。
  • sale_prob <- 0.5 にして「2週に1回セールが来る」世界にしてみよう。次のセールがすぐ来るなら在庫を抱える意味は薄い。買いだめは生き残るか。
  • セール週のスパイクだけを見て「このセールは大成功」と報告してよいか。net gainとpull-forward shareを根拠に、何週分まで見てから評価すべきか考えよう。

実験3:短期弾力性 vs 長期弾力性

短期弾力性は「1週だけの不意打ち値下げ」に対する当週の数量反応から、長期弾力性は「毎週セール価格」と「ずっと通常価格」の各レジームでDPを解き直した定常状態から計算する。両者は別のestimandであり、比はこの較正での目安にすぎない。

表示された数値は、短期には基準政策、長期にはレジーム別に解き直した政策を使っている。倍率はc_hold、消費機会、在庫上限などに依存するので、固定値として暗記しない。

ノートやってみよう
  • c_hold <- 0.05(保管がタダ同然の財)にしてみよう。短期と長期はそれぞれ何倍くらいに膨らむか。比が開くか縮むか、予想してから確かめよう。
  • c_hold <- 0.25 にすると政策関数の2つの行が同じになる(セールでも買いだめしない)はずだ。このとき短期も長期もゼロに落ち、比は定義できなくなる。生鮮食品のように在庫できない財の姿だ。
  • 静学回帰で出てくる弾力性(ほぼ短期)を恒久値下げの売上予測にそのまま使うと、どちら向きに何倍くらい間違えるか。逆に、この間違いが小さくて済むのはどんな商品カテゴリか。

次に読むもの

  • 講義ノート本体:lecture14.html(識別、Wooldridge型CRE、在庫モデルと反実仮想の完全版)
  • coding課題:assignment14.qmd(ブランド選択パネルのDGP、naive推定、CRE、在庫DGPの反実仮想)