经管研究生用 Claude Code 跑实证:从取数、回归到复现包

發布於 2026-10-12

一篇实证论文,从开题到答辩,手上的活大致是这几样:

  • 从 CSMAR、Wind 或公开接口取数,清洗、合并成面板;
  • 描述统计、基准回归,再按识别策略做双重差分(DID)、断点回归(RD)或工具变量(IV);
  • 做一轮又一轮稳健性检验,出三线表和图;
  • 写正文、核对引用,最后把数据和代码整理成别人能从头重跑的「复现包」。

这些活里有大量「写代码、运行、看报错、再改」的循环。在聊天窗口里做,你得把代码复制进 Stata,再把报错贴回去。编码 agent 不一样:它是能在你电脑上读写文件、运行命令的 AI 助手,Claude Code 是其中一种。接上 Stata 或 R 之后,它可以自己写 do 文件、运行、读日志、改错。

在社会科学里,经济学者用得最多。Anthropic 在 2026 年 2 月下旬至 3 月调查了 1,260 位定量社会科学研究者,2026 年 5 月 27 日发布的结果显示:全体只有 20% 每周使用编码 agent 一次以上,经济学者是 39%;用 agent 的人里,97% 拿它生成代码。报告也提醒,受访者是报名领取 Claude Max 账号的研究者,样本偏向对 AI 工具感兴趣的人,这些比例可能高于整个学界。同一份报告还写明,没有发现用 agent 的人向期刊投出了更多新论文。工具省下的是体力,判断还得你来做。

下面按流程一步步说:每一步交给 agent 什么、用什么工具、怎么装,再给一段可以直接粘贴的提示词。Claude Code 要接上可用的模型服务才能用。Anthropic 的服务不面向中国大陆提供,在国内怎样给编码 agent 接国产模型、看住账单,见《国内用编码 agent 起步》。文中的工具大多也有 Codex 的安装命令,见各自的资源页。

第一步:搭好项目目录,把 Stata 或 R 接上 agent

先建一个专门的项目文件夹,分出 data/raw(原始数据)、data/derived(清洗后的数据)、code、output 几个目录,并用 Git(记录每次文件改动的版本管理工具)管起来。后面审计代码时要靠它对比改动。不熟悉 Git 的话,可以让 Claude Code 在项目里运行 git init,之后每完成一步就让它提交一次,并写清这一步改了什么。

再在项目根目录写一个 CLAUDE.md,写清研究问题、样本区间、变量口径,以及「不许改 data/raw」这类规则。Claude Code 每次开会话都会读它,但官方文档说明它只是上下文,不是强制配置。原始数据最好再在系统里设成只读。

用 Stata 的同学装 Stata MCP。它是 VS Code / Cursor 的扩展,启动后在本机 4000 端口开一个 MCP 接口(MCP 是 agent 调用外部工具的通用协议),agent 通过它运行选中的代码或整个 do 文件,并读回输出。

Stata MCPMCP让 agent 直接运行 do 文件、读回回归结果;需正版 Stata 17 及以上hanlulong/stata-mcp511

要准备的:正版 Stata 17 或更高版本,VS Code 或 Cursor。安装命令(需要 VS Code 的 code 命令可用):

code --install-extension DeepEcon.stata-mcp && claude mcp add --transport http --scope user stata-mcp http://localhost:4000/mcp-streamable

README 里写到的几个要点:

  • 首次安装要配置依赖,最长约 2 分钟。使用时要保持编辑器开着,状态栏显示「Stata」才说明服务在运行。
  • 扩展默认按 MP 版启动。你装的是 SE 或 BE,要在设置里改 stata-vscode.stataEdition。
  • 多个会话并行时,每个会话约占 200 到 300 MB 内存,还要看你的授权允许同时开几个 Stata。
  • 加完 MCP 后要重启客户端,工具才会出现。

Stata 版本低于 17,或者不想一直开着编辑器,也可以不装 MCP:让 Claude Code 在终端用 Stata 的批处理模式运行 do 文件,再读生成的同名 .log 日志。macOS、Linux 上加 -b 参数(如 stata-mp -b do code/01_clean.do),Windows 上加 /e 参数(如 StataMP-64.exe /e do code/01_clean.do)。可执行文件的名字和路径随版本、系统和安装方式而异,以 Stata 官网的说明为准(Windows、Mac)。

用 R 的同学分两种情况。只想让 agent 跑 R 脚本,什么都不用装:Claude Code 可以直接在终端运行 Rscript code/01_clean.R,再读输出。

