第18章 处理缺失数据的高级方法
程序员文章站
2022-03-22 23:02:22
...
注:R语言的再复习之路
1. 处理缺失值的步骤
- 识别缺失数据
- 检查导致数据缺失的原因
- 删除包含缺失值的实例或用合理的数值代替缺失值
2. 识别缺失值
函数complete.cases()
可以用来识别矩阵或数据框中没有缺失值的行。若每行都包含完整的实例,则返回TRUE的逻辑向量;若每行有一个或多个缺失值,则返回FALSE。
## 列出没有缺失值的行
sleep[complete.cases(sleep), ]
## 列出有一个或多个缺失值的行
sleep[!complete.cases(sleep), ]
## 排除缺失值求均值
mean(!complete.cases(sleep))
3. 探索缺失值模式
3.1 列表探究缺失值数据
library(mice)
data(sleep, package = 'VIM')
md.pattern(sleep)
- 第一列表示各缺失值模式的实例个数
- 最后一列表示各模式中有缺失值的变量的个数
- 最后一行表示每个变量中缺失值的数目
3.2 图形探究缺失值数据
## 方法1
library('VIM')
aggr(sleep, prop = FALSE, numbers = TRUE)
## 方法2
matrixplot(sleep)
## 方法3
marginplot(sleep[c('Gest', 'Dream')], pch = 20, col = c('darkgrey', 'red', 'blue'))
3.3 用相关性探索缺失值
x <- as.data.frame(abs[is.na(sleep)))
y <- x[which(apply(x, 2, sum) > 0)]
cor(y)
注:我们平时就可以用abs()
函数将TRUE和FLASE换成1和0。
4. 理性处理不完整数据
4.1 完整实例分析(行删除)
## 方法1
newdata <- mydata[complete.cases(mydata), ]
## 方法2
newdata <- na.omit(mydata)
4.2 多重插补
## 格式
library(mice)
imp <- mice(data, m)
fit <- with(imp, analysis)
pooled <- pool(fit)
summary(pooled)
## 例子
imp <- mice(sleep, seed = 1234)
fit <- with(imp, lm(Dream ~ Span + Gest))
pooled <- pool(fit)
summary(pooled)
上一篇: 怎样把小程序入口关了
下一篇: 小程序标题可以居中吗?