量化交易中文教材

第 10 章 面板数据回归

学习目标

读完本章,你应当能够:

  1. 说明面板数据(panel data)为什么能在不观测某些遗漏变量的情况下控制它们,以及能控制哪两类遗漏变量。
  2. 写出实体固定效应、时间固定效应和双向固定效应模型,用三种等价方法估计:虚拟变量回归(LSDV)、去均值(组内变换)、\(T=2\) 时的差分回归。
  3. 陈述固定效应回归假设,特别是严格外生性,并解释为什么面板数据必须用聚类标准误(clustered standard errors),能推导单回归元的聚类方差公式。
  4. 知道聚类数少时要用 \(t_{G-1}\) 等小样本临界值。
  5. 把股票收益的因子检验看成面板回归:理解 Fama–MacBeth 两步法与时间固定效应的关系,并根据误差的相关结构在按股票聚类、按时间聚类、双向聚类和 Fama–MacBeth 之间做选择。

读前导读

这一章在解决什么问题

第 09 章说,遗漏变量是回归最常见的病。这一章给出第一种不用找到遗漏变量就能治它的办法:同一个对象看多次,只比较它自己和自己。

做财报分析时你早就这样做了。比较两家公司的毛利率,差异可能来自行业、商业模式、会计政策,没法一一控制;但比较同一家公司今年和去年的毛利率,这些不变的东西自动抵消,剩下的变化才更可能来自经营本身。面板数据回归就是把「同比分析」系统化:每个实体(州、公司、股票)给一个自己的截距(固定效应),吸收它所有不随时间变的特征;每个时期也可以给一个截距,吸收当期所有实体共同受到的冲击(如市场整体涨跌)。

本章的第二个重点是标准误。同一实体的多期观测往往相互关联(一只股票的估值暴露这个月高,下个月多半也高),看起来有几万条观测,独立信息却少得多。不修正,t 值会被严重夸大。这直接关系到因子研究:10.8 节把股票因子检验放进面板框架,解释 Fama–MacBeth 方法到底在做什么、什么时候它的标准误不可信。对做因子研究的人,这一节可能是全册最实用的内容之一。

需要先想起来的数学

1. 双重求和记号。 \(\sum_{i=1}^n\sum_{t=1}^TX_{it}\) 表示把 \(n\times T\) 张表格里的每个格子都加起来,可以先按行(对 \(t\))加再按列(对 \(i\))加,顺序可交换。\(\bar X_i=\frac1T\sum_tX_{it}\) 是第 \(i\) 行的均值,\(\bar X_t=\frac1n\sum_iX_{it}\) 是第 \(t\) 列的均值。例:2 只股票 × 3 个月的收益表,\(\bar X_i\) 是每只股票的月均收益,\(\bar X_t\) 是每个月的截面平均收益。见 第 00 册第 07 章 概率中的分析工具。

2. 和的方差。 \(\mathrm{var}(\sum_tv_t)=\sum_t\mathrm{var}(v_t)+2\sum_{t<s}\mathrm{cov}(v_t,v_s)\)。这就是 \(T\) 项资产等权组合的方差公式(不除以 \(T^2\) 的版本)。若协方差为正,总方差大于各方差之和。10.5 节的聚类标准误整个建立在这个式子上。

3. 中心极限定理与 \(\xrightarrow{d}\)。 大量独立同分布变量的平均值近似正态。\(\xrightarrow{d}\) 读作「依分布收敛」,意思是样本量趋于无穷时,左边的分布越来越接近右边写的分布。这是所有 t 检验能用正态临界值的依据。本章关键在于:独立的单位是「实体」,所以中心极限定理是对 \(n\) 个实体用的,不是对 \(nT\) 个观测用的。见 第 00 册第 07 章。

4. 矩阵的「夹心」形式(只需认识)。 代码里的 \((Z'Z)^{-1}[\cdots](Z'Z)^{-1}\) 叫夹心(sandwich)估计量:两边的「面包」来自回归元,中间的「馅」装着误差的相关结构。异方差稳健、聚类、双向聚类标准误的区别只在馅怎么算。不需要会矩阵求逆,知道这个结构就够了。见 第 00 册第 06 章 线性代数速成。

怎么读这一章

10.2 和 10.3 是核心,一定要弄懂「差分 / 去均值为什么能消掉不随时间变的遗漏变量」。10.4 节的时间固定效应是自然的推广,看懂双向固定效应的思路即可。10.5 节分两层:10.5.1–10.5.2 的结论(严格外生性、为什么必须聚类)必读;10.5.3 的推导第一次可以只看 (10.24) 的「打包」思路和 (10.28) 的方差分解,跟着讲解框走一遍。10.5.4(聚类数少)很短,但对按行业、按年份聚类的人很重要。10.6 是案例,可以快速读。10.8 节是为量化读者补充的,强烈建议细读,并对照示例 2 的输出表格理解 Petersen 的结论。


10.0 动机:截面回归给出的荒唐答案

多元回归只能控制有数据的变量。没有数据的变量放不进回归,OLS 就可能有遗漏变量偏误。本章介绍一种不需要观测就能控制某些遗漏变量的方法,代价是需要面板数据:每个实体在两个或更多时期被观测。核心思路一句话:看因变量随时间的变化,那些在实体间不同、但不随时间变化的遗漏因素就自动消失了。

原书的例子是酒驾。美国每年约 4 万人死于交通事故,约四分之一的致死事故涉及饮酒司机;据 Levitt & Porter (2001) 估计,凌晨 1–3 点路上多达 25% 的司机饮过酒,法定醉酒的司机造成致死事故的概率至少是未饮酒司机的 13 倍。问题是:提高酒税能减少交通死亡吗?

数据是美国本土 48 个州 1982–1988 年的年度面板。因变量是死亡率(每万人口的年交通死亡人数),关注变量是一箱啤酒的实际税(按 1988 年美元计)。只用 1982 年的截面:

\[\widehat{FatalityRate}=\underset{(0.15)}{2.01}+\underset{(0.13)}{0.15}\,BeerTax\qquad(1982),\tag{10.2}\]

只用 1988 年:

\[\widehat{FatalityRate}=\underset{(0.11)}{1.86}+\underset{(0.13)}{0.44}\,BeerTax\qquad(1988).\tag{10.3}\]

1988 年的系数在 1% 水平显著(\(t=3.43\))。字面意思是:啤酒税越高,交通死亡越多。这显然不能当真。许多因素影响死亡率——汽车质量、道路状况、城乡结构、车流密度、社会对酒驾的接受程度——其中任何一个都可能与啤酒税相关。有些因素(如对酒驾的文化态度)根本无法度量。但如果这些因素在一个州内不随时间变化,面板数据就能控制它们。


10.1 面板数据

面板数据又称纵向数据(longitudinal data),指 \(n\) 个实体在 \(T\) 个时期的观测。交通数据中 \(n=48\),\(T=7\),共 336 个观测。

Key Concept 10.1(面板数据记号) 面板数据由同一批 \(n\) 个实体在 \(T\ge2\) 个时期的观测组成,记为

\[(X_{it},Y_{it}),\quad i=1,\dots,n,\ t=1,\dots,T.\tag{10.1}\]
下标 \(i\) 表示实体,\(t\) 表示时期。

每个实体每个时期的所有变量都有观测,称为平衡面板(balanced panel);否则为非平衡面板(unbalanced panel)。本章按平衡面板讲解,方法都可推广到非平衡面板。股票数据几乎总是非平衡的(上市、退市、停牌),实践中要注意软件如何处理。


10.2 两期面板:「前后」比较

先看最简单的 \(T=2\)。设 \(Z_i\) 是一个决定死亡率、随州不同但不随时间变化的因素(如文化态度):

\[FatalityRate_{it}=\beta_0+\beta_1BeerTax_{it}+\beta_2Z_i+u_{it}.\tag{10.4}\]

写出 1982 年和 1988 年两个方程再相减,\(Z_i\) 就被消去了:

\[FatalityRate_{i1988}-FatalityRate_{i1982}=\beta_1(BeerTax_{i1988}-BeerTax_{i1982})+u_{i1988}-u_{i1982}.\tag{10.7}\]