想让 agent 看到你正开着的 R 会话、直接用里面加载好的数据,要用 mcptools。这是 Posit 官方的 R 包,能把 agent 接到你已经打开的 R 会话。它目前标注为实验阶段。

mcptoolsMCP把 agent 接到你正开着的 R 会话;单独用只能切换会话,看数据要配 btw 包posit-dev/mcptools200

注意,资源页给的命令 Rscript -e "mcptools::mcp_server()" 单独用时,只开放列出会话、切换会话两个工具,agent 既看不到数据,也跑不了代码。要让它查看数据框、查包文档,按 btw 的文档改用 btw 包。它也是 Posit 的 R 包,基于 mcptools,自带这些工具。先在 R 里运行 install.packages(c("mcptools", "btw")),再注册:

claude mcp add -s "user" r-btw -- Rscript -e "btw::btw_mcp_server(list('docs', 'pkg', 'env', 'sessioninfo', 'cran'))"

然后在要让 agent 访问的那个 R 会话里运行 btw::btw_mcp_session()。这条配置没有开放执行代码的工具:btw 文档建议,agent 自己能运行命令时,不必再重复开放。

接好之后,先拿一个你已经跑通的 do 文件试一下,确认 agent 读到的结果和你自己跑的一致:

请用 Stata MCP 运行 code/01_clean.do,全程使用绝对路径。
运行完告诉我:每一步 keep、drop、merge 前后的观测数,
以及日志里出现的所有警告。不要修改任何文件。

第二步:取数,A 股用 CNEquity,美国宏观用 FRED

学校买的 CSMAR、Wind 等商业数据库,不要让 agent 登录,也不要把账号交给它。自己导出后放进 data/raw,让 agent 只负责读取和清洗。省级、城市层面的控制变量多来自统计年鉴和国家统计局,目录里没有能直接调用的工具,同样自己下载后放进 data/raw,并让 agent 清洗时记下年鉴的年份版本和指标口径。公开的 A 股数据和美国宏观数据,可以交给下面两个工具。

A 股公司数据可以用 CNEquity。它把行情、财报、资金流、公告、宏观指标等 50 多个数据集整理成本地的 Parquet 数据湖(存在你电脑上的一组数据文件),再通过只读的 MCP 让 agent 查数、跑 SQL。对实证研究有用的有三点:历史股票池保留已退市的公司,避免幸存者偏差;财报按公告日保存每一版,修订不会覆盖首发值;每行数据都记了来源、数据版本和抓取时间,方便复查。

CNEquityMCPA 股本地数据湖:保留退市公司,财报按公告日存版本,每行带来源与版本rootSunc/CNEquity354

数据从哪来要心里有数:CNEquity 的数据主要来自东方财富、通达信、新浪、巨潮等公开接口,不是授权数据商。论文里要如实写明来源;财报科目、退市与 ST 状态这类关键变量,有条件的话和 CSMAR 或 Wind 交叉核对。导师或期刊要求用商业数据库的,以要求为准。

要准备的:Python 3.10 以上。基础采集不需要账号或 Token。

pip install cnequity && cne init --profile demo && claude mcp add cnequity -- cne mcp --config /abs/path/to/configs/cnequity.demo.toml

命令里的 /abs/path/to/ 要换成你电脑上 configs/cnequity.demo.toml 的实际绝对路径。demo 只抓 5 只股票、最近约 30 个交易日,不含财报,只用来试通流程。

正式研究直接运行 cne init --profile full:它会自动生成正式配置 configs/cnequity.toml,覆盖全市场,日线从 2016 年起(不加 --profile full 只取最近 3 年)。想把数据放到别的目录,先运行 cne config create --data-root /你的路径。cne init 只建证券、日历、日线、交易状态等主干,不含财报,也不含全市场的历史 ST 标记,要另外补:

cne backfill financial_statement_items --start 2016-01-01 --end 2024-12-31 --config configs/cnequity.toml
cne backfill trading_status --start 2016-01-01 --end 2024-12-31 --config configs/cnequity.toml

这两步按数据源的节奏逐只抓取,要跑很久。建好正式库后,先运行 claude mcp remove cnequity,再把上面 claude mcp add 命令里的配置路径换成 configs/cnequity.toml 的绝对路径,重新注册。

还有一个口径问题。严格的时点口径(point-in-time,只用当时已经公开的信息)只认建库以后每天累积采集的财报版本;回填的历史财报会标成 reconstructed,严格模式下查不到。另外它还在 0.x 阶段,公共数据源能否访问、历史有多长都会变。取完数要自己抽查。

美国宏观数据用 FRED MCP Server。它能检索并提取 FRED 数据库的时间序列,取数时可以直接换算同比、环比或取对数,也能把月度数据聚合成季度、年度。

