实操案例:用 Claude Code 做一次面板回归
从一份经典投资面板,到数据检查、混合 OLS 与固定效应对比、作图、报告的完整闭环
用 Claude Code + R,对一份经典公开数据(Grunfeld 投资面板)完成:数据检查 → 混合 OLS 与固定效应回归对比 → 一张图 → 一份结果报告。全程用「计划 → 确认 → 执行 → 检查」的方式驱动 AI,你负责把关,AI 负责落地。这套流程和公开课二的 Python 案例 一模一样,只是把语言换成了 R、把工具换成了功能更强的 Claude Code。
1 先下载案例项目
案例是一个规范的项目文件夹,数据、任务说明书、分步提示词都备好了:
- 下载:github.com/LyuZhichong/ai-for-research → 右上角
Code → Download ZIP,解压后进入cases/grunfeld-r-claudecode/。 - 或用 git:
git clone https://github.com/LyuZhichong/ai-for-research.git

项目结构:
grunfeld-r-claudecode/
├── README.md # 任务说明书:目标、数据、要求、验收标准
├── data/grunfeld.csv # 原始数据(11 家公司、220 行)
├── prompts.md # 分步提示词(照着粘贴给 Claude Code)
├── code/ # 分析脚本(由 AI 生成)
└── outputs/ # 结果写在这里(由 AI 生成)
2 这份数据是什么
Grunfeld 投资数据是计量经济学里最经典的面板数据集之一,常用来讲固定效应模型。本案例用的这份 data/grunfeld.csv 记录了 11 家美国大公司、1935–1954 年、每年一期,共 220 个平衡面板观测(每家公司都有完整的 20 年)。核心变量:
| 变量 | 含义 |
|---|---|
firm |
公司名(11 家:General Motors、US Steel、General Electric …) |
year |
年份(1935–1954) |
invest |
当年总投资(被解释变量) |
value |
公司市场价值(上一年年末) |
capital |
资本存量(厂房设备,上一年年末) |
经典的研究问题是:公司投资由什么驱动? 一个基准假说是,市场价值越高(value,反映市场对公司前景的评价)、已有资本存量越大(capital),投资越多。
Grunfeld 有两个流传版本:R 的 plm 包自带的是 10 家公司 / 200 行(历史上有一家公司的数据被认为有误,被剔除了);而完整的原始版本是 11 家 / 220 行。本案例用的 grunfeld.csv 是完整的 11 家 / 220 行版本。
这正是本案例想让你体会的一点:任务说明书里的数字也可能写错,别想当然。 数据检查这一步,让 AI 直接用 str()、nrow()、table(firm) 把真实的行数与公司数报出来,和你脑子里”以为的数字”核对——对不上就要停下来查清楚,而不是带着错误假设一路往下算。这就是「让 AI 帮你核实」的价值。

3 分析要做三件事
- 数据检查:行列数、每列数据类型、缺失值、描述统计,并确认这是不是一个平衡面板(11 家公司 × 20 年 = 220 行)。
- 回归对比:以
invest为被解释变量、value与capital为解释变量,先跑混合 OLS,再跑固定效应(控制公司个体差异,用plm的 within 模型),把两组系数放在一起对比。 - 作图:
invest随year变化、按公司(firm)分面的折线图,用 ggplot2 画。
具体口径与验收标准,都写在项目的 README.md 里。
混合 OLS 把 11 家公司的数据”一锅烩”,忽略了公司之间的规模、行业、经营风格差异(个体效应)。固定效应”吸收”掉这些不随时间变化的公司差异,让我们更干净地识别出 value、capital 对投资的影响。对比两者的系数怎么变,本身就是一堂生动的计量课——如果控制个体效应后系数明显变化,说明”企业异质性”确实在起作用。这一点务必在提示词里对 AI 说清楚。
4 跟着做:五步跑通
在 grunfeld-r-claudecode/ 文件夹里启动 Claude Code,照下面走。核心节奏是 计划 → 确认 → 执行 → 检查:你把关方向,AI 负责落地。下面每步的提示词都可直接复制(项目的 prompts.md 里也有一份)。
本页用的是经 CC-Switch 接入的 DeepSeek 模型(deepseek-v4-pro)。接入方式见 Claude Code 与国产模型接入。如果你有 Claude 官方会员,直接用官方模型效果更好,操作完全一样。
4.1 第 0 步:让它建立项目记忆
在项目文件夹里输入 claude 启动,然后输入:
/init
/init 会让 Claude Code 通读项目、生成 CLAUDE.md(每次启动自动读取的项目记忆)。生成后可以补一句规则,例如「原始数据 data/ 不得修改;面板回归用 plm 包」。这样之后每一步它都基于这些约定来做,不用反复交代。

4.2 第 1 步:先让它给计划(计划模式)
按 Shift+Tab 把 Claude Code 切到 计划模式(只读不改、先给方案),底部会显示 plan mode on。然后粘贴:
请阅读 README.md 和 data/grunfeld.csv 的前几行,给出一份执行计划:
数据检查怎么做、混合 OLS 与固定效应分别怎么估、图怎么画、生成哪些文件。
先不要写代码、不要改文件。

