估算错误:列的缺失值为80%

时间:2013-07-03 18:08:32

标签: r missing-data

我需要使用6个最近邻居计算样本中的缺失值(特定探针集),并使用impute.knn()函数计算欧几里德距离。我不得不在我的数据集中用NA替换一个值,然后将缺少的值用于测试函数

mat1
     [,1]   [,2]   [,3]    [,4]   [,5]   [,6]   [,7]   [,8]    [,9]    [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20]
[1,] 8176.8 8308.4 13002.9 8385.3 8962.8 8391.5 8834.2 10978.4 11863.2 10479 51.7  171.9 581.4 161.4 167.9 25.1  213.2 122.6 81.7  111.8
> mat1[1,4] <- NA
> mat1
     [,1]   [,2]   [,3]    [,4] [,5]   [,6]   [,7]   [,8]    [,9]    [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20]
[1,] 8176.8 8308.4 13002.9 NA   8962.8 8391.5 8834.2 10978.4 11863.2 10479 51.7  171.9 581.4 161.4 167.9 25.1  213.2 122.6 81.7  111.8
> impute.knn(mat1,2)
Error in impute.knn(mat1, 2) : 
  a column has more than 80 % missing values!

这是我的错误,任何建议都将不胜感激

1 个答案:

答案 0 :(得分:1)

请注意,由于您只有一行,因此任何缺失值都将是该列的100%缺失值。因此,在列上添加NA并计算inpute.knn(mat1,2)将导致您正在阅读的错误消息。

正如已经多次指出的那样,?impute.knn的文件中明确说明了这一点:

  

rowmax - 任何行中允许的最大丢失数据百分比(默认值   50%)。对于任何超过rowmax%缺失的行都使用   每个样本的总体平均值。

     

colmax - 丢失数据的最大百分比   允许在任何列中(默认为80%)。如果任何列有超过   colmax%丢失数据,程序停止并报告错误。

因此,解决方案是使用多个行或列的测试矩阵,然后根据需要进一步调整这些参数。