FRED MCP ServerMCP检索、提取 FRED 宏观序列,取数时可直接换算同比、取对数、改频率stefanoamorelli/fred-mcp-server124

要准备的:在 FRED 官网免费申请的 API Key,本机装好 Node.js。把命令里的 YOUR_FRED_API_KEY 换成你的 Key:

claude mcp add -e FRED_API_KEY=YOUR_FRED_API_KEY fred -- npx -y fred-mcp-server

取数这一步,最要紧的是让 agent 把每个口径写下来:

用 CNEquity 的 Python 接口,取 2016—2024 年沪深 A 股的年度财报与日行情,构建公司—年度面板。
要求:
1. 股票池保留期间退市的公司。
2. 财报按会计年度取年报数据。历史财报是回填的,读取时用 pit_mode="best_effort",
   在 output/sample_log.md 里记录 pit_quality,不要写成严格时点口径。
3. 剔除金融业和 ST 公司前后,分别报告观测数;历史 ST 证据不完整的年份单独列出。
4. 代码写成 code/02_build_panel.py,结果存到 data/derived/,
   并在 output/sample_log.md 记录每一步的观测数和数据版本。

第三步:基准回归与识别策略,用技能套 DID、RD、IV

技能(skill)是一份写给 agent 的操作说明,装上之后,agent 遇到对应任务会按它的步骤做。经管实证可以装 Auto-Empirical-Research-Skills(AERS),README 称由斯坦福 REAP 与 CoPaper.AI 团队维护。它的 Stata 流水线围绕 reghdfe、ivreg2、csdid、sdid、rdrobust 等命令;R 流水线用 fixest、did、HonestDiD,再用 Quarto 出报告。

Auto-Empirical Research Skills (AERS)SkillDID、RD、IV 的 Stata / Python / R 计量流水线,含稳健性检验与出表出图brycewang-stanford/Auto-Empirical-Research-Skills4.6k

README 推荐用 Claude Code 的插件市场安装(需要 Claude Code v2.1 以上),按自己用的软件只装一条流水线:

claude plugin marketplace add brycewang-stanford/Auto-Empirical-Research-Skills
# 用 Stata 的装这条
claude plugin install empirical-analysis-stata@auto-empirical-research-skills
# 用 R 的装这条
claude plugin install empirical-analysis-r@auto-empirical-research-skills

资源页上那条 npx skills add 命令会把整个库装上,README 称有 77 个合集、1,107 个技能。本文不建议这样装,原因有三:

  • 上千个技能会占用 agent 的上下文,也更容易调错技能。怎样控制装的技能数量,见《国内用编码 agent 起步》。
  • 库里带着「降 AIGC」「去水印」类技能。用它们规避学校或期刊的 AI 检测,可能违反学术规范。
  • 库里已经收了第五步的 Econ Writing Skill 和旧版的 AI Research Feedback,再单独装就重复了。已经装了整个库的,第五步不用再装 econ-write;第四步仍要单独装 AI Research Feedback,库里的旧版没有 /audit-analysis 和 /explain-diff。

Stata 流水线要本机装有 Stata。它用到的 reghdfe、ivreg2、csdid 等是社区编写的外部命令,技能会用 ssc install 安装,需要联网,学校机房或内网环境可能装不上。装上的版本记下来,第六步写进复现包的外部命令清单。

提示词里写清识别策略和你要的检验,比只说「帮我跑个 DID」可靠得多:

用 Stata 做多期 DID:处理变量 treat_year 是各省政策实施年份,结果变量是 ln_tfp。
1. 先跑双向固定效应基准回归,标准误聚类到省份。
2. 再用 csdid 做 Callaway–Sant'Anna 估计,画事件研究图,检验平行趋势。
3. 稳健性:替换结果变量、剔除直辖市、安慰剂检验(随机分配政策年份 500 次)。
4. 用 esttab(estout 包)把基准回归和稳健性结果导出成三线表,存到 output/tables/,
   表注写明聚类层级和固定效应。
每个模型都报告估计样本量。不要改主回归设定,想改先问我。

第四步:审计,看样本和代码有没有被悄悄改动

agent 改代码很快,问题也藏得深:merge 后没匹配上的样本被丢掉,destring 加了 force 把字符串变成缺失,缺失值被当成 0。AI Research Feedback 是经济学者 Claes Bäckman 写的一组技能,其中三项正对这些问题:

  • /audit-analysis:把改动交给一个上下文干净的子代理去「找茬」,检查每次筛选、合并前后的样本量,合并键是否唯一,有没有静默失败,以及聚类层级和固定效应。每条发现都要给出文件、行号和原文。
  • /review-paper-code:对照论文里的表格、变量、样本限制和聚类方式,检查代码是否一致。需要 LaTeX 稿件。
  • /explain-diff:把一次代码改动讲成一个网页,重点说明样本和系数变了没有,末尾附 5 道选择题,帮你确认自己真的看懂了。