直观上,文化态度影响死亡率的水平,但它在两年间不变,所以不会造成死亡率的变化。死亡率的变化只能来自啤酒税的变化和其他因素的变化。对变化量做回归,就控制了所有不随时间变化的因素。

推导拆解:把两年的方程写全再相减。 1988 年:\(FR_{i,88}=\beta_0+\beta_1BT_{i,88}+\beta_2Z_i+u_{i,88}\)。 1982 年:\(FR_{i,82}=\beta_0+\beta_1BT_{i,82}+\beta_2Z_i+u_{i,82}\)。 相减时 \(\beta_0\) 和 \(\beta_2Z_i\) 两项完全相同,一减就没了;\(\beta_1\) 是公共系数,可以提出来。注意:我们不需要知道 \(Z_i\) 是什么、取多少,甚至不需要知道 \(\beta_2\),它们都被消掉了。 金融直觉:这就是做「公司内部同比」而非「公司之间横比」。横比两家银行的 ROE 时,业务结构、地区、管理层风格都会混进来;比较同一家银行加息前后 ROE 的变化,这些不变的特征就被自动剔除。代价是:同期发生的其他变化(如全行业监管调整)仍会混进来,这就是后面时间固定效应要解决的。

用 48 个州的变化量做 OLS:

\[\widehat{\Delta FatalityRate}=\underset{(0.065)}{-0.072}-\underset{(0.36)}{1.04}\,\Delta BeerTax.\tag{10.8}\]

截距允许啤酒税不变时死亡率也有平均变化,负截距可能反映这期间汽车安全性的改进。斜率变成了负数,在 5% 水平显著:实际啤酒税每箱提高 1 美元,每万人死亡减少 1.04 人。这个效应大得惊人——样本平均死亡率约为 2,意味着加税 1 美元就能让交通死亡减半。原书提醒先别下结论,后面会控制更多因素。

「前后」法有两个局限:它仍可能遗漏随时间变化且与啤酒税相关的因素;它只适用于两期,丢掉其余 5 年数据很可惜。下面的固定效应回归能用上所有时期。


10.3 实体固定效应回归

10.3.1 模型

把 (10.4) 推广到多期:

\[Y_{it}=\beta_0+\beta_1X_{it}+\beta_2Z_i+u_{it}.\tag{10.9}\]

令 \(\alpha_i=\beta_0+\beta_2Z_i\),得到

\[Y_{it}=\beta_1X_{it}+\alpha_i+u_{it}.\tag{10.10}\]

这就是固定效应回归模型(fixed effects regression model)。\(\alpha_1,\dots,\alpha_n\) 是每个实体自己的截距,叫实体固定效应(entity fixed effects);所有实体共享同一个斜率 \(\beta_1\)。\(\alpha_i\) 吸收了所有「随实体变化、不随时间变化」的遗漏变量。

10.3.2 虚拟变量表示(LSDV)

等价地,用 \(n-1\) 个实体指示变量加公共截距表示。令 \(Dj_i=1\) 若 \(i=j\),否则为 0。不能同时放入全部 \(n\) 个指示变量和截距,否则完全多重共线(虚拟变量陷阱),所以省略第一个:

\[Y_{it}=\beta_0+\beta_1X_{it}+\gamma_2D2_i+\gamma_3D3_i+\cdots+\gamma_nDn_i+u_{it}.\tag{10.11}\]

两种写法的对应关系是 \(\alpha_1=\beta_0\),\(\alpha_i=\beta_0+\gamma_i\)(\(i\ge2\))。

Key Concept 10.2(固定效应回归模型)

\[Y_{it}=\beta_1X_{1,it}+\cdots+\beta_kX_{k,it}+\alpha_i+u_{it},\tag{10.12}\]
等价于含公共截距、\(k\) 个回归元和 \(n-1\) 个实体指示变量的回归
\[Y_{it}=\beta_0+\beta_1X_{1,it}+\cdots+\beta_kX_{k,it}+\gamma_2D2_i+\cdots+\gamma_nDn_i+u_{it}.\tag{10.13}\]

10.3.3 去均值估计:组内变换

(10.13) 有 \(k+n\) 个回归元,实体多时(几千只股票)直接跑很笨重。实际软件用实体去均值(entity-demeaned)算法。对 (10.10) 按时间取平均:\(\bar Y_i=\beta_1\bar X_i+\alpha_i+\bar u_i\),其中 \(\bar Y_i=\frac1T\sum_tY_{it}\)。相减:

\[\tilde Y_{it}=\beta_1\tilde X_{it}+\tilde u_{it},\qquad \tilde Y_{it}=Y_{it}-\bar Y_i,\ \tilde X_{it}=X_{it}-\bar X_i.\tag{10.14}\]

\(\alpha_i\) 被消掉了。对 (10.14) 做 OLS 得到的 \(\hat\beta_1\) 与 LSDV 回归 (10.11) 的 \(\hat\beta_1\) 完全相同。这就是第 06 章的 Frisch–Waugh 定理:把 \(Y\) 和 \(X\) 分别对实体指示变量回归取残差,残差恰好是去均值后的变量。这种变换也叫组内变换(within transformation),固定效应估计量也叫组内估计量。

推导拆解:为什么「对实体虚拟变量回归取残差」恰好等于「减去实体均值」? 第一步,只用实体虚拟变量(加截距)去回归 \(Y_{it}\),等于给每个实体拟合一个常数。最小化 \(\sum_t(Y_{it}-c_i)^2\) 的常数就是该实体的样本均值 \(\bar Y_i\)(平方误差最小的常数总是均值)。 第二步,所以拟合值是 \(\bar Y_i\),残差是 \(Y_{it}-\bar Y_i=\tilde Y_{it}\)。对 \(X\) 同理得 \(\tilde X_{it}\)。 第三步,Frisch–Waugh 定理说:在多元回归中,\(X\) 的系数等于「把 \(Y\) 和 \(X\) 都先剔除其他回归元的影响(取残差)后,残差对残差回归」的系数。这里「其他回归元」就是实体虚拟变量,残差就是去均值后的变量。 小例子:某只股票 3 个月的估值暴露为 0.2、0.5、0.8,均值 0.5,去均值后为 −0.3、0、+0.3。无论这只股票长期估值高还是低,去均值后只剩「相对自己平时」的高低。

单回归元时,估计量的显式形式是

\[\hat\beta_1=\frac{\sum_{i=1}^n\sum_{t=1}^T\tilde X_{it}\tilde Y_{it}}{\sum_{i=1}^n\sum_{t=1}^T\tilde X_{it}^2}.\tag{10.22}\]

它只用到 \(X\) 在实体内部随时间的变异。由此有两个推论:不随时间变化的回归元(如性别、行业归属)完全无法估计,因为去均值后恒为 0;在实体内变化很小的回归元,估计会很不精确。

\(T=2\) 时三法等价:不含截距的「前后」差分回归 (10.7)、LSDV 回归 (10.11)、去均值回归 (10.14) 给出完全相同的 \(\hat\beta_1\)(习题 10.11)。原因是 \(T=2\) 时 \(\tilde X_{i1}=-\frac12(X_{i2}-X_{i1})\),\(\tilde X_{i2}=\frac12(X_{i2}-X_{i1})\),代入 (10.22) 即得差分估计量。

推导拆解:记 \(\Delta X_i=X_{i2}-X_{i1}\),\(\Delta Y_i\) 同理。 第一步,\(\bar X_i=\frac{X_{i1}+X_{i2}}2\),所以 \(\tilde X_{i1}=X_{i1}-\bar X_i=\frac{X_{i1}-X_{i2}}2=-\frac12\Delta X_i\),\(\tilde X_{i2}=+\frac12\Delta X_i\)。 第二步,代入 (10.22) 分子:每个实体贡献 \(\tilde X_{i1}\tilde Y_{i1}+\tilde X_{i2}\tilde Y_{i2}=\frac14\Delta X_i\Delta Y_i+\frac14\Delta X_i\Delta Y_i=\frac12\Delta X_i\Delta Y_i\)。 第三步,分母同理每个实体贡献 \(\frac12(\Delta X_i)^2\)。 第四步,分子分母的 \(\frac12\) 约掉,得 \(\hat\beta_1=\sum_i\Delta X_i\Delta Y_i/\sum_i(\Delta X_i)^2\),正是不含截距的差分回归斜率。

