非平衡面板和缺失值——什么时候该删?什么时候该补?怎么补才合理?
你用的是 CGSS 五年的追踪调查数据。原始样本 8000 人。你跑了一个面板固定效应模型,Stata 告诉你\"Number of obs = 24,000\"——但你明明有 8000 × 5 = 40,000 条可能的观测。剩下的 1...
一、开篇:你的面板数据里有"消失的人"——你注意到他们了吗?
你用的是 CGSS 五年的追踪调查数据。原始样本 8000 人。你跑了一个面板固定效应模型,Stata 告诉你"Number of obs = 24,000"——但你明明有 8000 × 5 = 40,000 条可能的观测。剩下的 16,000 条去哪了?
- 有人第二年没追访到——搬走了、联系不上了。
- 有人第一年和第三年答了收入,但第二年空着。
- 有人每年来参加调查,但有些年份的某些问题拒绝回答。
你的面板是非平衡的(Unbalanced Panel)。每个人被观测到的次数不同。数据显示的形状不是整齐的矩形,而是坑坑洼洼的"月亮表面"。
Stata 自动帮你处理了——xtreg 默认只使用有完整数据的观测(complete-case analysis)。但问题是:这些"消失了的人"和"留下来的人"是不是系统性地不同?如果他们恰好是那些收入更低、工作更不稳定、迁移更频繁的人——你基于完整数据得出的结论,就仅仅是对"那些能被追踪到的、更稳定的人群"成立。 这不是你的回归系数出了偏差——这是你的样本在无声无息中被筛选了。
核心信息:非平衡面板本身不是问题——OLS 和固定效应估计量在非平衡面板中仍然是一致且无偏的(在标准假设下)。真正的问题是样本损耗(Attrition)——如果观测的"缺失"不是随机的,而是与模型的因变量或误差项相关,你的估计就面临样本选择偏误。处理缺失值的方法选择取决于三个判断:缺失的原因是什么(MCAR / MAR / MNAR)、缺失的比例有多大、以及缺失的变量在模型中的角色(因变量?核心解释变量?控制变量?)。没有一条普适规则——但有一套从"保守安全"到"充分利用信息"的选项光谱。
二、非平衡面板 ≠ 数据有缺失——先搞清楚你面对的是什么
2.1 非平衡面板 vs 平衡面板
一个面板数据集,如果每个个体在每一期都有观测 → 平衡面板(Balanced Panel)。如果不同个体被观测到的时期数不同 → 非平衡面板(Unbalanced Panel)。
非平衡面板的常见成因:
- 样本自然损耗(Attrition):受访者去世、搬迁、拒绝再参与、联系不上。
- 样本新增(Refreshment/Entry):调查方补充新样本以保持代表性。
- 资格变化:在研究企业时,有些企业倒闭了(不再被观测),有些新企业成立了(新增观测)。
- 轮换面板(Rotating Panel):设计上每期替换一部分个体(如 CPS 的 4-8-4 设计)。
- 数据合并:不同来源的数据在某些维度上有不同的覆盖范围。
2.2 "非平衡"本身不是问题——"为什么非平衡"才是
非平衡面板本身不违反 OLS 或固定效应模型的任何经典假设。 如果你的非平衡是完全随机的(观测与否和模型中的任何变量无关),OLS 和 FE 在非平衡面板上跑出来的结果和平衡面板在理论上同样有效。
但问题在于——非平衡几乎从来不是"完全随机"的。 在追踪调查中,低收入者、流动人口、健康状况差的人更容易失访。在企业面板中,倒闭的企业不再被观测到,存活下来的企业被过度代表。这种非随机的"选择性消失"意味着你的样本在无声无息中筛选出了特定类型的个体——而你的回归并不知道这种筛选的发生。
三、缺失数据处理的第一道门:判断缺失的类型
在采取任何处理措施之前,你需要先问:这些缺失是"为什么"缺失的? 这对你后续采取的策略至关重要。
3.1 三种缺失机制(Rubin, 1976)
MCAR(Missing Completely At Random)——完全随机缺失
缺失的概率和任何变量(包括 Y 和 X)都无关。纯粹是运气。
- 例子:问卷被随机地被风吹走了几页。实验室的试管随机被打翻了。
- 判断依据:没有任何理论理由认为缺失和模型中的变量有关。
- 处理:直接删除(listwise deletion)不会导致偏误——只损失效率(标准误因样本量减小而变大)。
MAR(Missing At Random)——条件随机缺失
缺失的概率可能依赖于你数据中已观测到的变量,但在给定这些已观测变量之后,缺失和缺失的变量本身无关。
- 例子:年轻人比老年人更容易拒答收入问题。但"是否拒答"只依赖于年龄(你在数据中能观测到),给定年龄之后,拒答者和回答者的收入没有系统差异。
- 判断依据:你可以用已有的变量来解释缺失——给定这些变量后,缺失和缺失的变量本身无关。
- 处理:删除会因"已观测变量驱动的筛选"而产生偏误(比如删除年轻人导致样本老龄偏误)。多重插补(Multiple Imputation)在 MAR 下是正确的选择。
MNAR(Missing Not At Random)——非随机缺失
缺失的概率依赖于缺失变量本身的值,即使在控制了所有已观测变量之后,这个依赖仍然存在。
- 例子:高收入者因为他们收入高而更倾向于隐藏自己的收入。即使你控制了年龄、性别、教育——高收入者仍然系统性地更可能缺失。
- 判断依据:缺失的原因就是你缺失的变量本身的值。这是最棘手的情况。
- 处理:所有标准方法(包括多重插补)在 MNAR 下都不能保证无偏。你需要用选择模型(Heckman Selection)或模式混合模型做敏感性分析。
3.2 一个判断框架——你的缺失属于哪一种?
在实证论文中,你通常无法证明缺失是 MCAR 还是 MAR——你只能论述为什么你认为它更接近某一种,并提供稳健性证据。
标准做法:
- 比较完整样本和全样本在关键变量上的分布——如果差异不大,为 MCAR 提供支持。
- 用 probit/logit 模型预测"是否缺失"——如果可观测的 X 能显著预测缺失,说明至少不是 MCAR。
- 在稳健性检验中,分别用删除和插补报告结果——如果核心系数稳定,说明结论对缺失机制不敏感。
四、什么时候删?——删除策略及其代价
4.1 列表删除(Listwise Deletion / Complete-Case Analysis)
操作:只保留在所有变量(Y 和所有 X)上都无缺失的观测。这是 Stata/大多数软件的默认行为。
什么时候合理?
- 缺失完全随机(MCAR)——删除不引入偏误,只损失效率。
- 缺失比例很小(< 5%)——无论缺失机制是什么,少量的缺失不太可能实质性改变结论。
- 缺失集中在控制变量上(而非核心变量),且这些控制变量在理论上和核心 X 的相关性较弱。
什么时候不合理?
- 缺失比例 > 10%,且不是 MCAR。
- 缺失系统性地集中在某类观测上(如低收入者更可能缺失 → 删除他们 → 核心系数基于一个"去除了穷人"的样本)。
- 缺失涉及核心解释变量或因变量——每删除一条都等于删除了一个潜在的关键信息点。
列表删除的一个被低估的代价:如果你一个回归有 10 个控制变量,每个变量在不同观测上有少量缺失——缺失组合下来,可能损失 20—30% 的样本。每个人在某个变量上缺一点,最终导致大面积删除。这是"列表删除"最不效率的一面。
4.2 配对删除(Pairwise Deletion)
操作:在计算每个统计量(如相关系数矩阵)时使用所有可用的观测对——不要求每个观测在所有变量上都完整。
在回归分析中几乎不使用——因为回归需要完整的 X 矩阵,不能对不同的 β 使用不同的样本。配对删除主要用于描述性统计中的相关系数矩阵。
4.3 什么时候不应该删——损耗偏差(Attrition Bias)的识别
在面板数据中,如果某个个体在 t 期之后彻底消失了(不再出现在任何后续调查中),删除他可能会引入损耗偏差。 识别损耗偏差的常用方法:
- 生成一个虚拟变量
attrited_i = 1如果该个体在后续任何一期缺失,= 0 如果始终保持。 - 用基线(第一期的特征)对
attrited_i做回归/Logit——如果基线变量能显著预测损耗 → 损耗不是随机的。
* 定义损耗
bysort id: gen last_obs = _n == _N
bysort id: gen attrited = (last_obs == 1 & wave < max_wave)
probit attrited x1 x2 y_baseline // 基线特征预测损耗如果基线 Y 显著预测损耗——损耗者的初始 Y 和留存者不同——你的面板正在系统性地过滤某种类型的人。此时仅使用完整面板的固定效应估计可能是有偏的。
五、什么时候该补?——插补策略及其陷阱
5.1 简单插补——快,但容易错
均值/中位数插补:用该变量的样本均值填充缺失值。
- ❌ 几乎永远不推荐用于回归分析。 均值插补会人为地压缩变量的方差(缺失值被赋予全样本最"平均"的值),低估标准误,膨胀显著性。而且它隐式地假设"缺失的人恰好就是均值"——没有任何理论依据。
末次观测结转(LOCF, Last Observation Carried Forward):用该个体上一期的观测值填充本期的缺失。
- ⚠️ 在医学/流行病学中常见("如果病人退出了试验,他最后一次的健康状态被认为可以代表后续状态")。在经济学实证中较罕见——因为它假设了"变量不随时间变化",而经济变量几乎总是在变化的。
- 如果变量变化缓慢且缺失是偶然的(比如某一轮问卷漏填了某一页),LOCF 可能是合理的。
线性插值(Linear Interpolation):如果第 t−1 期和第 t+1 期都有观测,用两者均值填充第 t 期。
- ✅ 在变量变化平滑(如 BMI、年龄、GDP)且缺失期数少的情况下,是比较自然的做法。
- ❌ 在变量可能跳跃变化(如是否失业、是否结婚)的情况下,线性插值没有意义。
5.2 多重插补(Multiple Imputation, MI)——当前的金标准
核心思想:不猜测"缺失值是多少",而是从缺失值在已观测数据条件下的预测分布中多次抽样,生成多个"完整"数据集,在每个数据集上跑同一个回归,最后用 Rubin's Rule 将多个数据集上的估计结果合并。
操作步骤(三阶段):
- 阶段一(插补):用 MCMC(马尔可夫链蒙特卡洛)或链式方程(MICE)从给定已观测数据的后验分布中抽取缺失值。抽取 M 次(通常 M = 20—50),生成 M 个完整数据集。
- 阶段二(分析):在每个完整数据集上独立地跑回归,得到 M 组系数和标准误。
- 阶段三(合并):用 Rubin's Rule 将 M 组系数取均值(点估计),将 M 组标准误的"组内方差 + 组间方差"合并(总标准误)。
组间方差(插补之间的变异)捕捉了"因为你不知道缺失值到底是什么而额外引入的不确定性"。这是 MI 比均值插补优越的关键——它不只给你一个"最佳猜测",它诚实地把你在猜测中额外引入的不确定性也报了出来。
Stata 实现:
* 阶段一:声明数据和插补
mi set wide // 数据为宽格式
mi register imputed x1 x2 // 声明需要插补的变量
mi impute chained (regress) x1 x2 = y z1 z2, add(20)
* 阶段二:分析
mi estimate: reg y x1 x2 z1 z2MI 在 MAR 假设下是正确的——它假设"给定已观测的所有变量之后,缺失和缺失变量的真实值无关"。如果这个假设不成立(MNAR),MI 也不能保证无偏。
5.3 面板特有的插补——利用时间维度
面板数据为插补提供了一个截面数据没有的信息源:同一个体在其他时期的观测。
好的面板插补策略利用了这个时间维度:
- 如果缺失是间歇性的(某人偶尔漏了一期,但前后都有数据)→ 线性插值或更灵活的纵向 MI。
- 如果缺失是单调的(一旦消失就不再回来——面板损耗)→ 需要特别对待。这种情况下,末期缺失和个体的某些不可观测特征相关(濒临死亡的人退出临床试验、濒临破产的企业不再报告数据)。
在损耗的情况下,MI 使用插补模型(基于已观测特征填充缺失值)——但问题是,如果损耗者"变得更差"这个趋势本身不能被你已有的变量预测,MI 无法捕捉它。
六、面板损耗(Attrition)的检验与应对
面板损耗是非平衡面板中最棘手的问题——因为它通常不是 MAR,而是 MNAR(损耗与个体层面的不可观测恶化有关)。
6.1 检验损耗偏差
方法一:比较留存者和损耗者的基线特征
在回归论文中,增加一个基线平衡性检验表——比较最终留在样本中的个体和最终退出样本的个体在初始期的关键变量上是否有显著差异。如果没有显著差异 → 一个较弱的证据支持损耗是随机的。
方法二:用交互项检验"损耗 × 时间"是否影响关键系数
生成虚拟变量 attrited_i,分别在全样本和留存样本上跑基准回归——如果核心系数在两组中差异不显著,证据支持损耗偏差不大。
方法三:比较不同样本下的核心结论
- 使用平衡面板(仅保留在所有时期都有观测的个体)
- 使用非平衡面板(所有可用观测)
- 如果两者的核心系数相似 → 损耗偏差在此研究中可能不严重。
6.2 应对损耗的方法
方法一(保守):仅使用平衡面板做基准,非平衡面板做稳健性。
方法二(识别):Heckman 选择模型——用一个 probit 方程预测"是否存活在面板中",生成逆米尔斯比率(Inverse Mills Ratio),放入主方程中修正选择偏误。但这需要至少一个影响损耗但不直接影响 Y 的变量(排他性约束)——这个变量通常很难找到。
方法三(边界分析):即使不能修正损耗偏差,你也可以做一个"最坏情况"的边界分析——"即使损耗者的 Y 每年下降 XX 单位,核心结论的定性方向是否仍然不变?"
七、一个实用的决策框架
你的缺失是哪种类型?
├── MCAR(完全随机,比例 < 5%)→ 列表删除,在脚注中报告
├── MCAR(比例 > 5%)→ 考虑 MI 以恢复效率
├── MAR → 多重插补(MI),报告 MI 前后的系数对比
└── MNAR →
├── 面板损耗?→ Heckman 选择模型 / 边界分析
└── 间歇性缺失?→ 在稳健性中比较删除 vs 插补 vs 完整样本
在所有情况下都应该做的:
- 报告缺失的比例和模式(哪些变量缺失多?缺失是单调的还是间歇的?)
- 比较删除 vs 插补的核心系数(放在稳健性检验中)
- 在论文的方法或数据描述部分坦诚讨论缺失可能带来的偏误方向
八、常见误区
8.1 误区一:以为 Stata 的默认处理就是正确的
Stata 自动删除有缺失的观测——它不告诉你删了多少、删了谁。在描述统计和回归输出中,观测数的减少是唯一可见的线索,但很多人根本不看 Number of obs 一栏。
在跑回归之前,先跑 misstable summarize——它会告诉你每个变量的缺失计数,以及缺失的联合模式导致多少观测被丢弃。
8.2 误区二:对缺失变量做均值插补然后当无事发生
均值插补人为地压缩变量的方差 → 标准误被低估 → t 值膨胀 → 更容易得到"显著"的结论。这等于利用缺失值来制造显著——是审稿人最敏感的问题之一。
8.3 误区三:多重插补是"魔法"——做了就对了
MI 在 MAR 假设下是正确的。如果你的数据是 MNAR(比如高收入者因收入高而拒答),MI 使用"低收入者"的模式去预测"高收入者"的缺失值——结果会系统性地低估缺失值。MI 不是万能药——它和你使用的插补模型一样好(或一样差)。
九、总结
非平衡面板处理缺失值的五条核心知识:
- 非平衡 ≠ 有问题。 损耗的原因才是问题——如果缺失和模型的因变量或误差相关,估计面临选择偏误。
- 判断缺失类型是第一步。 MCAR → 删除无偏但损失效率。MAR → 多重插补。MNAR → 选择模型或边界分析。
- "补"比"删"的代价更不透明——更容易犯错而不自知。 均值插补、LOCF、单次回归插补都人为地压缩了不确定性。多重插补是唯一诚实报告插补不确定性的标准方法。
- 最优策略是透明和稳健。 报告缺失比例、比较删除和插补的结果、坦诚讨论损耗可能带来的偏误方向——让读者自己判断。
- 大多数实证论文用列表删除就够了——前提是你诚实地讨论了它是如何改变了你的样本构成。 如果你的核心结论在用 MI 和用列表删除时保持一致的符号和显著性,审稿人很难再质疑你的结论对缺失值处理方式的敏感性。
一句话收尾:
"非平衡面板中的缺失值,处理得不好,你就是在用'筛选后的数据'做推断——而这个筛选的过程,你自己都没有意识到。缺失不是'少了几行数据'的问题——它是在你的研究结论和真实世界之间,插入了一张你从未审视过的、无声无息的滤网。多重插补是这张滤网目前最诚实的替代品——但它仍然需要一个你可能永远无法检验的假设:在给定你观测到的所有东西之后,缺失和缺失的东西无关。如果你连这个假设都不敢相信——你至少应该在稳健性检验中告诉读者:如果我错了,结论会差多远。"
十、B站/公众号呈现建议
- B站视频:建议用"消失的人"作为叙事主题。开场:一个整齐的网格(平衡面板——每个个体在每期都有观测),一行行排列整齐。然后一条一条观测逐渐变暗消失——有的消失了一期又回来(间歇缺失),有的一直消失不再回来(损耗)。旁白:"你的面板数据里有人消失了。Stata 自动帮你忽略了他们。但问题是——消失的人是随机走的,还是系统性地离开的?"第一幕"三种缺失":三个标着 MCAR、MAR、MNAR 的场景卡——MCAR:一个骰子随机决定哪些行消失。MAR:年轻人更容易消失——但你知道谁是年轻人。MNAR:高收入者因为收入高而隐藏收入——即使你知道他的一切其他特征,他还是会隐藏。第二幕"删 vs 补":两个按钮——"删除"抹掉不完整的观测(样本框缩小,红框标注"可能存在筛选偏误"),"插补"用虚线填充缺失位置(多种颜色的虚线从不同角度汇聚——MI 的多重抽样过程)。第三幕"MI 的秘密":一个缺失值被从分布中抽出多个备选值——多个完整数据集被生成,每个上跑同一个回归,最后系数被合并(Rubin's Rule 公式展开)。组内方差 + 组间方差被高亮——旁白:"MI 不只是填一个最佳猜测——它诚实地说:'因为我猜了,我的不确定性比原始数据大——这部分额外的不确定性,我叫它组间方差。'"
- 公众号:三种缺失机制的定义和判断框架做成信息图核心(MCAR/MAR/MNAR 三列对比:定义、例子、可用方法)。删除 vs 插补的方法光谱(从保守到充分利用信息)做成横向渐变色带。多重插补的三阶段(插补 → 分析 → 合并)做成纵向流程图,Rubin's Rule 公式配注解。面板损耗的三种检验方法做成卡片。实用决策框架(从缺失类型到处理方案的树状图)做成海报级别信息图。Stata 命令速查(
misstable summarize/mi set/mi impute chained/mi estimate)制成代码卡片。 - 推荐标题:
- 主标题:《非平衡面板中的缺失值——什么时候该删?什么时候该补?》
- 备选标题:《面板数据里消失的人——损耗偏差、多重插补和诚实的不确定性》
- 新媒体标题:《Stata 自动删掉的 16,000 条观测——你注意到你的面板里有人消失了吗?》
- 金句提炼:
"非平衡面板本身不是问题——问题在于那些'消失的人'是不是系统性地不同于'留下来的人'。如果是,你的结论就只在'那些能被追踪到的、更稳定的人'中成立。"
"均值插补不告诉你'我猜了'——它只填一个数字,然后假装这个数字就是真的。多重插补告诉你'我猜了,而且因为我猜了,我的不确定性被这个额外的不确定性放大了'。猜了但不说,是欺骗。猜了且说了,是诚实。"
"缺失不是'少了几行数据'——它是在你的样本和真实世界之间插入了一张滤网。你的任务不是假装这张滤网不存在,而是研究它过滤了什么,然后在你的结论中为这种过滤留出透明的一段讨论。"
"多重插补是 MAR 假设下的最佳方案——但如果你的缺失是 MNAR(缺失的人恰好在他们缺失的变量上'更差'),MI 也无能为力。在最坏情况下——用边界分析告诉读者:即使我对缺失做了最悲观的假设,我的核心结论的定性方向是否会改变。"