缺失值,应当删掉还是补齐?

统计

很多人在学习数据分析时,往往把注意力放在模型和结果上:用什么方法、系数是否显著、结论如何解释。

但真正的研究经验告诉我们,很多问题其实在建模之前就已经出现了。

现在发论文,数据分析的第一步,就是“好”的数据。没有好的数据,样本量不足。不要说顶刊、C刊,普刊都不容易发。

在整个数据分析流程中,数据清洗常常被低估,却直接影响后续结果的可靠性。而在各种数据清洗问题里,几乎每个人都会遇到的一件事,就是缺失值。有些人习惯直接删除,有些人尝试插补,也有人不知道该从哪里下手。

实际上,缺失值并没有统一答案,它更像一种需要判断的研究情境。本文讨论一个现实问题:数据中的缺失值,到底应当删掉,还是补齐?

01 什么是缺失值?为什么它几乎无法避免

在真实的数据分析中,很少有人能拿到一份完全没有缺项的数据。

问卷调查时,受访者可能漏填某些问题;企业数据库里,某些年份的数据没有公开;当多个数据源进行合并时,也常常会出现变量无法完整对应的情况。

这些没有被记录的数据,就是缺失值。

很多初学者会把缺失值理解成数据错误,其实并不是这样。现实世界中的数据本身就带有不完整性,缺失值几乎是不可避免的。不完整性,是现实世界中数据的常态。

真正需要关注的,并不是有没有缺失,而是:

这些缺失会不会影响分析结果。

02缺失值处理不好,会对结果造成什么影响?

缺失值之所以值得认真处理,是因为不同的处理方式,可能导致完全不同的结果。

最直观的影响是样本量减少。如果直接删除含缺失值的观测,样本规模可能明显下降,统计检验能力也会随之减弱。

更重要的是偏差问题。当缺失并非随机发生时,删除后的数据结构可能已经改变。此时,即使模型设置正确,也可能得到有偏的估计结果。

在实际研究中,也经常出现一种情况:同一份数据,仅仅因为缺失值处理方式不同,显著性水平就发生变化,甚至变量方向都可能改变。

这也是为什么很多审稿意见会特别关注数据清洗过程——因为问题往往在这里已经开始。

03 怎么判断缺失值是否严重?

在真正开始处理之前,更重要的是先判断缺失值的性质和严重程度。

可以从三个方面进行初步判断:

(1)看缺失比例

缺失比例较低时,通常对整体结果影响有限;缺失比例较高时,需要更谨慎评估。比例本身没有绝对标准,但能帮助我们判断风险大小。

在实际研究中,常常会参考一些经验性的判断。例如,当缺失比例较低(如 5%以内),且没有明显规律时,通常可以考虑直接删除,对整体结果影响往往有限;当缺失比例处在中等区间(约 5%~20%)时,就需要结合具体情况进一步判断;而当缺失比例较高(例如超过 20%)时,简单删除往往不再稳妥,通常需要考虑插补或进一步分析缺失模式。不过这些比例并不是固定规则,真正关键的仍然是缺失值:

是否改变了样本结构,以及缺失产生的原因。

(2)看缺失是否集中在某类样本

如果缺失主要集中在某一类个体、某些年份或某个群体中,就需要特别注意,因为简单删除可能改变样本结构。

(3)思考缺失出现的原因

这一步往往最关键。在实践中,缺失值通常来源于以下几种情况:

  • 完全随机缺失(MCAR):缺失只是偶然发生,与任何变量无关;

  • 与其他变量相关的缺失(MAR):缺失受到其他因素影响;

  • 与变量自身相关的缺失(MNAR):缺失本身具有某种规律。

这里不需要记住术语,核心是理解:缺失出现的原因,决定了后面的处理方式。

04缺失值常见的几种处理方法

面对缺失值,常见的处理方式主要有以下几类:

(1)直接删除

这是最简单、最直接的方法,它适合于:

  • 缺失比例较低;

  • 缺失基本随机;

  • 删除后样本结构变化不明显。

优点是操作简单,但如果缺失存在规律,可能带来偏差。

(2)简单插补(均值或中位数)

用已有数据的平均水平替代缺失值。

优点是方便快捷,但可能低估数据波动,通常适合初步分析。

(3)多重插补

通过模型多次估计缺失值,并综合结果进行分析。

相比简单插补,它能够更好地反映不确定性,因此在研究中越来越常见。

(4)模型自身处理

部分机器学习或统计模型能够在一定程度上处理缺失值,不一定需要提前完整插补。

不过是否使用,仍需结合研究目标判断。

总体来看,缺失值处理并不是固定步骤,而是一种基于数据特点的研究判断。