10.3.4 应用

用全部 7 年数据:

\[\widehat{FatalityRate}=-\underset{(0.29)}{0.66}\,BeerTax+\text{州固定效应}.\tag{10.15}\]

系数为负,与 (10.8) 方向一致;由于用了更多年份,标准误更小。但怀疑者会问:80 年代汽车越来越安全、系安全带的人越来越多,若这期间实际啤酒税恰好平均上升,\(BeerTax\) 就可能捕捉了全国安全改进的效应。这类「随时间变化、各州相同」的因素需要时间固定效应。


10.4 时间固定效应与双向固定效应

设 \(S_t\) 是随时间变化、但同一年各州取值相同的不可观测变量(如全国推行的汽车安全标准):

\[Y_{it}=\beta_0+\beta_1X_{it}+\beta_2Z_i+\beta_3S_t+u_{it}.\tag{10.16}\]

正如 \(Z_i\) 让每个州有自己的截距,\(S_t\) 让每个时期有自己的截距。只有时间效应的模型为

\[Y_{it}=\beta_1X_{it}+\lambda_t+u_{it},\tag{10.17}\]

\(\lambda_1,\dots,\lambda_T\) 称为时间固定效应(time fixed effects)。等价写法是截距加 \(T-1\) 个时期指示变量 \(B2_t,\dots,BT_t\):

\[Y_{it}=\beta_0+\beta_1X_{it}+\delta_2B2_t+\cdots+\delta_TBT_t+u_{it}.\tag{10.18}\]

两类遗漏变量都存在时,同时放入两组效应,得到双向固定效应(entity and time fixed effects)模型:

\[Y_{it}=\beta_1X_{it}+\alpha_i+\lambda_t+u_{it},\tag{10.19}\]
\[Y_{it}=\beta_0+\beta_1X_{it}+\gamma_2D2_i+\cdots+\gamma_nDn_i+\delta_2B2_t+\cdots+\delta_TBT_t+u_{it}.\tag{10.20}\]

估计方法:

  • 直接 OLS 估计 (10.20)。

  • 平衡面板中,先对 \(Y\) 和每个 \(X\) 做双向去均值 \(\ddot Y_{it}=Y_{it}-\bar Y_i-\bar Y_t+\bar Y\),再做去均值变量的回归。

    白话解释:为什么最后要加回总均值 \(\bar Y\)(全部 \(nT\) 个观测的均值)?因为行均值 \(\bar Y_i\) 和列均值 \(\bar Y_t\) 里都含有一份总体水平,减两次就多减了一次,要补回来。检验:若 \(Y_{it}=a_i+b_t\)(只有实体效应和时间效应),则 \(\bar Y_i=a_i+\bar b\),\(\bar Y_t=\bar a+b_t\),\(\bar Y=\bar a+\bar b\),代入得 \(\ddot Y_{it}=0\),两类效应被完全清除。这一点只在平衡面板里精确成立;非平衡面板要用迭代去均值或直接放虚拟变量。

  • 只去实体均值,然后把去均值的 \(Y\) 对去均值的 \(X\) 和时间指示变量回归。

  • \(T=2\) 时,用含截距的「前后」差分回归即可,截距对应两期时间效应之差。所以 (10.8) 实际上就是只用 1982、1988 两年数据的双向固定效应估计。

应用:

\[\widehat{FatalityRate}=-\underset{(0.36)}{0.64}\,BeerTax+\text{州固定效应}+\text{时间固定效应}.\tag{10.21}\]

右侧共有 \(1+47+6+1=55\) 个变量。加入时间效应后系数几乎不变,但精度下降,只在 10% 水平显著(\(t=-1.78\))。

双向固定效应消除了「不随时间变化」和「不随州变化」两类遗漏变量。但许多重要因素同时随州和时间变化(如州经济状况、其他酒驾法律),它们仍可能造成偏误,10.6 节处理。


10.5 固定效应回归的假设与聚类标准误

10.5.1 四条假设

Key Concept 10.3(固定效应回归假设) 对 \(Y_{it}=\beta_1X_{it}+\alpha_i+u_{it}\):

  1. \(E(u_{it}\mid X_{i1},X_{i2},\dots,X_{iT},\alpha_i)=0\);
  2. \((X_{i1},\dots,X_{iT},u_{i1},\dots,u_{iT})\),\(i=1,\dots,n\),是来自其联合分布的 i.i.d. 抽取;
  3. 不太可能出现大的离群值:\((X_{it},u_{it})\) 有非零有限四阶矩;
  4. 无完全多重共线性。

假设 1 比截面假设更强。它要求 \(u_{it}\) 的条件均值不依赖于该实体过去、现在和将来任何一期的 \(X\),称为严格外生性(strict exogeneity)。若今天的冲击会影响将来的 \(X\)(反馈),假设 1 就被违反。量化中的例子:今天的收益冲击会改变明天的估值因子(市盈率的分母不变、分子即价格变了),这正是反馈。最典型的违反是把滞后因变量放进固定效应回归(动态面板),此时组内估计量在 \(T\) 小时有偏,称为 Nickell 偏误;这超出原书范围,但做量化时要知道它的存在。

白话解释:为什么固定效应需要「过去、现在、将来」全部不相关,而截面回归只要同期不相关?因为去均值时用到了 \(\bar u_i=\frac1T\sum_tu_{it}\),它包含该实体所有时期的误差。于是去均值后的误差 \(\tilde u_{it}=u_{it}-\bar u_i\) 和去均值后的回归元 \(\tilde X_{it}=X_{it}-\bar X_i\) 都混入了全部时期的信息。只要某期的 \(u\) 影响了另一期的 \(X\),\(\tilde X\) 与 \(\tilde u\) 就相关。 Nickell 偏误的直觉:把 \(Y_{i,t-1}\) 放进回归,它本身就含 \(u_{i,t-1}\),而 \(u_{i,t-1}\) 也在 \(\bar u_i\) 里,两者必然相关。这个相关只通过 \(\bar u_i\) 产生,而 \(\bar u_i\) 中每期只占 \(1/T\) 的权重,所以偏误是 \(1/T\) 量级:\(T=12\) 时不可忽略,\(T=500\) 时基本可以不管。

假设 2 只要求实体之间独立,不限制实体内部:允许 \(X_{it}\) 和 \(u_{it}\) 在同一实体内跨时相关。

在这些假设下,\(n\) 大时固定效应估计量一致且近似正态。

10.5.2 序列相关:为什么常规标准误失效

若 \(X_{it}\) 与 \(X_{is}\)(\(s\neq t\))相关,称 \(X\) 自相关(autocorrelation)或序列相关。啤酒税就是自相关的:立法机构多数年份不改税,某年高于均值,次年多半也高。误差 \(u_{it}\) 同样可能自相关:一次地方经济衰退会连续几年减少通勤和死亡;一项大型道路工程在完工后多年都在减少事故。并非所有遗漏因素都自相关(如每年独立的冬季天气),但只要有一部分自相关,\(u_{it}\) 就自相关。

误差自相关不会使固定效应估计量有偏,但会使截面回归中常用的异方差稳健标准误失效——道理和「异方差时仅同方差标准误失效」完全相同:公式所依赖的假设不成立。在误差可能异方差、也可能在实体内跨时相关时仍然有效的标准误,称为异方差与自相关稳健(heteroskedasticity- and autocorrelation-robust, HAR)标准误。聚类标准误是 HAR 标准误的一种:它允许误差在一个聚类(cluster)内部任意相关,但假设聚类之间不相关。面板数据中每个实体就是一个聚类,这与假设 2 一致。

差别可能很大:(10.21) 中 BeerTax 系数的普通异方差稳健标准误是 0.25,聚类标准误是 0.36,对应的 \(t\) 统计量分别为 −2.51 和 −1.78——一个在 5% 水平显著,一个不显著。

10.5.3 聚类标准误的推导(原书附录 10.2)

