实操案例:用 Claude Code 做一次面板回归

从一份经典投资面板,到数据检查、混合 OLS 与固定效应对比、作图、报告的完整闭环

🕐 预计用时 40–60 分钟 🎯 难度 实操 🧰 Claude Code + R 📊 真实面板数据闭环

提示本案例你会做出什么

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

在 GitHub 仓库 LyuZhichong/ai-for-research 页面,点右上角绿色 Code 按钮(红框),再点 Download ZIP(红框)下载整个仓库

项目结构:

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 帮你核实」的价值。

小心区分两个版本:在 RStudio 里用 data(“Grunfeld”, package=“plm”) 取到的是 200 行、10 家、列名 inv(上图);而本案例的 data/grunfeld.csv 是 220 行、11 家、列名 invest。以数据检查报出的真实数字为准

3 分析要做三件事

  1. 数据检查:行列数、每列数据类型、缺失值、描述统计,并确认这是不是一个平衡面板(11 家公司 × 20 年 = 220 行)。
  2. 回归对比:以 invest 为被解释变量、valuecapital 为解释变量,先跑混合 OLS,再跑固定效应(控制公司个体差异,用 plm 的 within 模型),把两组系数放在一起对比。
  3. 作图investyear 变化、按公司(firm)分面的折线图,用 ggplot2 画。

具体口径与验收标准,都写在项目的 README.md 里。

注记为什么要对比 OLS 和固定效应

混合 OLS 把 11 家公司的数据”一锅烩”,忽略了公司之间的规模、行业、经营风格差异(个体效应)。固定效应”吸收”掉这些不随时间变化的公司差异,让我们更干净地识别出 valuecapital 对投资的影响。对比两者的系数怎么变,本身就是一堂生动的计量课——如果控制个体效应后系数明显变化,说明”企业异质性”确实在起作用。这一点务必在提示词里对 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 包」。这样之后每一步它都基于这些约定来做,不用反复交代。

在案例文件夹里输入 claude 启动(本例模型为 deepseek-v4-pro),并交代项目背景;可用 /init 生成 CLAUDE.md 作为项目记忆

4.2 第 1 步:先让它给计划(计划模式)

Shift+Tab 把 Claude Code 切到 计划模式(只读不改、先给方案),底部会显示 plan mode on。然后粘贴:

请阅读 README.md 和 data/grunfeld.csv 的前几行,给出一份执行计划:
数据检查怎么做、混合 OLS 与固定效应分别怎么估、图怎么画、生成哪些文件。
先不要写代码、不要改文件。

计划模式下(绿框 plan mode on)粘贴让它”先出计划、先别动手”的提示词(红框)。注意上方它已复述记住的项目信息——data/grunfeld.csv、11 家 / 220 行、混合 OLS vs 个体固定效应——以真实数据为准报出了正确的 11 家 220 行

4.3 第 2 步:你来确认和补充

看计划对不对、有没有漏,补上最关键的口径——固定效应怎么设、报告要讲什么

计划可以。强调两点:
1. 固定效应用 plm 的 within 模型,index = c("firm","year");
   和混合 OLS 的系数放一起对比。
2. 报告里要解释:控制企业固定效应后,value 和 capital 的系数如何变化、说明什么。
按这个计划执行。
重要R 里最容易出错的一步:说清固定效应

lm(invest ~ value + capital)混合 OLS,不含任何固定效应;要控制公司个体差异,必须用 plm(..., model = "within", index = c("firm","year"))。这一步不写清,AI 很可能只给你一个”能跑但没控制个体效应”的模型。这正是「不报错 ≠ 做对了」的典型场景。

4.4 第 3 步:它会自动开始执行

提示注意:确认计划后会自动切换,不用手动切模式

在计划模式里,当你认可方案、发出「按这个计划执行」后,Claude Code 会弹出确认选项——选第一项(同意执行)后,它会自动退出计划模式、开始动手,你不需要再手动按 Shift+Tab 切模式。(如果你想让它连续放行、少打扰,可以在确认时选「自动接受编辑」,底部会显示 auto mode on。)

确认计划时 Claude Code 弹出的选项:1. Yes, and use auto mode(同意并自动执行)/2. Yes, manually approve edits/3. Tell Claude what to change。选第一项就自动进入执行,不用再手动切模式

