缺失值插补法|多重插补、回归插补、贝叶斯插补


一、多重插补(MICE)

学习链接:多重插补法
简介:多重插补法(Multiple Imputation, MI)是一种处理数据集中缺失值的统计技术,由Donald Rubin在1978年提出。 这种方法不仅考虑了单个缺失值的不确定性,而且通过创建多个包含不同插补值的完整数据集来反映这种不确定性。 每个数据集都是通过对原始数据中的缺失值进行估计和模拟填补得到的,因此每个数据集都可以独立分析。 分析结果的汇总提供了最终的统计推断,这些推断考虑了由于缺失值而产生的不确定性。

1 多重插补通常包括以下几个步骤:

数据准备:整理数据集,识别缺失值的位置和模式。
初始插补:对缺失值进行初步的插补,可以使用简单的方法如均值、中位数或模式填充。
迭代插补:使用链式方程(Multivari Imputation by Chained Equations, MICE)或其他统计模型对缺失值进行迭代插补,每次迭代都会更新插补值。
生成完整数据集:通过迭代插补生成多个包含不同插补值的完整数据集。
分析每个插补数据集:对每个插补后的数据集进行独立的统计分析。
汇总分析结果:将各个插补数据集的分析结果进行汇总,以获得最终的统计推断。

2 MICE算法的预测和迭代机制的详细解释:

预测步骤
初始化插补:首先,算法会对每个变量的缺失值进行初步估计,这可以通过简单的方法如均值插补或中位数插补来完成。
构建预测模型:对于每个变量,算法会根据其他变量构建一个预测模型。 这些模型通常是回归模型,但也可以是其他类型的统计模型,如决策树或随机森林。
预测缺失值:使用构建的预测模型,算法会对每个变量的缺失值进行预测。 这些预测值是基于其他变量的已知值计算得出的。
迭代步骤
更新数据集:将预测的缺失值插入到原始数据集中,替换掉原来的缺失值。
迭代循环:重复预测和更新步骤,直到达到预设的最大迭代次数或者模型收敛,即新旧预测值不再显著变化。
迭代的重要性
改善估计质量:通过迭代,算法能够利用更新后的数据集来改进预测模型,从而得到更准确的缺失值估计。
处理复杂关系:MICE能够处理变量之间的复杂关系,因为它在每次迭代中都会考虑所有其他变量的信息。
处理不同类型的数据:MICE不仅能够处理数值型数据,还能处理分类数据,这使得它适用于多种类型的数据集。

mice_imputer = IterativeImputer(max_iter=10, random_state=0)
data_mice = mice_imputer.fit_transform(data)
data_mice = pd.DataFrame(data_mice, columns=data.columns)

二、回归插补

基于完整的数据集,建立回归方程。对于包含空值的对象,将已知属性值代入方程来估计未知属性值,以此估计值来进行填充。当变量不是线性相关时会导致有偏差的估计。缺失值是连续的,即定量的类型,才可以使用回归来预测。

# 回归插补(使用 HistGradientBoostingRegressor)
data_reg = data.copy()
for col in data.columns:
    known_data = data_reg[data_reg[col].notnull()]
    missing_data = data_reg[data_reg[col].isnull()]
    if not missing_data.empty:
        reg = HistGradientBoostingRegressor()
        reg.fit(known_data.drop(columns=[col]), known_data[col])
        data_reg.loc[data_reg[col].isnull(), col] = reg.predict(missing_data.drop(columns=[col]))
data_reg = pd.DataFrame(data_reg, columns=data.columns)

三、贝叶斯插补

贝叶斯插补法的应用
**定义模型:**首先,我们假设数学成绩与语文成绩和英语成绩之间存在某种线性关系。 例如,数学成绩可能通过一个线性方程来预测,该方程包含语文成绩和英语成绩作为自变量。 这个模型将是我们对数据的“先验”理解。
**先验分布:**我们对线性模型的参数(如系数和截距)设定先验分布,通常选择共轭先验,如正态分布或t分布,以简化计算。
**似然函数:**基于已知的数据(即所有学生的语文和英语成绩,以及部分学生的数学成绩),我们构建似然函数,描述观测数据与模型参数之间的关系。
**后验分布:**利用贝叶斯定理,结合先验分布和似然函数,我们得到参数的后验分布。 这个分布反映了在观测数据下,参数的不确定性。
**缺失值估计:**最后,对于每个缺失的数学成绩,我们从后验分布中抽样,以得到缺失值的估计。
优势
不确定性估计:贝叶斯插补法不仅提供缺失值的估计,还提供了这些估计的不确定性。 这意味着我们可以知道哪些估计值更加可靠,哪些则可能有较大的误差。
模型的灵活性:我们可以很容易地将更复杂的模型(如非线性模型、混合模型等)纳入贝叶斯框架中,以更准确地反映数据的真实结构

# 对于每一列进行贝叶斯插补
for col in data.columns:
    # 找到最初的数据中缺失值的位置
    missing_indices = data[col].isnull()

    # 分成已知和未知数据
    known_data = data_bayes[~missing_indices]
    missing_data = data_bayes[missing_indices]

    if not missing_data.empty:
        # 训练贝叶斯回归模型
        bayes_reg = BayesianRidge()
        bayes_reg.fit(known_data.drop(columns=[col]), known_data[col])

        # 预测缺失值并填补
        data_bayes.loc[missing_indices, col] = bayes_reg.predict(missing_data.drop(columns=[col]))

data_bayes = pd.DataFrame(data_bayes, columns=data.columns)
  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在R语言中,可以使用多重插补(Multiple Imputation)方来处理缺失值多重插补通过生成多个可能的值来填充缺失的数据项,并利用蒙特卡洛的方进行填补的一种重复模拟的方。其中,R语言的MICE包提供了多重插补的功能。 具体地,通过使用MICE包中的mice()函数,可以对缺失数据进行多重插补。在这个函数中,可以指定采用的插补,比如'rf'。同时,需要指定原数据集中存在缺失的变量,如Ozone和Solar.R。 多重插补的原理是通过多次模拟生成多个完整的数据集,每个数据集都包含了通过插补得到的缺失值。这样,可以利用这些完整的数据集进行后续的数据分析和建模,从而得到更准确的结果。 总结起来,r语言中的多重插补可以通过MICE包中的mice()函数来实现。该方通过生成多个可能的值来填充缺失的数据项,从而反映了缺失数据的不确定性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [数据挖掘实验报告.docx](https://download.csdn.net/download/qq_43934844/87339359)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [用R语言的MICE包对缺失数据进行多重插补(一)-- 缺失数据分析](https://blog.csdn.net/carlwu/article/details/75645092)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [R语言数据缺失值处理(随机森林,多重插补)](https://blog.csdn.net/qq_44877251/article/details/110520177)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值