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

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

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

注:以上数据来自imputeTS库的tsAirgap;插补数据被标红。

  1. library(imputeTS) 
  2.  
  3. na.random(mydata)                  # Random Imputation 
  4. na.locf(mydata, option = "locf")   # Last Obs. Carried Forward 
  5. na.locf(mydata, option = "nocb")   # Next Obs. Carried Backward 
  6. na.interpolation(mydata)           # Linear Interpolation 
  7. na.seadec(mydata, algorithm = "interpolation") # Seasonal Adjustment then Linear Interpolation 

四、均值,中位数与众数

计算整体均值、中位数或众数是一种非常基本的插补方法,它是唯一没有利用时间序列特征或变量关系的测试函数。该方法计算起来非常快速,但它也有明显的缺点。其中一个缺点就是,均值插补会减少数据的变化差异(方差)。

  1. library(imputeTS) 
  2.  
  3. na.mean(mydata, option = "mean")   # Mean Imputation 
  4. na.mean(mydata, option = "median") # Median Imputation 
  5. na.mean(mydata, option = "mode")   # Mode Imputation 
  6.  
  7. In Python 
  8. from sklearn.preprocessing import Imputer 
  9. values = mydata.values 
  10. imputer = Imputer(missing_values=’NaN’, strategy=’mean’) 
  11. transformed_values = imputer.fit_transform(values) 
  12.  
  13. # strategy can be changed to "median" and “most_frequent” 

五、线性回归

首先,使用相关系数矩阵能够选出一些缺失数据变量的预测变量。从中选择最靠谱的预测变量,并将其用于回归方程中的自变量。缺失数据的变量则被用于因变量。自变量数据完整的那些观测行被用于生成回归方程;其后,该方程则被用于预测缺失的数据点。在迭代过程中,我们插入缺失数据变量的值,再使用所有数据行来预测因变量。重复这些步骤,直到上一步与这一步的预测值几乎没有什么差别,也即收敛。

该方法“理论上”提供了缺失数据的良好估计。然而,它有几个缺点可能比优点还值得关注。首先,因为替换值是根据其他变量预测的,他们倾向于“过好”地组合在一起,因此标准差会被缩小。我们还必须假设回归用到的变量之间存在线性关系——而实际上他们之间可能并不存在这样的关系。

六、多重插补

  • 插补:将不完整数据集缺失的观测行估算填充m次(图中m=3)。请注意,填充值是从某种分布中提取的。模拟随机抽取并不包含模型参数的不确定性。更好的方法是采用马尔科夫链蒙特卡洛模拟(MCMC,Markov Chain Monte Carlo Simulation)。这一步骤将生成m个完整的数据集。
  • 分析:分别对(m个)每一个完整数据集进行分析。
  • 合并:将m个分析结果整合为最终结果。

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

来源:http://www.stefvanbuuren.nl/publications/mice%20in%20r%20-%20draft.pdf

  1. # We will be using mice library in r 
  2. library(mice) 
  3. # Deterministic regression imputation via mice 
  4. imp <- mice(mydata, method = "norm.predict", m = 1) 
  5.  
  6. # Store data 
  7. data_imp <- complete(imp) 
  8.  
  9. # Multiple Imputation 
  10. imp <- mice(mydata, m = 5) 
  11.  
  12. #build predictive model 
  13. fit <- with(data = imp, lm(y ~ x + z)) 
  14.  
  15. #combine results of all 5 models 
  16. combine <- pool(fit) 

这是迄今为止最优选的插补方法,因为它非常易于使用,并且在插补模型正确的情况下它不会引入偏差。

七、分类变量插补

  • 众数插补法算是一个法子,但它肯定会引入偏差。
  • 缺失值可以被视为一个单独的分类类别。我们可以为它们创建一个新类别并使用它们。这是最简单的方法了。
  • 预测模型:这里我们创建一个预测模型来估算用来替代缺失数据位置的值。这种情况下,我们将数据集分为两组:一组剔除缺少数据的变量(训练组),而另一组则包括缺失变量(测试组)。我们可以用逻辑回归和ANOVA等方法来进行预测。
  • 多重插补法。

八、KNN(K近邻)

(编辑:核心网)

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

热点阅读