R中的回归插补

机器算法验证 r 回归 数据插补
2022-03-16 13:38:13

假设我有以下示例数据,其中行是观察值,列是变量,NA 代表缺失值。

 1  2 NA  4  5 6 14 5  2
 6 13  7  1 11 4 NA 9  6
15 12  3 12 NA 8  3 7 12
 8  1 NA  7  8 9  4 6  1

我想通过回归来估算缺失值(我知道我可以通过手段来估算,但我需要看看回归是如何执行的)。有一个名为“Amelia”的 CRAN 包用于回归插补,但它给出了上述数据的错误,即 #observations 小于 #variables。'mi' 包也会出错。我可以自己编写代码,但我不想重新发明轮子,因为我确信已经有一个包可以比我编写的包运行得更快(速度很重要,因为我将对数千个变量和数百个变量进行估算具有大量缺失值的观测值)。那么,有人知道一个可以通过回归来估算上述值的包吗?谢谢。

1个回答

即使这个线程有点旧,我相信有些人仍然试图在这个线程中找到解决方案。因此,我想添加一个示例,您如何使用mice 包进行回归插补:

library("mice")

# Example data
data <- data.frame(x1 = c(1, 6, 15, 8, 5, 1, 7, 4),
                   x2 = c(2, 13, 12, 1, 6, 6, 1, 2),
                   x3 = c(NA, 7, 3, NA, 1, 2, 7, 3),
                   x4 = c(4, 1, 12, 7, 12, 1, 6, 6),
                   x5 = c(5, 11, NA, 8, 8, 11, 5, 6),
                   x6 = c(6, 4, 8, 9, 3, 9, 6, 12),
                   x7 = c(14, NA, 3, 4, 12, 5, 10, 10),
                   x8 = c(5, 9, 7, 6, 12, 2, 6, 3),
                   x9 = c(2, 6, 12, 1, 2, 2, 7, 1))

# Deterministic regression imputation via mice
imp <- mice(data, method = "norm.predict", m = 1)

# Store data
data_imp <- complete(imp)

对于更大的数据集,您还可以使用“norm.nob”方法将随机误差项添加到估算值:

# Stochastic regression imputation
imp <- mice(data, method = "norm.nob", m = 1)

您可以在以下两个链接中找到有关回归插补的更多信息:

R中的确定性与随机回归插补和示例

小鼠作者 Stef van Buuren 缺失数据的灵活插补