第 10 章 面板数据回归
学习目标
读完本章,你应当能够:
- 说明面板数据(panel data)为什么能在不观测某些遗漏变量的情况下控制它们,以及能控制哪两类遗漏变量。
- 写出实体固定效应、时间固定效应和双向固定效应模型,用三种等价方法估计:虚拟变量回归(LSDV)、去均值(组内变换)、\(T=2\) 时的差分回归。
- 陈述固定效应回归假设,特别是严格外生性,并解释为什么面板数据必须用聚类标准误(clustered standard errors),能推导单回归元的聚类方差公式。
- 知道聚类数少时要用 \(t_{G-1}\) 等小样本临界值。
- 把股票收益的因子检验看成面板回归:理解 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 年的截面:
只用 1988 年:
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\) 是一个决定死亡率、随州不同但不随时间变化的因素(如文化态度):
写出 1982 年和 1988 年两个方程再相减,\(Z_i\) 就被消去了:
直观上,文化态度影响死亡率的水平,但它在两年间不变,所以不会造成死亡率的变化。死亡率的变化只能来自啤酒税的变化和其他因素的变化。对变化量做回归,就控制了所有不随时间变化的因素。
推导拆解:把两年的方程写全再相减。 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:
截距允许啤酒税不变时死亡率也有平均变化,负截距可能反映这期间汽车安全性的改进。斜率变成了负数,在 5% 水平显著:实际啤酒税每箱提高 1 美元,每万人死亡减少 1.04 人。这个效应大得惊人——样本平均死亡率约为 2,意味着加税 1 美元就能让交通死亡减半。原书提醒先别下结论,后面会控制更多因素。
「前后」法有两个局限:它仍可能遗漏随时间变化且与啤酒税相关的因素;它只适用于两期,丢掉其余 5 年数据很可惜。下面的固定效应回归能用上所有时期。
10.3 实体固定效应回归
10.3.1 模型
把 (10.4) 推广到多期:
令 \(\alpha_i=\beta_0+\beta_2Z_i\),得到
这就是固定效应回归模型(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\) 个指示变量和截距,否则完全多重共线(虚拟变量陷阱),所以省略第一个:
两种写法的对应关系是 \(\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}\)。相减:
\(\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。无论这只股票长期估值高还是低,去均值后只剩「相对自己平时」的高低。
单回归元时,估计量的显式形式是
它只用到 \(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 年数据:
系数为负,与 (10.8) 方向一致;由于用了更多年份,标准误更小。但怀疑者会问:80 年代汽车越来越安全、系安全带的人越来越多,若这期间实际啤酒税恰好平均上升,\(BeerTax\) 就可能捕捉了全国安全改进的效应。这类「随时间变化、各州相同」的因素需要时间固定效应。
10.4 时间固定效应与双向固定效应
设 \(S_t\) 是随时间变化、但同一年各州取值相同的不可观测变量(如全国推行的汽车安全标准):
正如 \(Z_i\) 让每个州有自己的截距,\(S_t\) 让每个时期有自己的截距。只有时间效应的模型为
\(\lambda_1,\dots,\lambda_T\) 称为时间固定效应(time fixed effects)。等价写法是截距加 \(T-1\) 个时期指示变量 \(B2_t,\dots,BT_t\):
两类遗漏变量都存在时,同时放入两组效应,得到双向固定效应(entity and time fixed effects)模型:
估计方法:
-
直接 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 两年数据的双向固定效应估计。
应用:
右侧共有 \(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}\):
- \(E(u_{it}\mid X_{i1},X_{i2},\dots,X_{iT},\alpha_i)=0\);
- \((X_{i1},\dots,X_{iT},u_{i1},\dots,u_{iT})\),\(i=1,\dots,n\),是来自其联合分布的 i.i.d. 抽取;
- 不太可能出现大的离群值:\((X_{it},u_{it})\) 有非零有限四阶矩;
- 无完全多重共线性。
假设 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):
两边乘以 \(\sqrt{nT}\) 整理:
推导拆解:从 (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),中心极限定理给出
用样本量代替总体量,得到聚类标准误:
(\(\hat\eta_i\) 的样本均值为 0,因为残差与回归元正交。)不论有无异方差、自相关,\(s_{\hat\eta}^2\) 都一致,所以聚类标准误是 HAR 的。多回归元时同理,用聚类方差构造的 F 统计量在 \(n\) 大时服从 \(F_{q,\infty}\)。
为什么截面的异方差稳健公式在面板中无效? 令 \(\tilde v_{it}=\tilde X_{it}\tilde u_{it}\):
异方差稳健公式只保留了方差项,丢掉了所有协方差项。若 \(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 岁;首次酒驾是否强制监禁或社区服务)以及驾驶量和经济变量。四个发现:
- 啤酒税系数降为 −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。
- 最低饮酒年龄的效应被精确地估计为很小:18 岁相对 21 岁的 95% 置信区间为 \((-0.11,0.17)\),三个系数联合检验 \(p=0.786\)。
- 处罚变量的系数也很小,不显著。
- 经济变量解释力很强:失业率上升 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}\)?
这是一个「股票 × 日期」面板。用本章的语言,三种设定回答的是不同问题:
| 设定 | 利用的变异 | 回答的问题 |
|---|---|---|
| 混合 OLS | 截面 + 时间序列,全部混在一起 | 暴露高的观测收益是否更高(混杂了择时与选股) |
| 加时间固定效应 | 只用同一期内股票之间的差异 | 同一天暴露高的股票是否跑赢暴露低的股票——截面选股能力 |
| 加股票固定效应 | 只用同一只股票随时间的变化 | 某只股票的暴露高于其自身均值时,收益是否高于其自身均值——个股择时 |
时间固定效应等价于每期把收益和暴露都做截面去均值,剔除了市场整体涨跌这类共同冲击。多因子选股模型关心的几乎总是第二行。股票固定效应则会吸收股票的长期平均收益差异;若因子的价值恰恰来自于区分「长期高收益」和「长期低收益」的股票(如很多价值、质量因子),加股票固定效应反而会把信号消掉。
10.8.2 Fama–MacBeth 两步法
Fama & MacBeth (1973) 的做法是:
- 每期做一次截面回归:对每个 \(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)。
- 对斜率序列做时间序列平均:
在资产定价的原始版本里,\(X_{it}\) 是用前期数据估计的 beta,这就引出了第 09 章的变量误差问题;在 Barra 类风险模型和特征因子研究中,\(X_{it}\) 是可直接观测的特征(市值、估值等),测量误差问题小得多。
与时间固定效应的关系。由于每期截面回归都有自己的截距,FM 天然剔除了时间效应。可以证明,加时间固定效应的混合 OLS 估计量是各期截面斜率的加权平均:
而 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):
减去 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 也只能部分修正。
实践建议:
- 报告结果时同时给出 FM(带 Newey–West 调整)和双向聚类标准误,两者差异大时要找原因。
- 聚类数是有效样本量。按时间聚类、只有 60 个月时,就只有 60 个「观测」;按行业聚类只有 30 个行业时,应按 10.5.4 节用 \(t_{G-1}\) 临界值。
- 用重叠收益时,相关结构由持有期机械决定,必须用对应的 HAC 或按股票聚类。
- 标准误偏小导致 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}}\) |
练习
基础
- 1000 名工人 2008–2017 年的面板,研究教育对收入的影响。举出一个同时与教育和收入相关的个人特定不可观测变量、一个时间特定变量,说明如何控制。这个回归能估计性别对收入的效应吗?全国失业率的效应呢?(原书复习题 10.2、10.3) 答案要点:能力(个人 FE)、全国经济周期(时间 FE);性别被个人 FE 吸收,全国失业率被时间 FE 吸收,都无法估计。
- 证明:同时放入 \(D1_i,\dots,Dn_i\) 和常数项时存在完全多重共线性。(原书习题 10.2) 提示:\(\sum_jDj_i=1\) 恒等于常数项。
- 写出双向固定效应的两种参数化 (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\)。
- 用表 10.1 列 (4):一个州把实际啤酒税每箱提高 1 美元,死亡率变化的点估计和 95% 置信区间是多少?如果该州有 885 万人,大约对应每年多少条生命? 答案要点:\(-0.45\pm1.96\times0.30=(-1.04,0.14)\);885 万人即 885 个「万人」,点估计约减少 398 人死亡,区间包含 0。
- 你按行业(28 个)聚类做因子回归,得到 \(t=2.10\)。用 \(t_{27}\) 和标准正态判断 5% 显著性,结论有何不同? 提示:\(t_{27}\) 的 5% 双侧临界值约 2.05,仍显著但很勉强;若按 10 个大类行业聚类,\(t_9\) 临界值约 2.26,不再显著。
进阶
- (原书习题 10.11)证明 \(T=2\) 时实体去均值估计量等于无截距的差分估计量。 提示:用 \(\tilde X_{i1}=-\frac12\Delta X_i\),\(\tilde X_{i2}=\frac12\Delta X_i\),\(\tilde Y\) 同理,代入 (10.22)。
- (原书习题 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\) 下降。
- 证明加时间固定效应的混合 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\)。
- 用示例 2 的代码,把收益改成「未来 12 个月累计收益」并按月滚动(重叠收益),比较 FM 标准误、FM + Newey–West(滞后 11 期)和按股票聚类的结果。 提示:重叠导致 \(\hat b_t\) 序列存在 MA(11) 结构,未调整的 FM 标准误约低估 \(\sqrt{12}\) 倍量级。
- 某研究在公司固定效应回归中放入「上期收益」作为控制变量,\(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。