AI Research FeedbackSkill审计样本量与合并、核对论文与代码是否一致,适合投稿和答辩前用claesbackman/AI-research-feedback497
npx skills add claesbackman/AI-research-feedback --skill '*' -a claude-code -y

要准备的:本机装有 Node.js,项目用 Git 管理(/audit-analysis 和 /explain-diff 需要)。这几项技能不会自动启动,只在你输入斜杠命令时运行。每次让 agent 改完分析代码,就跑一次:

/audit-analysis main

第五步:写作与引用

写英文论文可以装 Econ Writing Skill。它汇总了 Cochrane、McCloskey 等 50 多份经济学写作指南,按 DID、IV、RDD 等 13 种识别策略给出摘要、引言、结论的写法,提醒把系数换算成有经济含义的量,还整理了 AEA 复现包规范和 AI 使用声明的要求。起草时,它会用 [AUTHOR: ...] 标出需要你补具体结果的地方。这些规范来自英文期刊,写中文学位论文时主要借鉴结构上的建议。

Econ Writing SkillSkill按识别策略写引言与结果,附引用核验提醒和 AEA 复现包规范hanlulong/econ-writing-skill664
npx skills add hanlulong/econ-writing-skill --skill econ-write -a claude-code -y

投中文期刊可以看 Awesome Journal Skills。它按期刊分别做成技能包,覆盖《经济研究》《管理世界》《中国工业经济》《数量经济技术经济研究》等中文期刊,帮你对照目标期刊的定位、写作体例和投稿要求改稿。

Awesome Journal SkillsSkill按《经济研究》《管理世界》等目标期刊的定位、体例与投稿要求改稿brycewang-stanford/Awesome-Journal-Skills1.2k

资源页没有给安装命令。按 README,在 Claude Code 里依次输入:

/plugin marketplace add https://github.com/brycewang-stanford/awesome-journal-skills
/plugin install management-world-skills
/reload-plugins

把 management-world-skills 换成你的目标期刊,例如《经济研究》是 economic-research-skills,《中国工业经济》是 china-industrial-economics-skills。它只帮你对照期刊的体例和偏好改稿,不能替代导师把关,改完的稿子要请导师复核。

引用最容易出问题。稳妥的做法是只让 agent 从你自己的 Zotero 文献库里引用。Zotero MCP 可以检索文献库,读取条目信息和 BibTeX。要准备的:Python 3.10 以上和 uv(命令里的 uvx 来自 uv),并在 Zotero 7 以上版本的「设置 → 高级」里勾选允许本机其他应用与 Zotero 通信的选项。

Zotero MCPMCP让 agent 只从你的 Zotero 文献库里找文献、导出 BibTeX54yyyu/zotero-mcp5.4k
claude mcp add -e ZOTERO_LOCAL=true zotero -- uvx zotero-mcp-server

README 还提到,Claude Code 这类能运行命令的 agent,可以改用它自带的技能方式,占用的上下文更少。这要先把包装到本机:运行 uv tool install zotero-mcp-server(或 pip install zotero-mcp-server),再运行 zotero-mcp install-skill。

用 econ-write 改写 paper/intro.tex 的文献综述段。
只能引用我 Zotero 库「毕业论文」分类里的文献,BibTeX 从库里导出;
库里找不到支撑的论断,标成 [需补文献],不要自己编作者、年份或期刊。

第六步:整理复现包

复现包的目标是:别人拿到你的文件夹,按 README 一步步运行,能得到论文里的每一张表和图。多家社会科学期刊的数据编辑维护着一份 README 模板,列出了要写的内容:数据来源与可得性、软件版本与运行时间、每个程序做什么、运行顺序,以及每张表、每张图由哪个程序生成。模板还提醒,数据可能受数据使用协议等限制,作者要确认自己有权分发。商业数据库的原始数据能不能放进复现包,要看学校与数据商签的协议;不能放的,就写清获取方式。CNEquity 的 README 也写明,数据另受上游许可约束。

用 R 或 Python 的同学,可以用 Quarto 把代码、结果和文字放进同一个文档,quarto render 一次生成 HTML、PDF 或 Word。Quarto 到官网按操作系统下载安装。用 Stata 的同学,复现包的核心是一个按顺序调用全部 do 文件的总控脚本。

