Was macht econ-research-kit?
Wirtschaftsforschung als eine Reihe ausführbarer Schritte. Keine Promptsammlung – eine Workflow-Bibliothek, in der jede Fertigkeit ihre Eingaben, ihre Artefakte und ihre Abnahmekriterien deklariert.
Was dies ist und was nicht
Dies ist ein Satz von acht Fertigkeiten, die jeweils eine Phase eines empirischen Projekts abdecken. Jede Fertigkeit sagt Ihnen, wann Sie sie aufrufen, was sie benötigt, was zu tun ist, welche Dateien sie produzieren muss und wie das Ergebnis zu überprüfen ist.
Dies ist keine Prompt-Deponierung. Ein Prompt erzeugt Text. Eine Fertigkeit erzeugt Dateien, die eine andere Person erneut ausführen kann. Wenn eine Phase damit endet, dass „der Assistent einen schönen Absatz geschrieben hat“, ist die Phase nicht abgeschlossen.
Auch nicht: ein Ersatz für Ihr Urteilsvermögen in Bezug auf die Identifikation. Die Fertigkeiten hier zwingen Sie, Ihre Annahmen und deren Gefährdungen zu benennen. Sie können Ihnen nicht sagen, ob die Annahmen halten.
Begleitbuch: book/ enthält Prompt Engineering for Economists von LW Walker, mit lieben Freunden und lieber Familie, 208 Seiten und sechzig Vorlagen. Das Buch erklärt, warum jede Phase so gestaltet ist; dieses Repository sagt, was darin zu tun ist. book/README.md bildet Kapitel auf Phasen ab.
Die acht Phasen
| # | Phase | Fertigkeit | Die Frage, die sie beantwortet |
|---|---|---|---|
| 0 | Machbarkeitstor | skills/feasibility/ | Kann das überhaupt mit den verfügbaren Daten und der Variation durchgeführt werden? |
| 1 | Problem und Literatur | skills/literature/ | Ist die Lücke real und ist sie einen Aufsatz wert? |
| 2 | Identifikationsdesign | skills/identification/ | Welche Variation identifiziert den Effekt und was würde ihn zerstören? |
| 3 | Daten | skills/data-prep/ | Sind die Variablen so definiert, wie ich denke? |
| 4 | Schätzung | skills/estimation/ | Ist die Spezifikation vertretbar und wogegen schützt jeder Robustheitstest? |
| 5 | Tabellen und Abbildungen | skills/tables-figures/ | Erfüllen die Ausgaben das Zeitschriftenformat? |
| 6 | Bericht | skills/report/ | Kann jemand anderes dies von meinen Dateien aus reproduzieren? |
| 7 | Schreiben und Einreichen | skills/writing/ | Trägt die Prosa die Identifikationsgeschichte? |
| — | Antwort auf Gutachten | skills/review/ | Wie antworte ich, ohne zuzugeben, was ich nicht zugeben sollte? |
Phase 0 ist ein Tor, kein Schritt. Falls sie scheitert, anhalten. Bereinigen Sie keine Daten für ein Projekt, dessen Identifikation nicht funktionieren kann.
Routing: Was der Benutzer sagt, welche Fertigkeit aufzurufen ist
Bevor Sie die folgende Tabelle lesen, führen Sie python scripts/preflight.py "<die Worte des Benutzers>" aus. Es sagt Ihnen, welche der vier Slots fehlen. Führen Sie dann python scripts/spec.py "<die Worte des Benutzers>" aus: es gibt einen Aufgaben-Spezifikationsentwurf aus – die vier Slots, die gelesene Phase, einen bearbeitbaren Prompt und die drei zu bestätigenden Dinge – und diesen Entwurf zeigen Sie dem Benutzer, bevor Sie irgendeine Arbeit erledigen. Bearbeiten Sie ihn gemeinsam, dann beginnen Sie. Jeder „erste Schritt“ in der Tabelle erfolgt erst, nachdem die vier Slots gefüllt sind; solange ein Slot offen ist, besteht der einzige Schritt darin, danach zu fragen.
| Der Benutzer sagt etwas wie | Eintreten | Erster Schritt |
|---|---|---|
| „Ich möchte X untersuchen, kann man das machen?“ / „Gibt es Daten?“ / „this is probably infeasible“ | skills/feasibility/ | Zählen Sie die Daten und die Variation auf, bevor Sie Code schreiben |
| „Hat schon jemand zu diesem Thema gearbeitet?“ / „novelty“ / „Literaturlücke“ | skills/literature/ | Schreiben Sie zuerst den Suchplan, dann erstellen Sie die Matrix |
| „Ich verwende DID / IV / RDD / Ereignisstudie“ / „Identifikationsstrategie“ / „how do I identify this“ | skills/identification/ | Schreiben Sie die Bedrohungsliste vor der Regression |
| „Daten bereinigen“ / „Wie konstruiere ich die Variable?“ / „merge nicht möglich“ / „Definition“ | skills/data-prep/ | Überprüfen Sie zuerst Variablendefinitionen über Jahre hinweg |
| „Regression laufen lassen“ / „Fixeffekte hinzufügen“ / „Robustheit“ / „robustness“ | skills/estimation/ | Rechtfertigen Sie die Clusterungsebene und die Fixeffekt-Menge |
| „Tabelle erstellen“ / „Dreilinientabelle“ / „Ereignisstudie zeichnen“ / „regression table“ | skills/tables-figures/ | Entscheiden Sie Stata oder Python, dann an das Zeitschriftenformat anpassen |
| „Als Bericht aufbereiten“ / „Reproduzieren“ / „replication package“ | skills/report/ | Machen Sie den Bericht zu einer Skriptausgabe, niemals eine manuell bearbeitete Datei |
| „Abstract schreiben“ / „Einleitung schreiben“ / „Einreichen“ / „abstract“ | skills/writing/ | Verfassen Sie den Identifikationsabsatz vor der Einleitung |
| „Wie antworte ich auf Gutachterkommentare?“ / „referee report“ / „rebuttal“ | skills/review/ | Klassifizieren Sie jeden Kommentar als Muss / Diskutierbar / Ablehnbar |
Wenn zwei Fertigkeiten gleichermaßen zutreffen könnten, gehen Sie stromaufwärts. Ein Tabellenproblem ist normalerweise ein Spezifikationsproblem; ein Spezifikationsproblem ist normalerweise ein Identifikationsproblem.
Vor allem anderen: Erinnern, dann Fragen
Jede Sitzung beginnt mit Dateien, nicht mit Erinnerung:
python scripts/recall.py
Es gibt aus, wo das Projekt steht, was der letzte Schritt produziert hat und was noch offen ist. Eine Sitzung, die dies auslässt, wird Fragen wiederholen, die das Repository bereits beantwortet, oder etwas neu erstellen, das bereits existiert. Führen Sie es zuerst aus, dann scripts/preflight.py, dann antworten.
Fünf harte Regeln
1. Fragen Sie, bevor Sie antworten: fahren Sie erst fort, wenn die vier Slots gefüllt sind.
Bei jeder Forschungsanfrage ist die erste Aktion python scripts/preflight.py "<die Worte des Benutzers in ihrer eigenen Sprache>". Es zerlegt die Frage in vier Slots – Analyseebene, Behandlungsvariable, Ergebnis, Vergleich – und sagt Ihnen, welche fehlen.
- Fehlende Slots: schreiben Sie höchstens drei Fragen, stellen Sie sie alle auf einmal, dann anhalten und auf die Antwort warten.
- Ein Slot, den Sie durch Rückschluss gefüllt haben, muss mit „unter der Annahme X“ gekennzeichnet werden, und der Benutzer muss es bestätigen.
- Erst wenn alle vier Slots gefüllt sind – vom Benutzer oder durch eine Annahme, die der Benutzer bestätigt hat – dürfen Sie Schritt 2 einer Fertigkeit betreten. Dies ist die einzige Regel im Kit, die ein Anhalten erfordert, um auf einen Menschen zu warten. Arbeit, die jenseits dieses Tores erstellt wird, ist eine Vermutung in den Kleidern eines Dokuments.
2. Lesen Sie glossary.yaml, bevor Sie einen methodischen Begriff schreiben.
Es hat drei Ebenen: locked (wörtlich verwenden), pending (den ersten Kandidaten verwenden und die Alternative in Klammern setzen), fallback (das chinesische Eigennamen behalten, die englische Erweiterung einmal angeben). Die Verletzung einer locked-Übersetzung ist ein Defekt, keine Stilwahl.
3. Domänenspezifisches lebt in domains/, nicht in den Fertigkeiten.
Fertigkeiten beschreiben, wie gearbeitet wird. Sie beschreiben nicht, was 中央环保督察 ist, wie CFPS Bildung definiert oder was Gutachter zur Umweltbelastung fragen. Der letzte Abschnitt jeder Fertigkeit sagt, welche Domänendatei zu öffnen ist. Öffnen Sie sie.
4. Jede Phase muss eine Datei hinterlassen, und jede Datei muss ihre Abnahmeliste bestehen.
## Acceptance ist eine Checkliste, kein Vorschlag. Ein Punkt, zu dem Sie nicht mit Ja/Nein antworten können, ist ein schlecht formulierter Punkt – schreiben Sie ihn um.
5. Sagen Sie, wo Sie sind, bevor Sie etwas anderes tun. Jede Antwort, die eine Phase betritt, beginnt mit drei Zeilen: welche Phase (Nummer und Name), was allein dieser Schritt tut (ein Satz, niemals „die Daten analysieren“) und welche Datei er produzieren wird, plus ob der Benutzer bestätigen muss, bevor Sie fortfahren. Eine Antwort ohne diesen Header ist eine Blackbox, und der Benutzer bezahlt dafür.
Jede Phase endet auch damit, eine Frage zu stellen und zu warten. Siehe die Tabelle unten.
Acht Bestätigungspunkte
Das Tor in Phase 0 ist nicht das einzige. Jede Phase schließt mit einer Frage und hält an. Dies ist keine Höflichkeit: Eine Entscheidung, die der Benutzer nie gesehen hat, ist eine Entscheidung, die der Benutzer nicht korrigieren kann.
| Phase | Die Frage, anzuhalten und zu stellen | Fortfahren ohne Antwort? |
|---|---|---|
| 0 Machbarkeit | Die vier Slots sind gefüllt; können Sie die beiden, die ich erschlossen habe, bestätigen? | Nein |
| 1 Problem und Literatur | Welche dieser drei Kandidatenfragen? Ist die Lücke diese? | Nein |
| 2 Identifikationsdesign | Behandlungsgruppe, Vergleichsgruppe, Zeitpunkt so festgelegt: akzeptieren Sie das? | Nein |
| 3 Daten | Variablendefinitionen und Stichprobengrenzen so festgelegt: akzeptieren Sie das? | Nein |
| 4 Schätzung | Hauptspezifikation und diese Robustheitsliste: etwas hinzufügen oder entfernen? | Nein |
| 5 Tabellen und Abbildungen | Dieses Tabellenlayout und dieser Anmerkungsstil: ist das, was Sie wollen? | Nein |
| 6 Bericht | Einseitige Schlussfolgerung so geschrieben: irgendeine Änderung, wie die Zahlen gelesen werden? | Nein |
| 7 Schreiben | Welcher Teil dieses Entwurfs geht zurück? | Nein |
| 8 Gutachtenantwort | Überarbeiten wir diesen Kommentar oder widersprechen wir, und ist das der Grund? | Nein |
python scripts/stage.py 3 gibt den Header und die Frage für jede Phase aus, damit der Wortlaut zwischen den Sitzungen nicht abweicht. workflows/main.yaml ist derselbe Hauptpfad, geschrieben als maschinenlesbarer Übergabevertrag: jede Phase deklariert requires (was bereits auf der Festplatte sein muss) und produces (was es hinterlassen muss), und python scripts/workflow_check.py schlägt fehl, wenn eine Phase etwas erfordert, das keine frühere Phase produziert. python scripts/gate.py status macht das Tor mechanisch statt zu einer Konvention: es führt eine projektspezifische Zustandsdatei (.econ-kit/gate.json), weigert sich fortzufahren, bis die Artefakte der Phase existieren und eine menschliche Antwort von mindestens acht Zeichen aufgezeichnet ist, und protokolliert die Antwort mit einem Zeitstempel. gate.py pass "<die Antwort>" ist der einzige Weg nach vorne; --force existiert, schreibt aber die Lücke in die Aufzeichnung. Um zu sehen, wonach die Prüfungen einer Phase eigentlich suchen, führen Sie python scripts/explain.py 6 aus (--list zeigt alle neun Phasen an; für die Phasen 3 und 4, die bereits ausführbare Skripte haben, verweist es auf diese Skripte und stattdessen auf die Abnahmeliste der Fertigkeit).
Wenn ein Begriff unsicher ist
Nie stillschweigend eine Übersetzung wählen. Wenn der Begriff in pending ist, den ersten Kandidaten verwenden und die Alternative in Klammern anhängen. Maximal drei solcher Stellen in einer Ausgabe markieren; darüber hinaus den ersten Kandidaten stillschweigend verwenden und eine Zusammenfassungszeile am Ende hinzufügen.
Wenn der Begriff überhaupt nicht im Glossar ist, das chinesische Original behalten und eine englische Erweiterung in Klammern angeben. Dann fügen Sie es zu pending in glossary.yaml hinzu, damit die nächste Person nicht wieder entscheiden muss.
Domänensuche
| Richtung | Verzeichnis |
|---|---|
| Energie- und Umweltökonomie | domains/energy-env/ |
| Arbeitsökonomie | domains/labor/ |
| Bildungsökonomie | domains/education/ |
| Gesundheitsökonomie | domains/health/ |
| Verhaltens- und experimentelle Ökonomie | domains/behavioral/ |
| Entwicklung und Feldexperimente | domains/development/ |
| Öffentliche Wirtschaft und Politikevaluierung | domains/public/ |
| Industrieökonomik und Regulierung | domains/industrial-organization/ |
| Handels- und Raumwirtschaft | domains/trade-spatial/ |
| Makroökonomie und Finanzen | domains/macro-finance/ |
| Wirtschaftsgeschichte und Textquellen | domains/economic-history/ |
| Theoretische Modellierung und Mechanismusdesign | domains/theory/ |
Zwölf Richtungen werden abgedeckt. Die ersten drei sind diejenigen, um die dieses Kit herum gebaut wurde; Arbeit, Bildung und Gesundheit sind die drei Felder, die das Buch zusammen unter angewandter Mikroökonomie behandelt; der Rest wurde hinzugefügt, damit ein Leser außerhalb der angewandten Mikroökonomie dennoch ein Regal zum Stehen findet.
Jede Richtung hat fünf Dateien: institutional.md (Hintergrund und zitierfähige Absätze), measures.md (wie die Behandlungsvariable aufgebaut ist), data.md (Quellen und Variablennamen), pitfalls.md (was Gutachter fragen und wie zu antworten ist) und route.md (wie diese Richtung die acht Phasen durchläuft).
Daten
data-dict/ enthält chinesische Mikrodatenquellen: CFPS, CHARLS, die Datenbank chinesischer Industrieunternehmen und Umweltüberwachungsdaten. Überprüfen Sie es, bevor Sie einen Variablennamen erfinden – der Datensatz hat wahrscheinlich bereits einen. Wenn Ihre Quelle nicht dort ist, lesen Sie zuerst data-dict/README.md: einige Quellen erhalten einen Eintrag und einige bewusst nicht, und ein erratener Variablenname ist schlimmer als einer, der als solcher gekennzeichnet ist.
Wenn die Frage nicht „Wie heißt diese Variable“ ist, sondern „Existiert überhaupt eine Quelle dafür“, durchsuchen data-dict/_catalog.md und scripts/lookup_source.py ein externes Verzeichnis mit über tausend Quellen, mit Zugriffslinks und Anwendungspapieren. Diese Treffer sind Hinweise, keine Einträge: die nummerierten Dateien hier bleiben der einzige Ort, an dem Details auf Variablenebene niedergeschrieben sind.
Was dieses Kit nicht tun wird
- Es wird nicht entscheiden, ob Ihre Identifikation glaubwürdig ist. Es wird Sie zwingen, die Bedrohungen aufzuschreiben.
- Es wird nicht das Lesen des Papiers ersetzen, das Sie zitieren. Halluzinierte Referenzen sind der häufigste Fehler bei KI-unterstütztem Schreiben;
skills/writing/beinhaltet einen Verifikationsschritt. - Es wird nicht von alleine laufen. Die Skripte in
scripts/überprüfen die Struktur; die Analyse ist Ihre.