4.3 第 2 步:你来确认和补充
看计划对不对、有没有漏,补上最关键的口径——固定效应怎么设、报告要讲什么:
计划可以。强调两点:
1. 固定效应用 plm 的 within 模型,index = c("firm","year");
和混合 OLS 的系数放一起对比。
2. 报告里要解释:控制企业固定效应后,value 和 capital 的系数如何变化、说明什么。
按这个计划执行。
lm(invest ~ value + capital) 是混合 OLS,不含任何固定效应;要控制公司个体差异,必须用 plm(..., model = "within", index = c("firm","year"))。这一步不写清,AI 很可能只给你一个”能跑但没控制个体效应”的模型。这正是「不报错 ≠ 做对了」的典型场景。
4.4 第 3 步:它会自动开始执行
在计划模式里,当你认可方案、发出「按这个计划执行」后,Claude Code 会弹出确认选项——选第一项(同意执行)后,它会自动退出计划模式、开始动手,你不需要再手动按 Shift+Tab 切模式。(如果你想让它连续放行、少打扰,可以在确认时选「自动接受编辑」,底部会显示 auto mode on。)

它自动开始执行后,会把任务拆成一个 待办清单(Todos):装包 → 写 code/01_check.R → 运行 → 整理进 report → 写 code/02_reg.R → 跑回归与作图 → 补进 report,然后逐条执行。每写完一个文件、每跑完一次,它都会在终端里打印结果并简要说明——你能看着它一步步”干活”,而不是一个黑盒。
若想把执行指令写得更细,也可以补一句:
按计划执行:
1. 写 code/01_check.R 做数据检查并运行,结果整理进 outputs/report.md。
2. 写 code/02_reg.R 跑混合 OLS 与固定效应回归、作分面折线图并运行,
把两模型系数对比表和图的说明补进 report.md。
每写完一个文件说明它做了什么;如缺 plm/ggplot2 先安装。
如果环境里还没装 plm 或 ggplot2,AI 会执行 install.packages("plm") 之类的命令。只要你在 R 环境搭建 里配好了清华 TUNA 等国内 CRAN 镜像,这一步会很快;否则直连海外服务器可能又慢又容易失败。这是 R 版对应公开课二「conda 优先」的位置——先把下载源配对,再让 AI 装包。

跑完后,code/ 与 outputs/ 里会生成分析脚本、图和报告,AI 也会给出一段自查——样本量 220、11 家公司、平衡面板,value 与 capital 的系数都显著为正。这些结论和 README.md 里写的验收标准一致,说明分析跑对了。

4.5 第 4 步:你来检查(对照验收标准)
请对照 README.md 的「验收标准」逐条自查,在 report.md 末尾列检查清单:
公司数是否为 11、样本量是否为 220、是否平衡面板、value/capital 系数是否都显著为正、
固定效应与混合 OLS 的差异是否讲清楚、invest_trend.png 是否生成。
对不上的地方指出并修正。
最后这一步最容易被忽略,却最关键:“不报错”不等于”做对了”。让 AI 对照 README.md 的验收标准逐条自查,它会在 report.md 末尾列一张”预期 vs 实际”的对照表,每条打勾 ✓。你只要扫一眼这张表,就能确认结果可信——特别是公司数是不是 11、样本量是不是 220,这两条正好呼应前面那个”数据版本”的坑,一定要亲自核。

打开生成的 report.md,就是一份结构清晰、可复现的数据检查 + 回归对比报告:数据概览、变量类型、缺失情况、平衡面板判断、两模型系数对比、图的解读一应俱全。把数据换成你自己的面板,这份报告的骨架完全能复用。
5 你会得到的参考结果
跑通后,outputs/ 里会有报告、分面折线图(invest_trend.png)等。关键结果长这样——混合 OLS 与固定效应对比(被解释变量 invest,N = 220):
| 变量 | 混合 OLS | 固定效应(控制公司) |
|---|---|---|
value |
0.115 (t≈20.8) | 0.117 (t≈9.0) |
capital |
0.228 (t≈9.4) | 0.351 (t≈16.7) |
怎么读这张表:
value与capital的系数在两种模型里都显著为正——公司市场价值越高、资本存量越大,投资越多,符合经典结论。value的系数几乎没变(0.115 → 0.117),说明市场价值对投资的影响在公司之间和公司内部是一致的。capital的系数明显变大(0.228 → 0.351):混合 OLS 低估了资本存量的投资效应;控制掉公司个体差异后,效应才显现出来。这就是”为什么要上固定效应”的最好例证。- 报告里还会给出
pFtest()/plmtest()等检验:F 检验强烈拒绝”混合 OLS 够用”,个体效应显著存在——固定效应模型更可靠。
本页只给出定性结论与示例数字。精确的系数值、标准误、R² 以你在自己机器上跑出的 report.md 为准。
各公司投资趋势(invest 随 year、按公司分面):

如果让 AI 顺手再画一张 invest 对 value 的散点图(按公司着色、叠加各公司拟合线),能更直观地看到”市场价值越高、投资越多”的正相关:

outputs/report.md里的公司数(11)、样本量(220)、平衡面板判断、系数方向(正、显著)能对上;- 报告确实对比了混合 OLS 与固定效应,并讲清了
capital系数为何变大; outputs/invest_trend.png能打开、11 家公司分面清晰;- 你能用一句话说清结论,并复述 Claude Code 每一步做了什么。
做完这个案例,你就完整体验了「用提示词驱动 Claude Code、在真实面板数据上做出可复现回归分析」的工作流。把数据换成你自己的研究数据、把模型换成你的设定,流程完全一样。完整提示词见 提示词模板 页。