以单回归元实体固定效应模型为例。把 \(\tilde Y_{it}=\beta_1\tilde X_{it}+\tilde u_{it}\) 代入 (10.22):

\[\hat\beta_1=\beta_1+\frac{\frac1{nT}\sum_i\sum_t\tilde X_{it}\tilde u_{it}}{\frac1{nT}\sum_i\sum_t\tilde X_{it}^2}.\tag{10.23}\]

两边乘以 \(\sqrt{nT}\) 整理:

\[\sqrt{nT}(\hat\beta_1-\beta_1)=\frac{\frac1{\sqrt n}\sum_{i=1}^n\eta_i}{\hat Q_{\tilde X}},\qquad \eta_i=\frac1{\sqrt T}\sum_{t=1}^T\tilde X_{it}\tilde u_{it},\quad \hat Q_{\tilde X}=\frac1{nT}\sum_i\sum_t\tilde X_{it}^2.\tag{10.24}\]

推导拆解:从 (10.23) 到 (10.24) 只是重新分组。 第一步,(10.23) 来自把 \(\tilde Y_{it}=\beta_1\tilde X_{it}+\tilde u_{it}\) 代入 (10.22) 的分子:\(\sum\sum\tilde X_{it}(\beta_1\tilde X_{it}+\tilde u_{it})=\beta_1\sum\sum\tilde X_{it}^2+\sum\sum\tilde X_{it}\tilde u_{it}\),除以分母后第一项正好是 \(\beta_1\)。 第二步,两边乘 \(\sqrt{nT}\)。分子 \(\frac{\sqrt{nT}}{nT}\sum_i\sum_t\tilde X_{it}\tilde u_{it}=\frac1{\sqrt n}\sum_i\Big(\frac1{\sqrt T}\sum_t\tilde X_{it}\tilde u_{it}\Big)=\frac1{\sqrt n}\sum_i\eta_i\)。这里只是把 \(\frac1{\sqrt{nT}}\) 拆成 \(\frac1{\sqrt n}\cdot\frac1{\sqrt T}\),再把内层对 \(t\) 的求和打包。 第三步,打包的意义:同一实体内的各期可以任意相关,但不同实体的 \(\eta_i\) 相互独立。于是我们面对的是 \(n\) 个独立的 \(\eta_i\),可以直接套用中心极限定理,而不用管实体内部的相关结构长什么样。 第四步,\(\frac1{\sqrt n}\sum\eta_i\) 近似 \(N(0,\sigma_\eta^2)\),除以常数 \(Q_{\tilde X}\) 后方差变为 \(\sigma_\eta^2/Q_{\tilde X}^2\),这就是 (10.25)。

关键是把每个实体的全部时期打包成一个 \(\eta_i\)。多数面板 \(n\gg T\),所以取 \(n\to\infty\)、\(T\) 固定的近似:\(\hat Q_{\tilde X}\xrightarrow{p}Q_{\tilde X}\);\(\eta_i\) 在实体间 i.i.d.(假设 2)、均值为 0(假设 1)、方差 \(\sigma_\eta^2\) 有限(假设 3),中心极限定理给出

\[\sqrt{nT}(\hat\beta_1-\beta_1)\xrightarrow{d}N\!\left(0,\frac{\sigma_\eta^2}{Q_{\tilde X}^2}\right),\qquad \mathrm{var}(\hat\beta_1)=\frac1{nT}\frac{\sigma_\eta^2}{Q_{\tilde X}^2}.\tag{10.25–10.26}\]

用样本量代替总体量,得到聚类标准误:

\[SE(\hat\beta_1)=\sqrt{\frac1{nT}\frac{s_{\hat\eta}^2}{\hat Q_{\tilde X}^2}},\qquad s_{\hat\eta}^2=\frac1{n-1}\sum_{i=1}^n\hat\eta_i^2,\quad \hat\eta_i=\frac1{\sqrt T}\sum_t\tilde X_{it}\hat u_{it}.\tag{10.27}\]

(\(\hat\eta_i\) 的样本均值为 0,因为残差与回归元正交。)不论有无异方差、自相关,\(s_{\hat\eta}^2\) 都一致,所以聚类标准误是 HAR 的。多回归元时同理,用聚类方差构造的 F 统计量在 \(n\) 大时服从 \(F_{q,\infty}\)。

为什么截面的异方差稳健公式在面板中无效? 令 \(\tilde v_{it}=\tilde X_{it}\tilde u_{it}\):

\[\mathrm{var}(\eta_i)=\frac1T\Big[\sum_t\mathrm{var}(\tilde v_{it})+2\sum_{t<s}\mathrm{cov}(\tilde v_{it},\tilde v_{is})\Big].\tag{10.28}\]

异方差稳健公式只保留了方差项,丢掉了所有协方差项。若 \(X\) 和 \(u\) 都正自相关,协方差项为正,稳健标准误就系统性偏小,\(t\) 值虚高。

金融直觉:(10.28) 就是 \(T\) 项资产组合的方差公式。设每期 \(\mathrm{var}(\tilde v_{it})=1\)、任意两期相关系数为 \(\rho\),则方括号内为 \(T+T(T-1)\rho\),\(\mathrm{var}(\eta_i)=1+(T-1)\rho\)。异方差稳健公式相当于假设 \(\rho=0\),只得到 1。 数值例子:\(T=7\)、\(\rho=0.3\) 时,真实方差是 \(1+6\times0.3=2.8\),稳健公式低估为 1,标准误低估 \(\sqrt{2.8}\approx1.67\) 倍。正文 (10.21) 中稳健 SE 0.25 与聚类 SE 0.36 之比约 1.44,量级相符。 为什么要求 \(X\) 和 \(u\) 都自相关?\(\tilde v_{it}=\tilde X_{it}\tilde u_{it}\) 的自相关大致等于两者自相关的乘积。若 \(X\) 每期独立(例如每期重新随机分配的处理),即使 \(u\) 高度自相关,乘积也几乎不相关,常规标准误问题不大。因子研究里估值、规模等暴露几乎不变,所以问题格外严重。第二个原因较技术:\(T\) 小时,估计固定效应本身会让异方差稳健方差估计量有偏。唯一的例外是 \(T=2\):此时固定效应回归等价于差分回归,两种标准误一致。Bertrand, Duflo & Mullainathan (2004) 发现,大量双重差分研究因忽略序列相关而严重过度拒绝原假设。

聚类的其他用途。聚类的思想不限于「实体 = 聚类」:

  • 先随机抽家庭、再调查家庭内所有兄弟姐妹,误差在家庭内相关、家庭间独立,应按家庭聚类;
  • 先随机抽教室、再收集教室内所有学生成绩,应按教室聚类。

只要聚类数目多,(10.27) 的推导都可照搬(Cameron & Miller, 2015)。

10.5.4 聚类数少时的推断

若实体数 \(n\) 小而 \(T\) 大,仍可用聚类标准误,但:

  • \(t\) 统计量要与 \(t_{n-1}\) 分布的临界值比较;
  • 检验 \(q\) 个约束的 F 统计量要与 \(\frac{n-1}{n-q}F_{q,n-q}\) 的临界值比较。

这需要关于实体内 \(X_{it}\)、\(u_{it}\) 跨时联合分布的附加假设,使 \(T\) 大时每个 \(\eta_i\) 近似正态。于是 \(\hat\beta_1\) 是 \(n\) 个正态变量 \(\eta_i\) 的缩放平均,\(s_\eta^2\) 是普通样本方差,\(t\) 统计量服从 \(t_{n-1}\)——推理与第 03 章 \(t\) 分布的推导一样,但不需要误差正态、同方差。例:\(n=10\),\(q=4\),\(F_{4,6}\) 的 5% 临界值是 4.53,修正后的临界值为 \(\frac{9}{6}\times4.53=6.80\)。不是所有软件都会自动做这一修正,要自己检查。若 \(n\) 和 \(T\) 都小,聚类标准误不能提供可靠推断。

这条结论在量化中很实用:如果你按 10 个行业或 8 个年份聚类,就只有 10 或 8 个聚类,用 1.96 作临界值会严重过度拒绝。

