注:以上数据来自imputeTS库的tsAirgap;插补数据被标红。
- library(imputeTS)
-
- na.random(mydata) # Random Imputation
- na.locf(mydata, option = "locf") # Last Obs. Carried Forward
- na.locf(mydata, option = "nocb") # Next Obs. Carried Backward
- na.interpolation(mydata) # Linear Interpolation
- na.seadec(mydata, algorithm = "interpolation") # Seasonal Adjustment then Linear Interpolation
四、均值,中位数与众数
计算整体均值、中位数或众数是一种非常基本的插补方法,它是唯一没有利用时间序列特征或变量关系的测试函数。该方法计算起来非常快速,但它也有明显的缺点。其中一个缺点就是,均值插补会减少数据的变化差异(方差)。
- library(imputeTS)
-
- na.mean(mydata, option = "mean") # Mean Imputation
- na.mean(mydata, option = "median") # Median Imputation
- na.mean(mydata, option = "mode") # Mode Imputation
-
- In Python
- from sklearn.preprocessing import Imputer
- values = mydata.values
- imputer = Imputer(missing_values=’NaN’, strategy=’mean’)
- transformed_values = imputer.fit_transform(values)
-
- # 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
- # We will be using mice library in r
- library(mice)
- # Deterministic regression imputation via mice
- imp <- mice(mydata, method = "norm.predict", m = 1)
-
- # Store data
- data_imp <- complete(imp)
-
- # Multiple Imputation
- imp <- mice(mydata, m = 5)
-
- #build predictive model
- fit <- with(data = imp, lm(y ~ x + z))
-
- #combine results of all 5 models
- combine <- pool(fit)
这是迄今为止最优选的插补方法,因为它非常易于使用,并且在插补模型正确的情况下它不会引入偏差。
七、分类变量插补
- 众数插补法算是一个法子,但它肯定会引入偏差。
- 缺失值可以被视为一个单独的分类类别。我们可以为它们创建一个新类别并使用它们。这是最简单的方法了。
- 预测模型:这里我们创建一个预测模型来估算用来替代缺失数据位置的值。这种情况下,我们将数据集分为两组:一组剔除缺少数据的变量(训练组),而另一组则包括缺失变量(测试组)。我们可以用逻辑回归和ANOVA等方法来进行预测。
- 多重插补法。
八、KNN(K近邻)
(编辑:PHP编程网 - 黄冈站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|