05一个真实案例

各种统计分析软件都可以进行缺失值的相关操作,这里用SPSS演示一个真实的案例,在SPSS中的操作也比较简单。

SPSS提供了多种缺失值插补方法,主要包括:(1)列平均值插补:用变量的平均值来代替缺失值。(2)最近邻插补:通过寻找具有相似特征的其他观测值,将缺失值替换为最接近的邻近值。(3)线性插值:基于缺失值前后观测值的线性关系,通过计算两个观测值之间的插值来估计缺失值。(4)多重插补:使用多个数据集进行插补,每个数据集都有自己的缺失值替代方案。这种方法通过生成多个完整的数据集,使用统计模型来估计缺失值,并将结果进行汇总,以获得最终的估计。

下图中,包括了5种缺失值插补的方法。

图片

我们来看一个真实的案例(来自何晓琦老师《SPSS数据分析案例教程》,第3章“数据清洗和整理”)

例3-4:数据集“缺失值”,主要是调查某电信公司在减少客户群中的客户流失方面,进行的一些举措。每个个案对应一个单独的客户,并记录各类人口统计和服务用途信息。请进行以下操作:(1)对变量的缺失值进行分析;(2)对变量“服务月数”,使用序列的平均值来替代缺失值;(3)使用多重插补方法,对“服务月数”等前10个变量进行缺失值替补。

我们按步骤来进行分析:

  1. 缺失值分析

SPSS中有两种基本的方法:

第一种方法是通过频率分析,在菜单栏中执行“分析”→“描述统计”→“频率”命令,打开频率分析对话框找到缺失值的数量。

图片

第二种方法是通过“缺失值分析”命令,在菜单栏中执行“分析”→“缺失值分析”命令,可以看出各个变量的有效个案数量以及包含缺失值个案的数量。这个命令,还可以看到数据的极值。

图片

  1. 使用平均值替代“服务月数”的缺失值

变量tenure是电信公司对客户的“服务月数”。这里用其他客户的平均服务时间,来代替部分客户的这项缺失值。

这是最简单的一种方法,但它假设缺失值与其他变量之间没有关联。

在菜单栏执行“转换”→“替换缺失值”命令,弹出对话框,将变量“服务月数”(tenure)拖入右侧“新变量”下方框内,默认出现一个新的变量“tenure_1”。

图片

回到数据视图,我们把其它不相关的列都隐藏,只留下原变量tenure和新生成的变量tenure_1,可以发现,所有的缺失值,都被平均值35.5补齐了。

图片

  1. 多重插补方法来估计缺失值

在菜单栏执行“分析”→“多重插补”→“插补缺失数据值”命令,打开“插补缺失数据值”对话框。同时在打开“方法”“约束”“输出”选项卡,进行设定(略)。

图片

在输出结果中,显示了插补方法、插补数等参数;插补值结果中,显示了插补方法、最大迭代数和已插补的变量;插补模型,还告诉我们“婚姻状况”等变量使用Logistic回归进行插补,“家庭收入”等变量使用线性回归方法进行插补,同时显示了缺失值数量和插补后的数量。

下面是部分输出结果,具体解释略过。

图片

图片

图片

图片

多重插补是数据分析中非常重要的一项操作方法,可以解决在实践中获得数据的缺失问题,但是因为每次进行插补的结果都是不一样的,因此,在操作过程中,对原始数据要进行备份,对新生成的数据集要及时保存。

这部分详细内容,可以学习教材,或者观看何晓琦老师的免费教学视频(B站、视频号、小红书、抖音等平台)。

06 如果不用SPSS:R 和 Python 可以怎么做?

在 R 中,比较常见的工具是 mice 包,它可以方便地进行多重插补,也是很多学术研究中常见的选择。对于已经习惯 R 工作流的研究者来说,这种方式灵活性较高。

而在 Python 中,常见做法主要依赖 pandas 和 sklearn。前者适合进行基础的数据清洗与简单插补,后者则提供了一些更系统的预处理工具,可以直接嵌入机器学习流程中。

无论使用哪种软件,本质上解决的都是同一个问题:理解缺失数据的特点,并选择合适的处理方式。工具不同,但思路是一致的。

07本讲小结

回到文章一开始的问题:缺失值到底应该删掉,还是补齐?

答案并不是某一种固定的方法,而是一个基于数据情况的判断过程。

在实际研究中,缺失值几乎无法避免。真正重要的,不是追求“最标准”的技术步骤,而是先理解缺失为什么出现,再决定如何处理。

换句话说:

缺失值没有统一答案,关键是理解缺失的原因。