flowchart TB src["hansenEM 原文<br/>定理 / 表图 / 随书脚本"] src --> emp["实证轨<br/>R / Stata 复现"] src --> l1["理论 L1<br/>教学展开"] l1 --> l2["理论 L2<br/>计算核对"] l1 -.-> l3["理论 L3<br/>Lean 证书<br/>尚未开工"]
实证复现与 Lean 考证
技术栈、路线图与落地方案
本文是《Hansen计量评注》的方法页,不是 Lean 子工程,也不是教材正文。当前不建立 Lean 仓库;先把双轨目标、参照项目、技术栈与验收标准写清楚,再按章推进。面向教师的系统教程(范式差异、历史、类型论、技术栈、工作流、结果解释、计量路径)在栏目 Lean 形式化,源稿目录 block-lean/。
1 为何放在 hansenpeer
| 问题 | 结论 |
|---|---|
| 这份 qmd 写在哪? | 本仓库 block-ext/stack-roadmap.qmd,挂在「思考扩展」 |
为何不放 hansenEM? |
hansenEM 是 Hansen (2022年) 双语源稿站点;路线图属于评注方法,不应混入 chapters_eng/ / chapters_chn/ |
| 教材侧如何看见? | hansenEM 的「开发声明」只保留一条指向本页的入口,避免两份正文 |
双仓库分工不变:定理与表图的原文在 hansenEM(chapters_eng/、hansen-programs/、hansen-data/);复现脚本、逐步证明、本章清单写在本仓库。跨仓库用章节号对齐。日后若做 Lean,另开独立 git,不要写进 _book/ 或 hansenEM/_site/。
2 双轨目标
- 实证轨:用可编程脚本复现书中表、图与系数;先跑通作者公开程序,再独立实现并对照数字。
- 理论轨:把教材省略的推导展开,使师生能逐步核验。默认交付是 L1(Quarto 证明笔记);L2 是 R 可算的代数/模拟;L3 才是 Lean。未做 L3 时,不写「已形式化证明」。
3 两个参照仓库
3.1 lean-hansen-econometrics
社区项目 mostlyharmfuleconometrics/lean-hansen-econometrics 按章形式化 Hansen 的数学结果,目标是可复用 API(Application Programming Interface,可调用的程序接口)与原文对照表,而不是逐句翻译教材。
公开状态(以该仓库 README 为准):第 2–13 章有 Lean 模块并被根库导入;第 1、14–29 章多为 inventory(定理清单);没有任何一章被标成「整章完成」。工具链钉在 Lean 4.29.0 与 Mathlib(Lean 的数学库)v4.29.0。
对我们可直接搬用的方法:
- 先 inventory,再证明。 每章一份
inventory/chN-inventory.md:印刷陈述、假设、Lean 目标、缺口。空单元格表示未做,不要虚构定理名。 - 分层 API。
LinearAlgebraUtils/ProbabilityUtils/AsymptoticUtils为可复用层;章文件给出 Hansen 记号的薄包装。 - 印刷陈述可能过强或有误。 该库在第 11、12、13 章显式区分字面陈述、修正陈述与诊断性反例。我们的 L1 笔记同样必须标出「原文 vs 采用的条件」。
- 有限样本普通最小二乘(OLS, Ordinary Least Squares)的三种全函数化。 Base(要求 \(X'X\) 可逆)、Star(奇异时走
nonsingInv)、OrZero(教材对外包装)。渐近证明用 Star,章末可引用的陈述用 OrZero。 - 对照表 + 门禁。 定理编号 ↔︎ Lean 声明;
lake build与 Mathlib 风格检查进 CI(Continuous Integration,持续集成);另有 redundancy / hygiene / faithfulness / proof-quality 四维审阅(冗余、卫生、保真、证明质量)。
不要整库 fork 进本仓库。我们的差异化是中文教学展开、实证数字复现,以及 Cursor 双仓库协同。该库是对照与借鉴对象。
3.2 NavierStokesAndEuler
OpenAI 仓库 openai/NavierStokesAndEuler 为分析论文提供 Lean 4 证书。工具链为 Lean 4.34.0-rc2 + Mathlib 同标签;sorry_count: 0。根目录 formalization.yaml 把论文定理、Lean 声明、文件路径、公理(propext 命题外延、Classical.choice 选择公理、Quot.sound 商类型)写成机器可读元数据。Comparator(对照检查器)挑战把陈述接到独立参考(DeepMind Formal Conjectures 中的 Navier–Stokes 表述),用第二套检查器跑 lake exe comparator。
公告中的工作顺序是:多智能体先写分析证明,再用另一模型编成 Lean。公开结果对应 Clay 表述中带光滑外力的 C/D,不是无外力的 A/B。内核只保证「这个形式陈述可从给定公理推出」,不保证「这个陈述就是原问题」。
对计量评注的迁移:
| 他们 | 我们 |
|---|---|
| 分析 PDF + Lean 证书拆开 | L1 笔记 +(将来)L3 lake build |
formalization.yaml 对齐论文定理 |
章 inventory 对齐 Hansen 定理号 |
| Comparator 对照独立问题陈述 | 对照 hansenEM/chapters_eng 原文 |
| 不申领超范围结论 | 不把 L1/L2 说成形式化证明 |
| 上万并发智能体 | 不模仿;用 Cursor 读原文、跑脚本、一次钉一条定理 |
4 技术栈
4.2 实证轨
| 组件 | 用途 |
|---|---|
R(≥ 4.2)+ renv |
主实现与可重复环境 |
| Stata | 对照作者 .do,不是默认主实现 |
| Quarto / knitr | 把估计结果写进 .qmd |
| 作者数据与程序 | hansenEM/hansen-data/、hansenEM/hansen-programs/,或 Hansen 官网 zip |
| 教材侧轻量复现 | hansenEM/replication/(贴近书中表图) |
| 评注侧独立实现 | 本仓库 part*/、Rscript/、code/ |
验收:同一表号下并列「教材数字 | 作者脚本 | 本仓库脚本」,差异必须解释(异方差一致(HC, heteroskedasticity-consistent)标准误公式、自由度、软件默认值、样本筛选)。只改作者脚本却声称独立复现,不算通过。
4.3 理论轨
| 层 | 栈 | 现在做不做 |
|---|---|---|
| L1 教学展开 | Quarto + LaTeX;假设清单与引理拆分 | 做 |
| L2 计算核对 | R 矩阵恒等式、有限样本模拟 | 命题可算时做 |
| L3 逻辑证书 | 日后:elan(工具链管理器)+ Lean 4 + Mathlib + Lake(Lean + Make,包与构建);lean-toolchain 与 Mathlib 同标签钉死;lake exe cache get && lake build |
暂不做子工程 |
L3 若开工,版本跟当时的 Mathlib 稳定标签走,不必绑定参照仓库的 4.29.0 或 4.34.0-rc2。Mathlib 与 Lean 必须锁在一起。社区安装见 Lean projects。
L3 目录原则(预告,不是现在创建):独立 git;根库 import 表面;inventory/ 为对照真相源;Lean 源与 Quarto 评注分开放。不要把 .lean 塞进本仓库 _book/ 或教材章节。
5 路线图
阶段可以并行,但依赖关系不要反着走。
5.1 阶段 0:方法冻结(本页)
- 双仓库职责、三层证书、两个参照项目的可迁移点写进本页与
.cursor规则。 - 不初始化 Lean 工程,不把 Mathlib 源码拷进仓库(vendor)。
5.2 阶段 1:章清单(仍无 Lean)
对准备动手的章,在本仓库写 Markdown inventory(建议 inventory/chNN.md,需要时再加):
- Hansen 定理/定义/假设编号
hansenEM对应.qmd路径- L1 笔记路径、实证脚本路径
- 印刷陈述是否过强;Lean 目标列先留空
优先第 2–4 章(条件期望、OLS 代数、有限样本)和第 4、12 章实证(工资例、Card 工具变量(IV, Instrumental Variables))。
5.3 阶段 2:实证独立化
- 打开教材表/图与假设。
- 跑通
hansen-programs。 - 在本仓库重写 R 实现。
- 填对照表。
- 扩展(别的标准误、别的样本)与「书中结论」分开写。
近期样本:part01-reg/chpt04-empirical-example.qmd 与教材第 12 章 IV(hansenEM/replication/chpt12-iv/ 已有轻量复现,评注侧补独立实现与讨论)。
5.4 阶段 3:L1 证明展开
按「先代数、后渐近」:
- 第 3 章:正规方程、投影 \(P\) 与歼灭子 \(M\)、Frisch–Waugh–Lovell(FWL)定理、leave-one-out(逐一剔除;本仓库已有记号与 leave-one-out 笔记,可升格为定理级展开)。
- 第 2 章:塔性质、正交性、最佳预测、线性投影。
- 第 4 章:无偏性与方差(写清独立同分布(i.i.d.)与满秩)。
- 更晚:第 6–7 章渐近、第 10 章 bootstrap(自助法)、第 12–13 章 IV / 广义矩方法(GMM, Generalized Method of Moments)。
每条定理一篇(或一节),不要整章空泛综述。模板见 节 6.2。
5.5 阶段 4:可选 L3(需另行决定)
仅当明确要求建立 Lean 子工程时:钉死工具链 → 先移植或重证第 3 章 FWL 一条链 → lake build 全绿 → 更新 inventory 对照表。可继续对照 lean-hansen-econometrics,但对外定理名与中文评注以我们的 inventory 为准。Comparator 式第二通道属于更后期。
6 落地方案
6.1 目录约定
hansenEM/ # 教材源稿(只读对齐,除非改译文/纠错)
chapters_eng/chptNN-*.qmd
hansen-programs/ hansen-data/
replication/ # 教材侧轻量表图
hansenpeer/ # 评注(本页所在仓库)
part01-reg/ part04-panel/ # 章评注与实证
block-matrix/ # 矩阵预备
block-ext/stack-roadmap.qmd # 本页
block-lean/ # Lean 形式化学习教程(无 lakefile)
inventory/ # 阶段 1 起:章清单(可后建)
Lean 子工程若出现,使用第三仓库或本仓库平行目录,独立 lakefile.toml / lean-toolchain,与 Quarto 站点构建解耦。
6.2 L1 笔记模板
## 对象
Hansen 定理 X.Y(章 NN):[一句转述,不改条件]
原文:hansenEM/chapters_eng/chptNN-….qmd
## 维持假设
- Assumption A.B:…
- 教材未写明但证明用到:…
## 引理
1. …
2. …
## 逐步推导
(补「于是 / 显然」中的代数或极限交换)
## 对照
- 与教材一致
- 印刷陈述过强、记号冲突、或我们改用的条件6.3 实证笔记最低字段
- 教材表/图编号与章节
- 数据文件、样本筛选、估计量
- 作者脚本路径、本仓库脚本路径
- 对照表与差异说明
- 随机种子(模拟时)
6.4 验收
- 实证:第三者能按
.qmd复现对照表;数字对不上时有书面原因。 - L1:假设与定理号能在
hansenEM原文中定位;省略步骤已补;若修正陈述,不得静默改写。 - L2:脚本对同一恒等式给出可重复的数值/符号核对。
- L3(未来):
sorry为 0(或 inventory 诚实记录剩余sorry);对照表指向具体声明;lake build在钉死工具链下通过。内核通过 ≠ 已证明 Hansen 印刷原句。
6.5 与 Cursor Agent
- 改教材正文:
hansenEM技能hansen-textbook-qmd。 - 写复现:
hansen-empirical-replication。 - 写证明:
hansen-theory-proof(Lean 细节见该技能下lean-stack.md)。 - 一次只钉一条定理或一张表。
7 明确不做
- 现在不创建 Lean 子工程、不提交
lakefile.toml。学习讲义放block-lean/,与 Quarto 站点一起渲染,但不编译 Mathlib。 - 不把
lean-hansen-econometrics或 Mathlib 拷进本仓库。 - 不把评注长证明写进
hansenEM/chapters_*。 - 不用上万智能体规模衡量进度。
- 不以 L1 文采或 L2 模拟代替逻辑证书。