econ-research-kit
経済学の研究を実行可能な一連のステップとして捉えます。単なるプロンプト集ではなく、各スキルが入力、成果物、受入基準を明示するワークフローライブラリです。
これは何か、何でないか
これは、実証プロジェクトの各段階をカバーする8つのスキルセットです。各スキルは、いつ実行すべきか、何が必要か、何をするか、どのファイルを生成すべきか、結果をどう確認するかを指示します。
これは、プロンプトのダンプではありません。プロンプトはテキストを生成しますが、スキルは他の誰かが再実行できるファイルを生成します。ある段階が「アシスタントが素敵な段落を書いた」で終わっているなら、その段階は完了していません。
これも違います:識別に関するあなたの判断を代わりに行うものではありません。ここでのスキルは、あなたの仮定とその脅威を明示することを強制しますが、それらの仮定が正しいかどうかを教えることはできません。
関連書籍:book/ には、LW Walker著『Prompt Engineering for Economists』(友人・家族への感謝を込めて、208ページ、60のテンプレート)が収められています。この書籍は各段階がなぜそのように構成されているかを説明し、本リポジトリはその中で何をすべきかを示します。book/README.md は章と段階の対応関係を示しています。
8つの段階
| # | 段階 | スキル | それが答える問い |
|---|---|---|---|
| 0 | フィージビリティゲート | skills/feasibility/ | 利用可能なデータと変動で、そもそも実行可能か? |
| 1 | 問題・文献 | skills/literature/ | ギャップは実在し、論文にする価値があるか? |
| 2 | 識別設計 | skills/identification/ | どの変動が効果を識別し、それを壊すものは何か? |
| 3 | データ | skills/data-prep/ | 変数は私が考えている通りに定義されているか? |
| 4 | 推定 | skills/estimation/ | 特定化は防御可能か、各ロバストネスチェックは何から保護するのか? |
| 5 | 表と図 | skills/tables-figures/ | 出力はジャーナルの形式を満たしているか? |
| 6 | 報告書 | skills/report/ | 他の人が私のファイルからこれを再現できるか? |
| 7 | 執筆・投稿 | skills/writing/ | 文章は識別のストーリーを伝えているか? |
| — | 査読対応 | skills/review/ | 譲るべきでない点を譲らずにどう答えるか? |
段階0はゲートであってステップではありません。 失敗したら停止してください。識別が機能しないプロジェクトのためにデータをクリーニングしてはいけません。
ルーティング:ユーザーの発言に応じてどのスキルに入るか
以下の表を読む前に、python scripts/preflight.py "<ユーザーの言葉>" を実行してください。これにより、4つのスロット(分析単位、処置変数、結果変数、比較対象)のうちどれが欠けているかが分かります。次に python scripts/spec.py "<ユーザーの言葉>" を実行します。タスクスペックのドラフト(4つのスロット、読み取った段階、編集可能なプロンプト、確認すべき3つの事項)が出力されるので、そのドラフトをユーザーに提示してから作業を開始します。一緒に編集してから始めてください。表の中の「最初のアクション」は、4つのスロットがすべて埋まった後でのみ実行されます。スロットが空いている間は、それについて質問することだけがアクションです。
| ユーザーが次のように言った場合 | 入るスキル | 最初のアクション |
|---|---|---|
| 「Xを研究したいけど、できる?」/「データある?」/「おそらく実行不可能」 | skills/feasibility/ | コードを書く前に、データと変動を列挙する |
| 「このテーマは既に研究されてる?」/「新規性」/「文献ギャップ」 | skills/literature/ | まず検索計画を書き、次にマトリックスを構築する |
| 「DID/IV/RDD/イベントスタディを使う」/「識別戦略」/「どう識別するか」 | skills/identification/ | 回帰の前に脅威リストを書く |
| 「データをクリーニング」/「変数の作り方」/「マージできない」/「定義」 | skills/data-prep/ | まず年度間で変数定義をチェックする |
| 「回帰を実行」/「固定効果を追加」/「ロバストネス」 | skills/estimation/ | クラスタリング水準と固定効果セットを正当化する |
| 「表を作成」/「三線表」/「イベントスタディ図を描く」/「regression table」 | skills/tables-figures/ | StataかPythonかを決め、ジャーナル形式に合わせる |
| 「レポートにまとめる」/「再現」/「replication package」 | skills/report/ | レポートをスクリプトの出力とし、手動編集ファイルにしない |
| 「要旨を書く」/「イントロを書く」/「投稿する」/「abstract」 | skills/writing/ | イントロダクションの前に識別パラグラフのドラフトを書く |
| 「査読コメントへの返答」/「referee report」/「rebuttal」 | skills/review/ | 各コメントを「必須対応/議論可能/却下可能」に分類する |
2つのスキルが両方該当しうる場合は、上流へ行け。表の問題は通常、特定化の問題であり、特定化の問題は通常、識別の問題です。
何よりも先に:呼び出してから尋ねる
各セッションは、記憶ではなくファイルから始まります:
python scripts/recall.py
これにより、プロジェクトの現状、最後のステップで生成されたもの、まだ未完了のものが表示されます。これをスキップしたセッションは、リポジトリが既に答えている質問を再度尋ねたり、既に存在するものを再構築したりします。最初にこれを実行し、次に scripts/preflight.py を実行し、その後回答します。
5つの厳格なルール
1. 答える前に尋ねよ:4つのスロットが埋まるまで先に進んではならない。
研究に関するどのリクエストでも、最初のアクションは python scripts/preflight.py "<ユーザーの言葉(元の言語で)>" です。これにより、質問を4つのスロット(分析単位、処置変数、結果変数、比較対象)に分割し、どれが欠けているかを示します。
- 欠けているスロットがある場合:最大3つの質問を書き、すべて同時に尋ね、答えを待つために停止します。
- 推論によって埋めたスロットは「Xと仮定する」とマークし、ユーザーが確認する必要があります。
- 4つのスロットすべてが埋まった場合のみ(ユーザーによるか、ユーザーが確認した仮定による場合)、任意のスキルのステップ2に入ることができます。 これが、このキットの中で人間が答えるのを待つために停止することを要求する唯一のルールです。 このゲートを通過せずに生成された作業は、文書の服を着た推測です。
2. 方法に関する用語を書く前に glossary.yaml を読むこと。
これには3つのレベルがあります:locked(そのまま使用)、pending(最初の候補を使用し、代替案を括弧で囲む)、fallback(中国語の固有名詞を保持し、英語の展開を一度与える)。locked の翻訳に違反することは、スタイルの選択ではなく欠陥です。
3. ドメイン固有の情報はスキルではなく domains/ に存在する。
スキルは作業方法を説明します。中央環保督察が何か、CFPSが教育をどう定義するか、査読者が汚染暴露について何を尋ねるかは説明しません。各スキルの最後のセクションは、どのドメインファイルを開くべきかを示しています。それを開いてください。
4. 各段階はファイルを残さなければならず、各ファイルはその受入リストをパスしなければならない。
## Acceptance は提案ではなくチェックリストです。Yes/Noで答えられない項目は、書き方が悪い項目です——書き直してください。
5. 何かをする前に、自分がどこにいるかを言え。 段階に入るすべての返信は、3行で始まります:どの段階(番号と名前)、このステップだけが何をするか(1文、「データを分析する」ではなく)、どのファイルを生成するか、および続行する前にユーザーの確認が必要かどうか。このヘッダーのない返信はブラックボックスであり、ユーザーがその代償を払います。
各段階はまた、1つの質問をして待つことで終了します。以下の表を参照してください。
8つの確認ポイント
段階0のゲートだけが唯一のものではありません。各段階は1つの質問で閉じ、停止します。これは礼儀の問題ではありません:ユーザーが見たことのない決定は、ユーザーが修正できない決定です。
| 段階 | 停止して尋ねる質問 | 答えなしで続行するか |
|---|---|---|
| 0 フィージビリティ | 4つのスロットが埋まりました。私が推論した2つを確定できますか? | いいえ |
| 1 問題・文献 | これら3つの候補のうち、どの問いですか?ギャップはこれですか? | いいえ |
| 2 識別設計 | 処置グループ、比較グループ、タイミングをこのように設定しました:受け入れますか? | いいえ |
| 3 データ | 変数定義とサンプル境界をこのように描きました:受け入れますか? | いいえ |
| 4 推定 | 主特定化とこのロバストネスリスト:追加または削除するものはありますか? | いいえ |
| 5 表と図 | このテーブルレイアウトと注記スタイル:これが希望ですか? | いいえ |
| 6 報告書 | このように書かれた1ページの結論:数字の読み方に変更はありますか? | いいえ |
| 7 執筆 | このドラフトのどの部分を戻しますか? | いいえ |
| 8 査読対応 | このコメントを修正するか反論するか、そしてその理由はこれですか? | いいえ |
python scripts/stage.py 3 は任意の段階のヘッダーと質問を出力するため、セッション間で文言がずれることはありません。workflows/main.yaml は同じメインラインを機械可読なハンドオフ契約として記述したものです。各段階は requires(既にディスク上になければならないもの)と produces(残さなければならないもの)を宣言し、python scripts/workflow_check.py は、ある段階がそれ以前のどの段階も生成しないものを要求した場合に失敗します。python scripts/gate.py status はゲートを慣習ではなく機械的なものにします。プロジェクトごとの状態ファイル(.econ-kit/gate.json)を保持し、段階の成果物が存在し、少なくとも8文字の人間の回答が記録されるまで先への進行を拒否し、回答をタイムスタンプとともに記録します。gate.py pass "<答え>" が唯一の前進方法です。--force は存在しますが、ギャップを記録に残します。各段階のチェックが実際に何を探しているかを見るには、python scripts/explain.py 6 を実行してください(--list は9つすべての段階を表示します。段階3と4は、既に実行可能なスクリプトがあるため、それらのスクリプトとスキルの受入リストを指し示します)。
用語が不確かな場合
決して黙って翻訳を選ばないでください。用語が pending にある場合は、最初の候補を使用し、括弧内に代替案を追加してください。1つの出力で最大3か所までマークしてください。それを超える場合は、最初の候補を黙って使用し、最後に1行の要約行を追加してください。
用語がGlossaryにまったくない場合は、中国語の原文を保持し、括弧内に英語の展開を与えてください。その後、それを glossary.yaml の pending に追加し、次回の人が再び決定する必要がないようにしてください。
ドメインルックアップ
| 方向 | ディレクトリ |
|---|---|
| エネルギー・環境経済学 | domains/energy-env/ |
| 労働経済学 | domains/labor/ |
| 教育経済学 | domains/education/ |
| 健康経済学 | domains/health/ |
| 行動・実験経済学 | domains/behavioral/ |
| 開発・フィールド実験 | domains/development/ |
| 公共経済学・政策評価 | domains/public/ |
| 産業組織・規制 | domains/industrial-organization/ |
| 貿易・空間経済学 | domains/trade-spatial/ |
| マクロ経済学・金融 | domains/macro-finance/ |
| 経済史・テキストソース | domains/economic-history/ |
| 理論モデリング・メカニズムデザイン | domains/theory/ |
12の方向がカバーされています。最初の3つはこのキットが構築された中心です。労働、教育、健康は、この本が応用ミクロとして一緒に扱う3分野です。残りは、応用ミクロ以外の読者にも足場となる場所を提供するために追加されました。
各方向には5つのファイルがあります:institutional.md(背景と引用可能なパラグラフ)、measures.md(処置変数の構築方法)、data.md(ソースと変数名)、pitfalls.md(査読者が尋ねることとその答え方)、そして route.md(この方向が8つの段階をどう歩くか)。
データ
data-dict/ には中国語のミクロデータソース(CFPS、CHARLS、中国工業企業データベース、大気汚染モニタリングデータ)があります。変数名を発明する前に確認してください——データセットに既に存在する可能性が高いです。あなたのソースがそこにない場合は、最初に data-dict/README.md を読んでください。一部のソースはエントリを取得しますが、一部は意図的に取得しません。推測された変数名は、マークされた変数名よりも悪いです。
質問が「この変数は何と呼ばれているか」ではなく「これに対してソースは存在するか」である場合、data-dict/_catalog.md と scripts/lookup_source.py が、アクセスリンクと応用論文を含む1000以上のソースの外部ディレクトリを検索します。それらはリードであってエントリではありません。ここにある番号付きファイルのみが、変数レベルの詳細が書き留められている唯一の場所です。
このキットがしないこと
- あなたの識別が信頼できるかどうかを判断しません。脅威を書き留めさせます。
- あなたが引用している論文を読む代わりにはなりません。幻覚による参照は、AI支援執筆で最も一般的な失敗です。
skills/writing/には検証ステップが含まれています。 - 単独では実行されません。
scripts/内のスクリプトは構造をチェックします。分析はあなた自身のものです。