白话解释:聚类标准误本质上是在用 \(n\) 个 \(\hat\eta_i\) 估计一个方差。这和 CFA 里「用小样本估计总体方差时,t 统计量服从自由度 \(n-1\) 的 t 分布」完全同理:\(n\) 小,样本方差本身就不准,t 分布的厚尾正是对这种不准的补偿。所以真正决定临界值的是聚类个数,不是观测个数。5 万条「股票 × 月」观测按 10 个行业聚类,自由度只有 9,5% 双侧临界值 2.26,而不是 1.96。 F 检验的修正因子 \(\frac{n-1}{n-q}\) 同样来自小样本,\(n\) 很大时它趋于 1,修正自然消失。


10.6 案例:酒驾法律与交通死亡

酒税只是抑制酒驾的手段之一。严打酒驾的州可能既加税又收紧法律;税收变化也可能反映州经济状况(预算赤字导致加税),而经济状况影响驾驶量。即使有双向固定效应,遗漏这些随州和时间变化的变量也会造成偏误。

表 10.1 酒驾法律对交通死亡的影响(因变量:每万人死亡率;48 州;(1)–(6) 用 1982–1988 全部年份,(7) 只用 1982 与 1988;括号为聚类标准误)

回归元 (1) (2) (3) (4) (5) (6) (7)
啤酒税 0.36 (0.05) −0.66 (0.29) −0.64 (0.36) −0.45 (0.30) −0.69 (0.35) −0.46 (0.31) −0.93 (0.34)
饮酒年龄 18 0.03 (0.07) −0.01 (0.08) 0.04 (0.10)
饮酒年龄 19 −0.02 (0.05) −0.08 (0.07) −0.07 (0.10)
饮酒年龄 20 0.03 (0.05) −0.10 (0.06) −0.11 (0.13)
饮酒年龄(连续) 0.00 (0.02)
强制监禁或社区服务 0.04 (0.10) 0.09 (0.11) 0.04 (0.10) 0.09 (0.16)
每司机平均车辆里程 0.008 (0.007) 0.017 (0.011) 0.009 (0.007) 0.124 (0.049)
失业率 −0.063 (0.013) −0.063 (0.013) −0.091 (0.021)
ln(人均实际收入) 1.82 (0.64) 1.79 (0.64) 1.00 (0.68)
州效应 / 时间效应 否/否 是/否 是/是 是/是 是/是 是/是 是/是
F:饮酒年龄=0 0.35 (0.786) 1.41 (0.253) 0.42 (0.738)
F:失业率、收入=0 29.62 (<0.001) 31.96 (<0.001) 25.20 (<0.001)
\(\bar R^2\) 0.091 0.889 0.891 0.926 0.893 0.926 0.899

(列 (1) 为混合 OLS,未用聚类标准误。)

列 (1)–(3):混合 OLS 的啤酒税系数为正;加入州固定效应后变为 −0.66,\(\bar R^2\) 从 0.091 跃升到 0.889。这说明 (1) 的正系数来自遗漏变量偏误,而那些不随时间变化的州特征(历史文化、道路条件、人口密度、对酒驾的态度)解释了死亡率差异的大部分。加入时间效应变化不大。

基准设定 (4) 加入法律变量(最低饮酒年龄用 18、19、20 岁三个指示变量,省略组为 21 岁;首次酒驾是否强制监禁或社区服务)以及驾驶量和经济变量。四个发现:

  1. 啤酒税系数降为 −0.45。设一个平均税率的州把税翻倍(样本平均约每箱 0.50 美元),死亡率预计下降 \(0.45\times0.50=0.23\) 人/万人,约为平均死亡率 2 的八分之一,效应很大。但估计不精确:95% 置信区间 \(-0.45\times0.50\pm1.96\times0.30\times0.50=(-0.52,0.08)\) 包含 0。
  2. 最低饮酒年龄的效应被精确地估计为很小:18 岁相对 21 岁的 95% 置信区间为 \((-0.11,0.17)\),三个系数联合检验 \(p=0.786\)。
  3. 处罚变量的系数也很小,不显著。
  4. 经济变量解释力很强:失业率上升 1 个百分点,死亡率下降 0.063;人均收入上升 1%,死亡率上升约 0.0182(线性–对数模型的解释)。经济好时车多、饮酒多。

敏感性分析:(5) 去掉经济变量后啤酒税效应变大并接近 5% 显著,说明经济变量应保留;(6) 把饮酒年龄换成连续变量,结论不变;(7) 用 1982→1988 的长差分,结论大体相同,啤酒税系数更大。

有效性讨论:实际啤酒税可能与其他酒税同向变动,结论应理解为「酒税」效应;更微妙的是,加税可能伴随公共教育运动,啤酒税可能捕捉了更广泛的反酒驾运动的效应。总的结论:严厉处罚和提高饮酒年龄的作用都不重要;提高酒税有一定证据能减少死亡,但估计不精确,需谨慎。原书脚注列举的后续研究中,Carpenter & Dobkin (2011) 得出相反结论,认为提高饮酒年龄显著降低了相应年龄段的死亡,但未控制表 10.1 中的其他变量。


10.7 固定效应方法的边界

本章的关键洞见是:若不可观测变量不随时间变化,因变量的任何变化必然来自别处。它的边界也很清楚:

  • 无法控制同时随实体和时间变化的遗漏变量。这类问题需要工具变量(第 12 章)。
  • 不随时间变化的回归元无法估计,变化很少的回归元估计不精确(习题 10.10)。
  • \(T\) 固定时 \(\alpha_i\) 本身不能一致估计:每个 \(\alpha_i\) 只有 \(T\) 个观测,\(n\to\infty\) 也无济于事(习题 10.9)。这在文献中叫「伴随参数问题」(incidental parameters problem)。线性模型里它不影响 \(\hat\beta_1\) 的一致性,因为去均值把 \(\alpha_i\) 消掉了;但在第 11 章的 probit/logit 等非线性模型中,直接放入大量实体虚拟变量会让 \(\hat\beta\) 也有偏,需要专门方法。
  • 严格外生性在金融中常被违反,带滞后因变量时尤其要小心。
  • 若数据中还存在实体特定的时间趋势,可用 \(Y_{it}=\beta_1X_{it}+\alpha_i+\lambda_it+u_{it}\):先差分消去 \(\alpha_i\),差分后 \(\lambda_i\) 变成实体固定效应,再做组内估计(习题 10.8)。

10.8 从面板回归到横截面因子回归

本节是为量化读者补充的内容,用本章的工具重新审视股票收益的因子检验。

10.8.1 收益面板与三种「控制」

典型的因子检验问题是:股票 \(i\) 在 \(t\) 期的因子暴露 \(X_{it}\)(如账面市值比、动量、分析师预期修正),能否预测下一期收益 \(R_{i,t+1}\)?

\[R_{i,t+1}=a+bX_{it}+e_{i,t+1}.\]

这是一个「股票 × 日期」面板。用本章的语言,三种设定回答的是不同问题:

设定 利用的变异 回答的问题
混合 OLS 截面 + 时间序列,全部混在一起 暴露高的观测收益是否更高(混杂了择时与选股)
加时间固定效应 只用同一期内股票之间的差异 同一天暴露高的股票是否跑赢暴露低的股票——截面选股能力
加股票固定效应 只用同一只股票随时间的变化 某只股票的暴露高于其自身均值时,收益是否高于其自身均值——个股择时

时间固定效应等价于每期把收益和暴露都做截面去均值,剔除了市场整体涨跌这类共同冲击。多因子选股模型关心的几乎总是第二行。股票固定效应则会吸收股票的长期平均收益差异;若因子的价值恰恰来自于区分「长期高收益」和「长期低收益」的股票(如很多价值、质量因子),加股票固定效应反而会把信号消掉。

10.8.2 Fama–MacBeth 两步法

Fama & MacBeth (1973) 的做法是:

  1. 每期做一次截面回归:对每个 \(t\),用当期全部股票估计 \(R_{i,t+1}=a_t+b_tX_{it}+e_{i,t+1}\),得到一串斜率 \(\hat b_1,\dots,\hat b_T\)。每个 \(\hat b_t\) 可以理解为当期的因子收益(factor return)。
  2. 对斜率序列做时间序列平均:
