zoukankan      html  css  js  c++  java
  • 缺失值处理(前面两种方法偏向于统计学)

    最常见的插值方法是mean imputation(也叫mean substitution)

    实际上,这个方法不推荐使用,在大部分情况下,没有其他方法的时候可以采取这个方法。
    原因:1: mean imputation没有保持变量之间的关系(因为是观察值的均值,如果说缺失数据是随机缺失的,那么这个均值估计才是无偏的,也是这个方法实现的逻辑。
    如果说只是估计均值(点估计),那么这个估计是无偏的,但是会让标准差有偏。但是大部分的研究是对变量之间的关系感兴趣,所以mean imputation不是一个好的选择。
    当y值缺失的时候,用mean imputation一般会降低x,y之间的相关性,但是如果是x缺失,用这种方法,会增加x,y之间的相关性)
    2. single imputation(也就是单一值替换)会低估误差的方差(error variation),因为这些替换值都是估计的,会存在误差,但是统计软件认为这些
    值是真实的,所以会降低标准差的估计,会导致p-value的降低,增加Type I误差的几率。
    建议方法: multiple imputation 和 maximum likelihood

    处理缺失数据的三个标准:
    1、非偏置的参数估计(unbiased parameter estimates): 不管你估计means, regressions或者是odds ratios,都希望参数估计可以准确代表真实的总体参数。
    在统计项中,这意味着估计需要是无偏的。有缺失值可能会影响无偏估计,所以需要处理。
    2、有效的能力(adequate power):删除缺失数据会降低采样的大小,因此会降低power。如果说问题是无偏的,那么得到的结果会是显著的,那么会有足够的能力来检验这个效力。
    (have adequate power to detect your effects)。反之,整个检测可能失效。
    3、准确的标准差(accurate standard errors)(影响p值和置信区间):不仅需要参数估计无偏,还需要标准差估计准确,在统计推断中才会有效。
    这也是为什么mean imputation的填充方法不好的原因。

    两个推荐的关于缺失值的处理方法:multiple imptation 和 maximum likelihood
    这两个方法满足前面处理缺失数据的三个标准。
    方法的假设前提:这两个方法要求数据是随机缺失的————与缺失值无关。
    满足这个假设,那么这个估计(也就是说模型的参数(e.g.回归系数)和标准差)是无偏的,并且不会缺少估计能力(no loss of power)。

    multiple imputation(MI):
    类似与以前的imputation方法,MI对缺失的数据补充估计值。但是为了捕捉这些估计值的不确定性,MI多次估计这个值。因为在imputation方法中有
    内嵌的误差,所以多次估计的值会相似,但不会一致。
    这个结果是多个数据集合,所有没有缺失的值有相同的值,并且每个数据集的imputed values的值都是有一点点区别的。(The result is multiple data sets
    with identical values for alll of the non-missing values and slightly different valus for the imputed values in each data set.)
    针对这些不同的数据集,都用已经选定好的模型进行拟合,合并这些模型的结果。因为这imputed values 里面有方差,所以在参数估计中也会存在方差,这样
    就可以准确的估计标准差和p值)

    maximum likelihood:
    第二种方法是利用最大似然估计分析所有的,非完全的数据集。这个方法不会impute任何数据,但是会利用每一个样本中可提供的数据来计算最大似然估计。
    采用最大似然估计的参数是在观察数据中最有可能的参数的值。
    当数据丢失的时候,我们可以条件化似然函数(factor the likelihood function)。这个似然是分开某些变量有完整数据和和全部的变量有完整数据的数据分开计算的。
    这两个似然函数同时最大化来找到估计值。与multiple imputation类似,这个方法给出无偏参数估计和标准差。这个方法的优点是没有multiple imputation要求的那样
    需要仔细的选择需要impute values。但是这种方法仅限于线性模型。

    一般在处理缺失值中,可以采用回归的方法或者是knn的方法拟合缺失值。

    <以下内容来源 http://www.cnblogs.com/charlotte77/p/5606926.html>

    1.直接删除----适合缺失值数量较小,并且是随机出现的,删除它们对整体数据影响不大的情况

    2.使用一个全局常量填充---譬如将缺失值用“Unknown”等填充,但是效果不一定好,因为算法可能会把它识别为一个新的类别,一般很少用

    3.使用均值或中位数代替----优点:不会减少样本信息,处理简单。缺点:当缺失数据不是随机数据时会产生偏差.对于正常分布的数据可以使用均值代替,如果数据是倾斜的,使用中位数可能更好。

    4.插补法

      1)随机插补法----从总体中随机抽取某个样本代替缺失样本
      2)多重插补法----通过变量之间的关系对缺失数据进行预测,利用蒙特卡洛方法生成多个完整的数据集,在对这些数据集进行分析,最后对分析结果进行汇总处理
      3)热平台插补----指在非缺失数据集中找到一个与缺失值所在样本相似的样本(匹配样本),利用其中的观测值对缺失值进行插补。
        优点:简单易行,准去率较高
        缺点:变量数量较多时,通常很难找到与需要插补样本完全相同的样本。但我们可以按照某些变量将数据分层,在层中对缺失值实用均值插补
      4)拉格朗日差值法和牛顿插值法(简单高效,数值分析里的内容)
    5.建模法
    可以用回归、使用贝叶斯形式化方法的基于推理的工具或决策树归纳确定。例如,利用数据集中其他数据的属性,可以构造一棵判定树,来预测缺失值的值。
  • 相关阅读:
    水库采样算法
    在Windows的控制台和Linux的终端中显示加载进度
    如何在普通用户权限cmd怎么使用命令行变为管理员权限
    MySql命令行无法显示中文
    MySql精简
    C语言中的数据类型转换函数
    关于C语言命令行参数问题
    postgres 基本操作
    简单的实现HTTP密码验证登陆
    filebeat+logstash配置
  • 原文地址:https://www.cnblogs.com/luxuriance-lily/p/8732929.html
Copyright © 2011-2022 走看看