加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

没有完美的数据插补法,只有最适合的

发布时间:2018-10-24 20:42:10 所属栏目:教程 来源:大数据文摘
导读:大数据文摘出品 编译:张秋玥、胡笳、夏雅薇 数据缺失是数据科学家在处理数据时经常遇到的问题,本文作者基于不同的情境提供了相应的数据插补解决办法。没有完美的数据插补法,但总有一款更适合当下情况。 我在数据清理与探索性分析中遇到的最常见问题之一
副标题[/!--empirenews.page--]

没有完美的数据插补法,只有最适合的

大数据文摘出品

编译:张秋玥、胡笳、夏雅薇

数据缺失是数据科学家在处理数据时经常遇到的问题,本文作者基于不同的情境提供了相应的数据插补解决办法。没有完美的数据插补法,但总有一款更适合当下情况。

我在数据清理与探索性分析中遇到的最常见问题之一就是处理缺失数据。首先我们需要明白的是,没有任何方法能够完美解决这个问题。不同问题有不同的数据插补方法——时间序列分析,机器学习,回归模型等等,很难提供通用解决方案。在这篇文章中,我将试着总结最常用的方法,并寻找一个结构化的解决方法。

一、插补数据vs删除数据

在讨论数据插补方法之前,我们必须了解数据丢失的原因。

  • 随机丢失(MAR,Missing at Random):随机丢失意味着数据丢失的概率与丢失的数据本身无关,而仅与部分已观测到的数据有关。
  • 完全随机丢失(MCAR,Missing Completely at Random):数据丢失的概率与其假设值以及其他变量值都完全无关。
  • 非随机丢失(MNAR,Missing not at Random):有两种可能的情况。缺失值取决于其假设值(例如,高收入人群通常不希望在调查中透露他们的收入);或者,缺失值取决于其他变量值(假设女性通常不想透露她们的年龄,则这里年龄变量缺失值受性别变量的影响)。

在前两种情况下可以根据其出现情况删除缺失值的数据,而在第三种情况下,删除包含缺失值的数据可能会导致模型出现偏差。因此我们需要对删除数据非常谨慎。请注意,插补数据并不一定能提供更好的结果。

没有完美的数据插补法,只有最适合的

二、删除

1. 列表删除

按列表删除(完整案例分析)会删除一行观测值,只要其包含至少一个缺失数据。你可能只需要直接删除这些观测值,分析就会很好做,尤其是当缺失数据只占总数据很小一部分的时候。然而在大多数情况下,这种删除方法并不好用。因为完全随机缺失(MCAR)的假设通常很难被满足。因此本删除方法会造成有偏差的参数与估计。

  1. newdata <- na.omit(mydata) 
  2. # In python 
  3. mydata.dropna(inplace=True) 

2. 成对删除

在重要变量存在的情况下,成对删除只会删除相对不重要的变量行。这样可以尽可能保证充足的数据。该方法的优势在于它能够帮助增强分析效果,但是它也有许多不足。它假设缺失数据服从完全随机丢失(MCAR)。如果你使用此方法,最终模型的不同部分就会得到不同数量的观测值,从而使得模型解释非常困难。

没有完美的数据插补法,只有最适合的

观测行3与4将被用于计算ageNa与DV1的协方差;观测行2、3与4将被用于计算DV1与DV2的协方差。

  1. #Pairwise Deletion 
  2. ncovMatrix <- cov(mydata, use="pairwise.complete.obs") 
  3.  
  4. #Listwise Deletion 
  5. ncovMatrix <- cov(mydata, use="complete.obs") 

3. 删除变量

在我看来,保留数据总是比抛弃数据更好。有时,如果超过60%的观测数据缺失,直接删除该变量也可以,但前提是该变量无关紧要。话虽如此,插补数据总是比直接丢弃变量好一些。

  1. df <- subset(mydata, select = -c(x,z) ) 
  2. df <- mydata[ -c(1,3:4) ] 
  3.  
  4. In python 
  5. del mydata.column_name 
  6. mydata.drop('column_name', axis=1, inplace=True) 
  7.  
  8. Time-Series Specific Methods 

三、时间序列分析专属方法

前推法(LOCF,Last Observation Carried Forward,将每个缺失值替换为缺失之前的最后一次观测值)与后推法(NOCB,Next Observation Carried Backward,与LOCF方向相反——使用缺失值后面的观测值进行填补)

这是分析可能缺少后续观测值的纵向重复测量数据的常用方法。纵向数据在不同时间点跟踪同一样本。当数据具有明显的趋势时,这两种方法都可能在分析中引入偏差,表现不佳。

线性插值。此方法适用于具有某些趋势但并非季节性数据的时间序列。

季节性调整+线性插值。此方法适用于具有趋势与季节性的数据。

季节性+插值法

季节性+插值法

线性插值法

线性插值法

LOCF插补法

LOCF插补法

LOCF插补法

均值插补法

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读