\[\hat b^{FM}=\frac1T\sum_{t=1}^T\hat b_t,\qquad SE(\hat b^{FM})=\frac{s_{\hat b}}{\sqrt T},\quad s_{\hat b}^2=\frac1{T-1}\sum_t(\hat b_t-\hat b^{FM})^2.\]

在资产定价的原始版本里,\(X_{it}\) 是用前期数据估计的 beta,这就引出了第 09 章的变量误差问题;在 Barra 类风险模型和特征因子研究中,\(X_{it}\) 是可直接观测的特征(市值、估值等),测量误差问题小得多。

与时间固定效应的关系。由于每期截面回归都有自己的截距,FM 天然剔除了时间效应。可以证明,加时间固定效应的混合 OLS 估计量是各期截面斜率的加权平均:

\[\hat b^{TFE}=\sum_tw_t\hat b_t,\qquad w_t=\frac{\sum_i(X_{it}-\bar X_t)^2}{\sum_s\sum_i(X_{is}-\bar X_s)^2},\]

而 FM 用的是等权平均。若每期因子都做过截面标准化且股票数相同,两者完全相等。所以两种方法的点估计差别通常不大,真正的区别在标准误。

推导拆解: 第一步,加时间固定效应等于每期截面去均值,记 \(\dot X_{it}=X_{it}-\bar X_t\),\(\dot R_{it}\) 同理。混合 OLS 斜率为 \(\hat b^{TFE}=\frac{\sum_t\sum_i\dot X_{it}\dot R_{it}}{\sum_s\sum_i\dot X_{is}^2}\)。 第二步,每期截面回归(含截距)的斜率是 \(\hat b_t=\frac{\sum_i\dot X_{it}\dot R_{it}}{\sum_i\dot X_{it}^2}\),所以 \(\sum_i\dot X_{it}\dot R_{it}=\hat b_t\sum_i\dot X_{it}^2\)。 第三步,代回分子:\(\hat b^{TFE}=\sum_t\frac{\sum_i\dot X_{it}^2}{\sum_s\sum_i\dot X_{is}^2}\hat b_t=\sum_tw_t\hat b_t\)。 含义:截面分散度大的月份(因子暴露拉得开)权重大,因为那个月的斜率估计更精确。这就像按精度加权平均多个估计。FM 等权则把每个月当作同等可信。若每期因子已标准化为截面方差 1、股票数都是 \(N\),每期 \(\sum_i\dot X_{it}^2\) 都相同,权重就都是 \(1/T\)。

FM 标准误的本质是把每期斜率当作一个观测,相当于「按时间聚类」:它允许同一期内所有股票的误差任意相关(市场、行业冲击),但假设不同期的 \(\hat b_t\) 相互独立。

10.8.3 误差相关结构决定标准误的选法

股票收益面板里,误差(以及因子暴露)通常有两种相关:

  • 时间效应(同期截面相关):同一天所有股票受相同的市场、行业冲击。
  • 股票效应(同股跨期相关):暴露变化缓慢(估值、规模因子),残差中也有持续的个股成分;使用重叠的多期收益(如每月计算未来 12 个月收益)时,同一股票相邻观测的误差机械地相关。

Petersen (2009) 的系统模拟结论,也是下面代码复现的内容:

相关结构 OLS / White SE 按股票聚类 按时间聚类 双向聚类 Fama–MacBeth SE
只有时间效应 严重偏小 偏小 正确 正确 正确
只有股票效应 严重偏小 正确 偏小 正确 严重偏小
两者都有 严重偏小 偏小 偏小 正确 偏小

双向聚类(two-way clustering)的方差估计是(Cameron, Gelbach & Miller, 2011;Thompson, 2011):

\[\hat V_{\text{双向}}=\hat V_{\text{股票}}+\hat V_{\text{时间}}-\hat V_{\text{White}},\]

减去 White 项是因为同一观测(同股同期)在前两项里被重复计算了。

白话解释:这是集合计数的「容斥原理」。把所有观测排成「股票 × 月份」的表格,方差的「馅」要加总所有应当计入的观测对乘积 \((x_ae_a)(x_be_b)\)。按股票聚类计入「同一行」的所有观测对,按时间聚类计入「同一列」的所有观测对。同时在同一行又在同一列的只有观测自己和自己配对,这正是 White 项。两者相加时它被算了两次,所以减掉一次。 一个实际提醒:减法可能让 \(\hat V_{\text{双向}}\) 在少数情况下出现负值(尤其是聚类数少时),软件通常会做调整,遇到时要注意。

FM 对股票效应无能为力:持续的个股成分让相邻各期的 \(\hat b_t\) 正相关,「各期独立」的假设失败。常见的补救是对 \(\hat b_t\) 序列用 Newey–West(HAC)标准误,在重叠收益或因子持续性导致 \(\hat b_t\) 短期自相关时有效;但若个股成分是永久的,自相关不衰减,Newey–West 也只能部分修正。

实践建议:

  1. 报告结果时同时给出 FM(带 Newey–West 调整)和双向聚类标准误,两者差异大时要找原因。
  2. 聚类数是有效样本量。按时间聚类、只有 60 个月时,就只有 60 个「观测」;按行业聚类只有 30 个行业时,应按 10.5.4 节用 \(t_{G-1}\) 临界值。
  3. 用重叠收益时,相关结构由持有期机械决定,必须用对应的 HAC 或按股票聚类。
  4. 标准误偏小导致 t 值虚高,是伪因子(false discovery)的重要来源之一,与多重检验问题叠加时尤其严重。

量化实战

示例 1:固定效应的三种等价估计与聚类标准误的覆盖率

模拟一个仿照酒驾案例的 48 州 × 7 年面板:州效应 \(\alpha_i\) 与税率正相关,有全国共同冲击,误差在州内服从 AR(1)。真值 \(\beta_1=-0.5\)。

import numpy as np
import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf

rng = np.random.default_rng(0)
n, T, beta = 48, 7, -0.5

def make_panel(rng):
    """州 x 年面板:州效应 alpha_i 与啤酒税正相关;误差在州内 AR(1)"""
    alpha = rng.normal(0, 1, n)                        # 不可观测的州特征(如酒驾文化)
    tax_level = 0.5 + 0.3 * alpha + rng.normal(0, 0.2, n)
    tax = tax_level[:, None] + np.cumsum(rng.normal(0, 0.08, (n, T)), axis=1)  # 税率持续
    year = rng.normal(0, 0.3, T)                       # 全国共同冲击(安全技术)
    u = np.zeros((n, T)); e = rng.normal(0, 0.3, (n, T))
    u[:, 0] = e[:, 0]
    for t in range(1, T):
        u[:, t] = 0.7 * u[:, t-1] + e[:, t]            # 州内序列相关
    y = 2 + beta * tax + alpha[:, None] + year[None, :] + u
    return pd.DataFrame({"state": np.repeat(np.arange(n), T),
                         "year": np.tile(np.arange(T), n),
                         "tax": tax.ravel(), "y": y.ravel()})

df = make_panel(rng)

# 1) 混合 OLS(忽略州效应)
pooled = smf.ols("y ~ tax", df).fit(cov_type="HC1")
# 2) LSDV:州虚拟变量 + 年份虚拟变量
lsdv = smf.ols("y ~ tax + C(state) + C(year)", df).fit(
    cov_type="cluster", cov_kwds={"groups": df["state"]})
# 3) 双向去均值(平衡面板)
d = df.copy()
for v in ["y", "tax"]:
    d[v + "_dd"] = (d[v] - d.groupby("state")[v].transform("mean")
                    - d.groupby("year")[v].transform("mean") + d[v].mean())
within = sm.OLS(d["y_dd"], d["tax_dd"]).fit()
# 4) T=2 的前后差分(首末两年,含截距) vs 两期双向 FE
two = df[df.year.isin([0, T-1])]
w = two.pivot(index="state", columns="year", values=["y", "tax"])
dy = w["y"][T-1] - w["y"][0]; dx = w["tax"][T-1] - w["tax"][0]
ba = sm.OLS(dy, sm.add_constant(dx)).fit(cov_type="HC1")
fe2 = smf.ols("y ~ tax + C(state) + C(year)", two).fit()

