構造推定における大きな障害のひとつは、一つの工程における計算スピードが全工程に伝播することである。
論文の分析工程自体は、章立てと同じく
- データの前処理と記述統計
- 誘導系的な分析と結果
- 構造推定モデルの記述
- 構造推定モデルの特定化と推定手法の記述
- 実データを使った構造推定モデルの結果
- 推定結果を元にした反実仮想
が本文に置かれる。また、本推定の前かAppendixに
- シミュレーションデータの生成過程の記述(=反実仮想の解き方でもある)
- シミュレーションデータの比較静学(=反実仮想がどう結果を出すかの記述でもある)
- 識別のチェック(点推定ならここはなくてもよいかも)
- シミュレーションデータでのfinite sampleでの推定精度検証(biasとRMSE)
が挿入される。
データの前処理と記述統計と誘導系の結果は、仮に前処理を調整するにしても数分で生データからLatexアウトプットまで終了するはずなので省略する。「構造推定モデルの記述」自体も、均衡の特徴づけと識別可能性までは紙とペンだけで完結するので、他パートと依存しない(紙とペンで完結しない場合はここにも作業が伝播する)
非常に面倒なのが、
- 構造推定モデルの特定化と推定手法の記述
から
- シミュレーションデータでのfinite sampleでの推定精度検証(biasとRMSE)
までのパートが「特定化」の変更の影響を反映する点である。例えば、X_1という変数に加えてX_2という変数を加えるという一見単純な追加処理も、コードが変数次元に自動で合わせる書き方になっていない限り、それなりの修正が必要になる。あるいは、より複雑な特定化の変更、例えば、行動経済学的な割引因子パラメタなどを追加で入れるとすると、そもそもそれが識別できるのかが研究者本人にもわからない。また、一般的にはmisspecification errorが必ず存在するので、エコノメ方面を推すのならばその頑健性をケアする必要がある。
ひとまず「信頼できる先行研究からわかっている絶対にうまくいく特定化、データ生成、推定」を再現してみて、その特定化にひとつずつ要素を加えていくというのが鉄則である(が、トップ5ですらそれが検証されていないケースもそれなりにあるし、だいたいOnline Appendix行きで、チェックする人も手法を使いたい数十人と厳密性にこだわる一部の流派なので世知辛い)。
特定化周りの工程は以下のような製造ライン(Julia AtomやRstudioのようなIDE、物理的なPCなどの作業環境)に分けるのが一つの効率化である。
0. 本推定の特定化を決める。
1. 特定化をもとにシミュレーションデータの生成過程の記述といくつか想定した環境を作るパラメタでデータセット生成
1.1. そのシミュレーションデータでの比較静学(構造パラメタを動かして挙動確認)
1.2. そのシミュレーションデータでの識別のチェックとfinite sampleでの推定精度検証
2. 本推定の特定化をもとに実データを使った構造推定モデルの推定
2.1. 推定結果のひとつ(preferred specification)を元にした反実仮想を複数
工程1と2で挙動がおかしい箇所があればコードのデバッグし、それでもおかしい場合は工程0の特定化を疑う。それでもおかしい場合は理論自体が不完全か、そもそも検証できるサンプルサイズではない。理想的には、工程1と2で使用される自作関数はデバッグと特定化の共通変更を考慮して共通のものであってほしいが、現実は実データと生成データのデータセット構造が異なるので、最低限の調整にとどめたい。
工程1と工程2は工程0が固定されたら、独立のPCで並行してコードを回せる。工程1.1と1.2.も、工程1が定まれば独立のPCで並行に回せる。工程2.1.も工程2が定まれば同様に独立のPCで並行に回せる。工程1と2は特定化以外は完全に独立なので、計算終了次第、該当章にレポートにすることができる。それぞれの工程が数日かかったりするので、できるだけ「物理的な」作業の並列化で効率化するのもいまだに大事。
単著の場合は、ひとまずこれが現在のベストプラクティス。指導教官からは「とにかくシンプルな特定化にこだわること」を何度も指摘されたので、最初から欲を出さず解けるところを広げていくのがよいのだろう。
共著の場合はタスクをどう割り振るかも影響してくる。以下は参考になる。
呼ばれてる気がするので答えます。現行のプロジェクトだと、構造推定:自分でほぼ全部やってる+RAにデータ取得などをお願いするx2、博士課程以上のスキルの人とタスク(推定、シミュレーションなど)ごとに分割x1、博士課程以上のスキルの人にほぼ全部やってもらっているx3、
— Kohei Kawaguchi (@mixingale) September 14, 2021
同級生どうしで構造推定やる時とかにどうすればいいのか最近,先生に聞いたことがあるんですけど,いくつかやり方があるだろうとのことでした.まず既存の推定手法(BLP)みたいなコードがどこにでもあるものを使うならデータクリーニングの分担がメインになるのでほぼ平等に分担できる.
— 似非 (@kDrjf853_3tna) September 13, 2021