缺失值是指粗糙数据中由于缺少信息而造成的数据的聚类、分组、删失或截断。它指的是现有数据集中某个或某些属性的值是不完全的。
缺失值从缺失的分布来讲可以分为完全随机缺失,随机缺失和完全非随机缺失。
-
完全随机缺失(missing completely at random,MCAR)
指的是数据的缺失是随机的,数据的缺失不依赖于任何不完全变量或完全变量。
-
随机缺失(missing at random,MAR)
指的是数据的缺失不是完全随机的,即该类数据的缺失依赖于其他完全变量。
-
完全非随机缺失(missing not at random,MNAR)
指的是数据的缺失依赖于不完全变量自身。
naniar
缺失数据摘要
函数 |
说明 |
vis_miss(x) |
缺失数据可视化摘要 |
miss_var_summary(data) |
缺失数据数值摘要
data %>%group_by(factor) %>%miss_var_summary()
|
n_miss(x) , n_complete(x) |
缺失行/完整行数量 |
prop_miss(x) , prop_complete(x) |
缺失行/完整行比例 |
geom_miss_point() |
ggplot2散点图扩展 |
gg_miss_var(x,show_pct = FALSE) |
绘制每个变量的缺失情况 |
阴影矩阵
函数 |
说明 |
as_shadow(data) |
shadow matrices (NA+!NA) |
bind_shadow() |
将阴影矩阵绑定到原始数据框 |
data %>%bind_shadow() %>%
ggplot(aes(x = v1, fill = v2_NA)) + geom_density(alpha = 0.5)
可视化缺失值变量分布关系
可视化估算值分布:
data %>%bind_shadow() %>%
simputation::impute_lm(Ozone ~ Temp + Solar.R) %>%
ggplot(aes(x = Solar.R,y = Ozone,colour = Ozone_NA)) +
geom_point()
simputation : make imputation simpler for missing data
-
中位数插补:impute_median(dat, formula)
formula: <imputed variables> ~ <model object>
-
模型插补,函数调用约定如下:
impute_<model>(data, formula, … )
function |
model |
package |
impute_rlm |
M-estimation |
MASS |
impute_en |
ridge/elasticnet/lasso |
glmnet |
impute_cart |
CART |
rpart |
impute_rf |
random forest |
randomForest |
impute_rhd |
random hot deck |
VIM (optional) |
impute_shd |
sequential hot deck |
VIM (optional) |
impute_knn |
k nearest neighbours |
VIM (optional) |
impute_mf |
missForest |
missForest |
impute_em |
mv-normal |
norm |
for example
data %>%
impute_lm(v1 ~ v2 + v3) %>%impute_median(v1 ~ v4)%>% #链接插补
impute_rlm(data, v1 + v2 ~ v3 +v4) #多变量插补
data %>% group_by(factor) %>% impute_lm(v1 ~ v2+v3) #分组插补