print(f"混合 OLS            : {pooled.params['tax']:+.3f}  (SE {pooled.bse['tax']:.3f})")
print(f"LSDV 双向 FE        : {lsdv.params['tax']:+.3f}  (聚类 SE {lsdv.bse['tax']:.3f})")
print(f"双向去均值 OLS      : {within.params['tax_dd']:+.3f}")
print(f"前后差分(含截距)    : {ba.params.iloc[1]:+.3f}   两期双向 FE: {fe2.params['tax']:+.3f}")

# 5) 蒙特卡洛:稳健 SE 与 聚类 SE 的实际拒绝率(真值 H0: beta=-0.5)
rej = {"HC1": 0, "cluster": 0}; R = 500
for r in range(R):
    dfr = make_panel(rng)
    for k, kw in [("HC1", {}), ("cluster", {"cov_kwds": {"groups": dfr["state"]}})]:
        f = smf.ols("y ~ tax + C(state) + C(year)", dfr).fit(cov_type=k, **kw)
        t = (f.params["tax"] - beta) / f.bse["tax"]
        rej[k] += abs(t) > 1.96
print(f"名义 5% 检验的实际拒绝率: 稳健SE {rej['HC1']/R:.3f}, 聚类SE {rej['cluster']/R:.3f}")

输出:

混合 OLS            : +1.246  (SE 0.097)
LSDV 双向 FE        : -0.728  (聚类 SE 0.299)
双向去均值 OLS      : -0.728
前后差分(含截距)    : -1.060   两期双向 FE: -1.060
名义 5% 检验的实际拒绝率: 稳健SE 0.142, 聚类SE 0.042

读法:混合 OLS 的符号与真值相反,复现了截面回归 (10.3) 的「加税增加死亡」假象;LSDV 与双向去均值给出完全相同的估计;含截距的两期差分与两期双向固定效应完全相同。最后一行最重要:误差在州内序列相关时,用普通稳健标准误做名义 5% 的检验,实际拒绝了 14% 的真原假设;聚类标准误把拒绝率拉回到 5% 附近。

示例 2:因子面板中的标准误选择(复现 Petersen 2009 的结论)

500 只股票 × 120 个月。因子暴露 \(X\) 和收益残差 \(u\) 都由「股票成分 + 时间成分 + 特质成分」组成,分三种情形:只有时间效应、只有股票效应、两者都有。每种情形模拟 200 次,比较各类标准误的平均值与估计量真实标准差之比(越接近 1 越好)。聚类方差用夹心公式手工实现。

import numpy as np

rng = np.random.default_rng(7)
N, T, b = 500, 120, 0.5          # 500 只股票,120 个月,真实因子收益 0.5(单位任意)

def simulate(rng, firm_share=0.5, time_share=0.25):
    """Petersen(2009) 式设定:X 与残差都含 股票成分 + 时间成分 + 特质成分"""
    def comp(share_f, share_t):
        f = rng.normal(0, 1, (N, 1)) * np.sqrt(share_f)
        t = rng.normal(0, 1, (1, T)) * np.sqrt(share_t)
        e = rng.normal(0, 1, (N, T)) * np.sqrt(1 - share_f - share_t)
        return f + t + e
    X = comp(firm_share, time_share)        # 因子暴露:股票内持续 + 同期共同成分
    u = comp(firm_share, time_share)        # 收益残差:股票内持续 + 市场共同冲击
    Y = b * X + u
    return X, Y

def ols_and_ses(X, Y):
    firm = np.repeat(np.arange(N), T); time = np.tile(np.arange(T), N)
    x = X.ravel(); y = Y.ravel()
    Z = np.column_stack([np.ones_like(x), x])
    ZZi = np.linalg.inv(Z.T @ Z)
    coef = ZZi @ Z.T @ y
    e = y - Z @ coef
    n_obs = len(y)
    def clustered(g):
        # 夹心估计:(Z'Z)^-1 [sum_g (Z_g'e_g)(Z_g'e_g)'] (Z'Z)^-1
        s = np.zeros((len(np.unique(g)), 2))
        np.add.at(s, g, Z * e[:, None])
        G = s.shape[0]
        return ZZi @ (s.T @ s) @ ZZi * G / (G - 1)
    V_ols = ZZi * (e @ e) / (n_obs - 2)
    V_white = ZZi @ ((Z * e[:, None]).T @ (Z * e[:, None])) @ ZZi
    V_firm, V_time = clustered(firm), clustered(time)
    V_two = V_firm + V_time - V_white      # Cameron-Gelbach-Miller 双向聚类
    out = {"OLS": V_ols, "White": V_white, "聚类:股票": V_firm,
           "聚类:时间": V_time, "双向聚类": V_two}
    ses = {k: np.sqrt(v[1, 1]) for k, v in out.items()}
    # Fama-MacBeth:逐月截面回归,取斜率均值;SE = sd/sqrt(T)
    gam = np.empty(T)
    for t in range(T):
        xt = X[:, t] - X[:, t].mean(); yt = Y[:, t] - Y[:, t].mean()
        gam[t] = xt @ yt / (xt @ xt)
    ses["Fama-MacBeth"] = gam.std(ddof=1) / np.sqrt(T)
    return coef[1], gam.mean(), ses

# 蒙特卡洛:三种相关结构下,各种 SE 的平均值 / 估计量真实标准差
R = 200
names = ["OLS", "White", "聚类:股票", "聚类:时间", "双向聚类", "Fama-MacBeth"]
print("情形            " + "  ".join(f"{k:>8s}" for k in ["OLS", "White", "C股票", "C时间", "C双向", "FM"]))
for label, fs, ts in [("仅时间效应", 0.0, 0.25), ("仅股票效应", 0.5, 0.0), ("两者都有", 0.5, 0.25)]:
    est_ols, est_fm, acc = [], [], {k: [] for k in names}
    for r in range(R):
        X, Y = simulate(rng, fs, ts)
        bo, bf, s = ols_and_ses(X, Y)
        est_ols.append(bo); est_fm.append(bf)
        for k in names: acc[k].append(s[k])
    ratios = [np.mean(acc[k]) / (np.std(est_fm) if k == "Fama-MacBeth" else np.std(est_ols)) for k in names]
    print(f"{label:<10s}SE/SD " + "  ".join(f"{r:8.2f}" for r in ratios)
          + f"   | 真实SD: OLS {np.std(est_ols):.4f}, FM {np.std(est_fm):.4f}")

# 时间固定效应的混合 OLS = 按截面方差加权的 Fama-MacBeth 斜率
X, Y = simulate(rng, 0.5, 0.25)
Xd = X - X.mean(axis=0, keepdims=True); Yd = Y - Y.mean(axis=0, keepdims=True)
b_tfe = (Xd * Yd).sum() / (Xd ** 2).sum()
gam = (Xd * Yd).sum(axis=0) / (Xd ** 2).sum(axis=0)
wts = (Xd ** 2).sum(axis=0) / (Xd ** 2).sum()
print(f"\n时间FE混合OLS {b_tfe:.5f} = 加权FM {np.sum(wts*gam):.5f};  等权FM {gam.mean():.5f}")

输出:

情形                 OLS     White       C股票       C时间       C双向        FM
仅时间效应     SE/SD     0.17      0.17      0.16      0.94      0.94      1.05   | 真实SD: OLS 0.0242, FM 0.0039
仅股票效应     SE/SD     0.19      0.19      1.04      0.16      1.04      0.16   | 真实SD: OLS 0.0217, FM 0.0217
两者都有      SE/SD     0.13      0.13      0.71      0.71      1.00      0.11   | 真实SD: OLS 0.0318, FM 0.0286

时间FE混合OLS 0.47213 = 加权FM 0.47213;  等权FM 0.47222