QuartoCLI把 R / Python 代码、结果和文字编成能从头重跑的报告quarto-dev/quarto-cli6.1k
按 social-science-data-editors 的 README 模板,为这个项目整理复现包:
1. 写 code/00_master.do,按顺序调用全部 do 文件,开头统一设定随机数种子和路径。
2. 写 README.md:数据来源与获取方式(CSMAR 数据只写获取路径,不放原始文件)、
   Stata 版本与外部命令清单、运行时间、每张表图对应的程序。
3. 在新的 Stata 会话里从头运行 00_master.do,把生成的表格和 output/ 里现有的逐项比对,
   列出所有不一致的地方。

从哪开始

你现在的情况先装第一件事
用 Stata,学校有 17 以上的正版Stata MCP让 agent 跑一个你已经跑通的 do 文件,核对结果
用 Stata,版本低于 17不用装让 agent 用批处理模式跑 do 文件,再读 .log 日志
用 R先不用装;要看会话里的数据,再装 mcptools 和 btw让 agent 用 Rscript 跑一个你已经跑通的脚本
做 A 股公司金融、会计CNEquity先跑 demo;正式库用 cne init --profile full,财报另外回填
做美国宏观FRED MCP Server申请免费 API Key,取一条序列试试
结果已经出来,准备投稿或答辩AI Research Feedback用 Git 管好代码,跑一次 /audit-analysis
要写英文论文Econ Writing Skill、Zotero MCP先改引言,引用只从 Zotero 库里取
投中文期刊Awesome Journal Skills装上目标期刊的技能包,对照体例改引言

局限与风险

AI 主导的验证并不可靠。 Brodeur 等人 2026 年 5 月在 PNAS 发表的随机实验,把 288 位研究者分成 103 个团队,复现顶尖社科期刊上已发表的结果:纯人工团队复现成功率 94%,用 ChatGPT 辅助的团队 91%,由 ChatGPT 主导、人很少介入的团队只有 37%;纯人工团队找出的重大代码错误也明显多于 AI 辅助团队。这项实验用的是 ChatGPT,不是 Claude Code,作者也说 37% 大概只代表 AI 能力的下限。但结论很清楚:主导权要留在你手里,agent 的每一步都要能被你检查。

样本会被悄悄删掉。 让 agent 在每次筛选、合并后报告观测数并写进日志;每次改动后跑一遍审计,再自己核对一遍描述统计表的样本量。

引用可能是编造的。 Elsevier 的 AI 政策直接提醒,AI 生成的参考文献可能不准确,甚至是编造的。每一条都要回到知网、Google Scholar 或期刊官网核对原文。

跑设定变得太容易。 agent 几分钟就能跑上百种设定,只挑显著的报告就是 p-hacking(反复换设定直到结果显著)。先把主设定定下来写进 CLAUDE.md,稳健性检验不管结果如何都如实报告。

数据安全。 agent 读取的文件内容会作为上下文发给你所用的模型服务。含个人信息的调查数据、签了保密协议的微观数据,不要让它读;先看清数据使用协议。

投稿和送审要声明 AI 的使用。 以 Elsevier 为例:AI 用于研究过程(包括写代码、数据分析),要在方法部分说明;用于撰写稿件,要单独写一段 AI 使用声明;AI 不能列为作者。中文期刊和各校研究生院的规定各不相同,投稿和提交学位论文前,查清目标期刊与本校的最新要求。

结论由你和导师负责。 这些工具只做辅助:识别策略是否成立、结果怎么解释,要由你判断,并请导师复核。

经管实证:Stata、R 与计量论文流程给经济学、管理学、金融学的研究生与青年教师:先取 A 股与宏观数据,再让 agent 在 Stata、R 或 Python 里清洗、回归,套用 DID(双重差分)、RD(断点回归)、IV(工具变量)等识别策略并做稳健性检验,最后按经济学写作规范与目标期刊体例成稿。Stata MCP 需 Stata 17 以上正版,也可只用 R 或 Python。公开来源的数据要抽查;CSMAR、Wind 等授权数据和调查微观数据,先看协议是否允许发给模型服务商;agent 可能悄悄删样本、改设定,每一步都要核对样本量与系数;结论由作者负责,投稿时按期刊要求声明 AI 的使用。查文献见「通用科研」合集。10 個資源
通用科研:查文献、读论文、写论文不分学科都用得上的科研工具:跨库检索与管理文献、做系统综述,读懂与翻译论文,选对统计方法,再到论文写作、润色与 LaTeX 排版。涉及引用与数据的结果,都要回到原文核对。10 個資源
Markdown 版本(供 agent 讀取)