上一篇我们系统介绍了如何用 PyFixest 做实证分析。
Stata 用户的 Python 迁移指南:从 reghdfe 到 PyFixest
这一篇解决下一个问题:你学会了,但怎么让 AI 也写出规范的实证代码?
你已经掌握了 PyFixest 的语法,开始用 AI 辅助写回归脚本。但你很快发现:AI 给的代码虽然能跑,但经不起审稿人的推敲。
常见的问题类型:
# AI 经常这样写——没有指定标准误,用默认的 iidfit = pf.feols("Y ~ treatment | firm + year", data=df)实证论文里这样写会被直接打回来。面板数据几乎必须聚类,但 AI 不知道你的识别策略,也不知道应该按哪个维度聚类。
# AI 认为这就等价于 Stata 的 reghdfe + cluster(firm)fit = pf.feols("Y ~ X1 | firm + year", data=df, vcov={"CRV1": "firm"})结果和 Stata 的数字对不上。原因在于 PyFixest 和 Stata 在双维聚类时默认用的自由度调整方法不同——AI 完全不知道这件事。
# AI 经常这样写,但 PyFixest 会报语法错误fit = pf.feols("Y ~ | firm + year | endog ~ Z1 + Z2", data=df)# 正确写法应该是fit = pf.feols("Y ~ 1 | firm + year | endog ~ Z1 + Z2", data=df)无外生控制变量时,第一部分不能为空,必须写 1 占位。AI 不知道这个 PyFixest 特有的语法规则。
# AI 不会主动检查,但 PyFixest 会直接报错fit = pf.feols("Y ~ X1", data=df, vcov={"CRV1": "cluster_var"})# 如果 cluster_var 有 NaN → ValueErrorStata 对这个静默处理,PyFixest 不行。AI 按 Stata 逻辑写代码,就会踩坑。
# 没有 ref=-1,所有时期系数都会被估计,无法做预趋势检验fit = pf.feols("Y ~ i(rel_year) | id + year", data=df)# 必须明确指定参考期fit = pf.feols("Y ~ i(rel_year, ref=-1) | id + year", data=df)这些问题有一个共同来源:AI 缺乏实证研究的规范意识。
大语言模型的知识来自互联网上的代码和文档。它知道 PyFixest 的基础语法,但它不知道:
更关键的是,AI 没有"实证工作流"的概念——从基准回归、稳健性检验、异质性分析到 IV 诊断,每一步该做什么、该输出什么,它并不清楚。
直接问 AI "帮我写一个 DID 回归",它给你的是一个能跑的代码片段,不是一个经得起审查的实证流程。
解决这个问题的方法是给 AI 配置一个专用知识模块,在它开始写实证代码之前,自动加载相关的规范和注意事项。
这就是 Skill——一种针对特定任务场景的持久化指令文件。

Skill 文件存放在固定位置(Claude Code 的 ~/.claude/skills/ 目录),当 AI 检测到你的请求涉及实证回归时,自动读取其中的规范约束和参考资料,然后再生成代码。
这个过程对用户完全透明——你只需要像平常一样提问,AI 会自动在内部走规范流程。
pf.ssc() | ||
这个 skill 包含四个专题参考文件,按需加载,不会一次性占用所有上下文:
涵盖 PyFixest 完整的公式语法体系:
| 分隔符的三段式结构(因变量 / 固定效应 / IV)csw0() / csw() / sw() / sw0() 批量估计语法i() 事件研究交互项的正确写法C() 与固定效应吸收的区别逐命令对照 Stata reghdfe / ivreghdfe / ppmlhdfe,覆盖:
标准误类型和推断方法的完整菜单:
wildboottest)ritest)差分中差分和事件研究的完整规范:
event_study() 统一 API 的使用方法iplot() 事件研究图的输出规范pyfixest_helpers.py 提供一组实用函数:
check_cluster_na(df, cluster_vars) # 检查聚类变量缺失值create_relative_time(df, event_col) # 构造事件研究相对时间diagnose_iv(fit_iv) # IV 诊断报告(第一阶段 F、有效 F)compare_se_types(fit) # 对比不同标准误类型的结果export_etable_to_latex(fits, path) # 快速导出 LaTeX 回归表将 skill 克隆到 Claude Code 的全局 skills 目录,运行一次安装脚本即可:
git clone https://github.com/luzhiyu-econ/pyfixest-empirical ~/.claude/skills/pyfixest-empiricalcd ~/.claude/skills/pyfixest-empirical./install.sh重启 Claude Code 后生效。之后每次涉及 PyFixest 相关任务,skill 会自动触发

将 skill 克隆到你的项目目录下:
cd /path/to/your-projectgit clone https://github.com/luzhiyu-econ/pyfixest-empirical .codex/skills/pyfixest-empiricalcd .codex/skills/pyfixest-empirical./install.shcd ~/.claude/skills/pyfixest-empiricalgit pull && ./install.shinstall.sh 是幂等的,重复运行安全。

GitHub 仓库: github.com/luzhiyu-econ/pyfixest-empirical
仓库包含完整的 skill 文件、参考手册和辅助脚本,MIT 许可,可自由使用和修改。