R 语言:缺失数据的多重插补

本文最后更新于:2020-08-22 15:52

多重插补 (Mutiple Imputation, MI) 是一种应对无反应误差 (nonresponse bias) 的方法,即当人们无法对调查做出回应时,会丢失研究数据。将创建同一数据集的多个版本,然后将其组合以形成“最佳”值。

临床资料的收集过程中,很难收到完美的数据。对于缺失数据,删除相应的病人或者相应的变量是一种备择方案,但是缺点显而易见。因而,用多重插补方法来填补缺失数据就比较适合。

多重插补通过计算几个不同的选项来缩小关于缺失值的不确定性。 将创建同一数据集的多个版本,然后将其组合以形成最佳值。

代码如下:

生成 5 份插补数据,历遍 5 次

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 加载包
library('mice')

# 导入csv文件
data <- read.csv('origin.csv', sep=',', header=TRUE)

# 插补 这里要比较久
imputed_Data <- mice(data, seed=826, method='pmm') # 默认 m=5, maxit=50

# 提取插补完成的数据
completeData <- list()
for (i in 1:5){
completeData[i] <- mice::complete(imputed_Data, i)
}

# 写入文件
for (i in 1:5){
write.csv(completeData[i], paste('completeData', i, '.csv',sep=''), row.names=FALSE)
}

生成 1 份插补数据,历遍 20 次

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 加载包
library('mice')

# 导入csv文件
data <- read.csv('origin.csv', sep=',', header=TRUE)

# 插补 这里要比较久
imputed_Data <- mice(data, seed=826, method='pmm', m=1, maxit=20)

# 提取插补完成的数据
completeData <- mice::complete(imputed_Data, 1)

# 写入文件
write.csv(completeData, 'completeData.csv', row.names=FALSE)