我的数据集非常大,大约缺少5%的随机值。这些变量相互关联。以下示例R数据集只是一个具有虚拟相关数据的玩具示例。
set.seed(123)
# matrix of X variable
xmat <- matrix(sample(-1:1, 2000000, replace = TRUE), ncol = 10000)
colnames(xmat) <- paste ("M", 1:10000, sep ="")
rownames(xmat) <- paste("sample", 1:200, sep = "")
#M variables are correlated
N <- 2000000*0.05 # 5% random missing values
inds <- round ( runif(N, 1, length(xmat)) )
xmat[inds] <- NA
> xmat[1:10,1:10]
M1 M2 M3 M4 M5 M6 M7 M8 M9 M10
sample1 -1 -1 1 NA 0 -1 1 -1 0 -1
sample2 1 1 -1 1 0 0 1 -1 -1 1
sample3 0 0 1 -1 -1 -1 0 -1 -1 -1
sample4 1 0 0 -1 -1 1 1 0 1 1
sample5 NA 0 0 -1 -1 1 0 NA 1 NA
sample6 -1 1 0 1 1 0 1 1 -1 -1
sample7 NA 0 1 -1 0 1 -1 0 1 NA
sample8 1 -1 -1 1 0 -1 -1 1 -1 0
sample9 0 -1 0 -1 1 -1 1 NA 0 1
sample10 0 -1 1 0 1 0 0 1 NA 0
在这种情况下,是否有(最佳)估算缺失值的方法?随机森林算法有帮助吗?R中任何有效的解决方案将不胜感激。
编辑:
(1)缺失值随机分布在变量和样本中。由于变量数量非常大(在此示例中为10000),而在上述虚拟示例中样本数量较小,因此大约为200。我们查看所有变量(10000)上的任何样本,由于变量数量众多,很有可能某个变量的值会丢失。因此,仅删除样本不是选项。
(2)在估算过程中,变量既可以视为定性变量,也可以定性(二进制)变量。唯一的判断是我们可以预测它的准确性(准确性)。因此,像0.98而不是1这样的预测可能是可以接受的,而不是0 vs 1或-1 vs1。我可能需要在计算时间和准确性之间进行权衡。
(3)我想到的问题是,与变量数量相比,变量数量大时,过度拟合会如何影响结果。
(4)由于缺失值的总数约为5%,并且是随机的(未采取任何措施将其集中在任何变量或样本中,因为采取了谨慎措施以去除缺失值非常高的变量或样本)
(5)使数据完整以进行分析是首要目标,其次是准确性。因此对准确性不太敏感。