读法:

  • OLS 和 White 标准误在三种情形下都只有真实标准差的 13%–19%,t 值被放大 5 倍以上。在真实的股票面板里,这就是「到处都是显著因子」的来源。
  • 只有时间效应时,按时间聚类和 FM 都正确;只有股票效应时,按股票聚类正确,FM 严重低估;两者都有时,只有双向聚类正确。与 10.8.3 节的表格一致。
  • 第一种情形还显示了时间固定效应的另一个好处:FM(等价于剔除时间效应)估计量的真实标准差只有 0.0039,混合 OLS 是 0.0242。共同冲击同时出现在 \(X\) 和误差中时,不剔除它会让估计非常嘈杂。
  • 最后一行验证了 10.8.2 节的等式:时间固定效应的混合 OLS 精确等于按截面方差加权的 FM 斜率,与等权 FM 只差在第四位小数。

本章小结

面板数据让我们利用同一实体的多期观测,控制那些无法度量的遗漏变量。实体固定效应吸收「随实体变化、不随时间变化」的因素,时间固定效应吸收「随时间变化、各实体相同」的因素,两者可以同时使用。估计上,LSDV、去均值和(\(T=2\) 时的)差分回归等价,本质是 Frisch–Waugh 定理。固定效应只利用实体内的时间变异,需要严格外生性,无法处理同时随实体和时间变化的遗漏变量。面板误差通常在实体内序列相关,必须用聚类标准误,聚类数少时还要用 \(t_{G-1}\) 临界值。放到因子研究里,加时间效应就是只看截面选股能力;Fama–MacBeth 是按时间聚类的一种实现,对持续的个股效应不稳健;两种相关都存在时用双向聚类。

概念 公式 / 要点
实体固定效应 \(Y_{it}=\beta_1X_{it}+\alpha_i+u_{it}\)
组内变换 \(\tilde Y_{it}=Y_{it}-\bar Y_i\),\(\hat\beta_1=\sum\sum\tilde X\tilde Y/\sum\sum\tilde X^2\)
双向固定效应 \(Y_{it}=\beta_1X_{it}+\alpha_i+\lambda_t+u_{it}\);平衡面板双向去均值 \(Y_{it}-\bar Y_i-\bar Y_t+\bar Y\)
\(T=2\) 等价 无截距差分 = 实体 FE;含截距差分 = 双向 FE
严格外生性 \(E(u_{it}\mid X_{i1},\dots,X_{iT},\alpha_i)=0\)
聚类方差 \(\widehat{\mathrm{var}}(\hat\beta_1)=\frac1{nT}\,s_{\hat\eta}^2/\hat Q_{\tilde X}^2\),\(\hat\eta_i=T^{-1/2}\sum_t\tilde X_{it}\hat u_{it}\)
少聚类 \(t_{n-1}\);F 用 \(\frac{n-1}{n-q}F_{q,n-q}\)
Fama–MacBeth \(\hat b^{FM}=\bar{\hat b}_t\),\(SE=s_{\hat b}/\sqrt T\);对同期相关稳健,对持续个股效应不稳健
时间 FE 与 FM \(\hat b^{TFE}=\sum_tw_t\hat b_t\),\(w_t\propto\sum_i(X_{it}-\bar X_t)^2\)
双向聚类 \(\hat V=\hat V_{\text{股票}}+\hat V_{\text{时间}}-\hat V_{\text{White}}\)

练习

基础

  1. 1000 名工人 2008–2017 年的面板,研究教育对收入的影响。举出一个同时与教育和收入相关的个人特定不可观测变量、一个时间特定变量,说明如何控制。这个回归能估计性别对收入的效应吗?全国失业率的效应呢?(原书复习题 10.2、10.3) 答案要点:能力(个人 FE)、全国经济周期(时间 FE);性别被个人 FE 吸收,全国失业率被时间 FE 吸收,都无法估计。
  2. 证明:同时放入 \(D1_i,\dots,Dn_i\) 和常数项时存在完全多重共线性。(原书习题 10.2) 提示:\(\sum_jDj_i=1\) 恒等于常数项。
  3. 写出双向固定效应的两种参数化 (10.19) 与 (10.20) 之间系数的对应关系。(原书习题 10.5) 提示:取 \(i=1,t=1\) 为基准:\(\alpha_1+\lambda_1=\beta_0\),\(\gamma_i=\alpha_i-\alpha_1\),\(\delta_t=\lambda_t-\lambda_1\)。
  4. 用表 10.1 列 (4):一个州把实际啤酒税每箱提高 1 美元,死亡率变化的点估计和 95% 置信区间是多少?如果该州有 885 万人,大约对应每年多少条生命? 答案要点:\(-0.45\pm1.96\times0.30=(-1.04,0.14)\);885 万人即 885 个「万人」,点估计约减少 398 人死亡,区间包含 0。
  5. 你按行业(28 个)聚类做因子回归,得到 \(t=2.10\)。用 \(t_{27}\) 和标准正态判断 5% 显著性,结论有何不同? 提示:\(t_{27}\) 的 5% 双侧临界值约 2.05,仍显著但很勉强;若按 10 个大类行业聚类,\(t_9\) 临界值约 2.26,不再显著。

进阶

  1. (原书习题 10.11)证明 \(T=2\) 时实体去均值估计量等于无截距的差分估计量。 提示:用 \(\tilde X_{i1}=-\frac12\Delta X_i\),\(\tilde X_{i2}=\frac12\Delta X_i\),\(\tilde Y\) 同理,代入 (10.22)。
  2. (原书习题 10.9)\(n\to\infty\)、\(T\) 固定时,\(\hat\alpha_i\) 是否一致?为什么这不影响 \(\hat\beta_1\) 的一致性? 提示:\(\hat\alpha_i=\bar Y_i-\hat\beta_1\bar X_i\),其误差含 \(\bar u_i\),方差 \(\sim\sigma^2/T\) 不随 \(n\) 下降。
  3. 证明加时间固定效应的混合 OLS 斜率等于 \(\sum_tw_t\hat b_t\),\(w_t\propto\sum_i(X_{it}-\bar X_t)^2\)。在什么条件下它等于 Fama–MacBeth 估计量? 提示:分子分母都按 \(t\) 拆开;每期截面标准化且股票数相同时 \(w_t=1/T\)。
  4. 用示例 2 的代码,把收益改成「未来 12 个月累计收益」并按月滚动(重叠收益),比较 FM 标准误、FM + Newey–West(滞后 11 期)和按股票聚类的结果。 提示:重叠导致 \(\hat b_t\) 序列存在 MA(11) 结构,未调整的 FM 标准误约低估 \(\sqrt{12}\) 倍量级。
  5. 某研究在公司固定效应回归中放入「上期收益」作为控制变量,\(T=12\)。指出违反了哪条假设,后果是什么。 提示:严格外生性;上期收益(滞后因变量)与去均值后的误差相关,组内估计量有 \(O(1/T)\) 的 Nickell 偏误。

原书推荐习题:10.11(\(T=2\) 时的等价性);10.2、10.5(虚拟变量陷阱与参数化);10.9(伴随参数问题);10.8(实体特定时间趋势);10.6 与附录 10.2(普通稳健标准误为何失效);复习题 10.2–10.4;实证题 E10.2(收入与民主:加入国家固定效应后效应基本消失,体会聚类与固定效应的影响)、E10.1(持枪法与暴力犯罪)。


原书对照

本章内容 原书章节 PDF 页码
章首导言、截面回归的困惑(式 10.2–10.3) 第 10 章开篇、10.1 p.362–365
面板数据记号(Key Concept 10.1) 10.1 p.362–365
两期「前后」比较(式 10.4–10.8) 10.2 p.365–367
固定效应回归、LSDV 与去均值(Key Concept 10.2) 10.3 p.367–371
时间固定效应与双向固定效应(式 10.16–10.21) 10.4 p.371–374
固定效应假设与聚类标准误(Key Concept 10.3) 10.5 p.374–376
酒驾法律与交通死亡(表 10.1) 10.6 p.377–380
结论、小结 10.7 p.381–382
习题 第 10 章末 p.382–387
交通死亡数据集 附录 10.1 p.387
固定效应回归的标准误(式 10.22–10.28,少聚类推断) 附录 10.2 p.388–391
Fama–MacBeth、双向聚类(本教材补充,非原书内容) — —

注:原书页码 = PDF 页码 − 1。