它自动开始执行后,会把任务拆成一个 待办清单(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 先安装。
提示装包会用到 CRAN 镜像

如果环境里还没装 plmggplot2,AI 会执行 install.packages("plm") 之类的命令。只要你在 R 环境搭建 里配好了清华 TUNA 等国内 CRAN 镜像,这一步会很快;否则直连海外服务器可能又慢又容易失败。这是 R 版对应公开课二「conda 优先」的位置——先把下载源配对,再让 AI 装包

执行中(底部 auto mode on):AI 按待办清单逐个写出 code/01_check.R、code/02_reg.R,运行并在终端打印结果

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

执行完成后自查:公司数 11、样本量 220、平衡面板,value 与 capital 系数显著为正;并列出生成的 code/01_check.R、02_reg.R、report.md、invest_trend.png 等文件

4.5 第 4 步:你来检查(对照验收标准)

请对照 README.md 的「验收标准」逐条自查,在 report.md 末尾列检查清单:
公司数是否为 11、样本量是否为 220、是否平衡面板、value/capital 系数是否都显著为正、
固定效应与混合 OLS 的差异是否讲清楚、invest_trend.png 是否生成。
对不上的地方指出并修正。

最后这一步最容易被忽略,却最关键:“不报错”不等于”做对了”。让 AI 对照 README.md 的验收标准逐条自查,它会在 report.md 末尾列一张”预期 vs 实际”的对照表,每条打勾 ✓。你只要扫一眼这张表,就能确认结果可信——特别是公司数是不是 11、样本量是不是 220,这两条正好呼应前面那个”数据版本”的坑,一定要亲自核。

生成的 outputs/report.md:数据检查一节列出行数 220、公司数 11(含 American Steel 等)、年份 1935–1954、各列类型与缺失值,后接混合 OLS 与固定效应的系数对比

打开生成的 report.md,就是一份结构清晰、可复现的数据检查 + 回归对比报告:数据概览、变量类型、缺失情况、平衡面板判断、两模型系数对比、图的解读一应俱全。把数据换成你自己的面板,这份报告的骨架完全能复用。

5 你会得到的参考结果

跑通后,outputs/ 里会有报告、分面折线图(invest_trend.png)等。关键结果长这样——混合 OLS 与固定效应对比(被解释变量 invest,N = 220):

两模型系数对比(示例数字,以你自己跑出的 report.md 为准)
变量 混合 OLS 固定效应(控制公司)
value 0.115 (t≈20.8) 0.117 (t≈9.0)
capital 0.228 (t≈9.4) 0.351 (t≈16.7)

怎么读这张表

  • valuecapital 的系数在两种模型里都显著为正——公司市场价值越高、资本存量越大,投资越多,符合经典结论。
  • value 的系数几乎没变(0.115 → 0.117),说明市场价值对投资的影响在公司之间和公司内部是一致的。
  • capital 的系数明显变大(0.228 → 0.351):混合 OLS 低估了资本存量的投资效应;控制掉公司个体差异后,效应才显现出来。这就是”为什么要上固定效应”的最好例证。
  • 报告里还会给出 pFtest() / plmtest() 等检验:F 检验强烈拒绝”混合 OLS 够用”,个体效应显著存在——固定效应模型更可靠
注记

本页只给出定性结论与示例数字。精确的系数值、标准误、R² 以你在自己机器上跑出的 report.md 为准。

各公司投资趋势investyear、按公司分面):

outputs/invest_trend.png:11 家公司投资随时间(1935–1954)变化的分面折线图。各公司投资趋势与量级差异明显——General Motors、US Steel 量级远高于 Diamond Match、American Steel

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

附加:投资(invest)对市场价值(value)的散点图,按公司着色,每家公司一条 OLS 拟合线——整体呈明显正相关,且不同公司分层清晰
注记✅ 完成的标志
  • outputs/report.md 里的公司数(11)、样本量(220)、平衡面板判断、系数方向(正、显著)能对上;
  • 报告确实对比了混合 OLS 与固定效应,并讲清了 capital 系数为何变大;
  • outputs/invest_trend.png 能打开、11 家公司分面清晰;
  • 你能用一句话说清结论,并复述 Claude Code 每一步做了什么。

做完这个案例,你就完整体验了「用提示词驱动 Claude Code、在真实面板数据上做出可复现回归分析」的工作流。把数据换成你自己的研究数据、把模型换成你的设定,流程完全一样。完整提示词见 提示词模板 页。