回归方程填补缺失值的操作方法(附python代码)
1. 背景描述:
清洗过程中经常会遇到异常值和缺失值等问题,有时候,会把异常值看作缺失值来处理。一般的缺失值处理方法包括:删除、统计值充填(均值、中位数等)、回归方程预测充填等。
使用直接删除这种方法简单易行,但缺点是,在记录数据较少的情况下,会造成样本量的进一步减少,可能会改变响应变量的原有分布,造成分析结果不准确。因此,将异常值视为缺失值来处理的益处在于可以利用现有变量的信息进行建模挖掘,对异常值(缺失值)进行填补。(本文旨在探索如何使用回归方程进行预测估算,对异常值、缺失值进行充填的操作方法)
2. 应用场景:
回归方程充填法,是选择若干能预测缺失值的自变量,通过建立回归方程估算缺失值。该方法能尽可能地利用原数据集中的信息,但也存在一些不足之处:1. 虽然这是一个无偏估计,但会忽视随机误差,低估标准差和其他未知性质的测量值。2.使用前,必须假设存在缺失值所在的变量与其他变量是存在线性关系的,但现实它们不一定存在这样的线性关系,这可以借助统计工具来辨析,但往往更需要建模人员的实践经验和业务知识来进行分析和判断。
3. 方法步骤:
a. 确定充填缺失值的变量(特征列)
b. 拆分原始数据集:
根据需要充填缺失值的变量,把原始数据集拆分为2个子集(1. 不含有缺失值:dataset_train; 2. 只含有缺失值dataset_pred)
c. 辨析并检验相关变量的相关性:
经验分析判定与充填缺失值的变量相关的属性列有哪些,应用统计分析工具,在dataset_train数据集上查看验证所选择的属性列之间的相关性。
d. 建模并预测:
使用dataset_train数据集建立线性回归模型,并应用建好的模型对dataset_pred数据集中的缺失变量进行预测估计
e. 合并还原数据集:
将两个子集合并还原为一个数据集,为后续建模准备好数据。
4. 示例代码:
数据集说明:
数据集截取自一个计算强度(响应值为”strength“)的部分原始数据作为示例。
本例中"force"是一个重要的特征,但是含有缺失值,尝试使用回归方程预测充填缺失值,为建立预测"Strength"模型做数据准备。
-
载入数据并确定需要充填缺失值的特征:
-
拆分数据集:
发现"item"为3, 12, 16, 26的"force"特征存在缺失值。考虑到数据量不是太多,检查变量”force“是否符合正态分布。
上述分析的结果得出:p值为0.612,大于0.05,特征数据符合正态分布。 -
辨析并检验相关变量的相关性:
根据实践经验可了解到,焊接拉拔力会受到温度(temp)、时间(duration)和焊膏量(paste_qty)等因素的影响,因此,我们将选择利用上述的这3个因子建立回归方程, 在此之前先检验各个因子与预测变量(force)之间的相关性。
由上述结果表明:我们选择的因子与“force”属性之间存在一定的相关性。 -
建模并预测:
由此得到的回归方程为:
force = 12.246 + 0.238 * temp - 0.262 * time + 4.419 * paste_qty
通过模型预测,估算出在"force"中的4个缺失值。 -
合并还原数据集:
检查"item"为3, 12,16,26的"force"特征,结果显示原有的缺失值已经被使用回归方程的预测值填充好了!
(备注:本文旨在探索操作的方法,所以没有特别关注建模的性能结果。但在真实的生产应用中,必须根据实际情况进行判断、选择并关注过程中所建模型的性能情况。)
附上数据集和源码
来源:CSDN
作者:若芷兰
链接:https://blog.csdn.net/weixin_45914452/article/details/103570155