我需要使用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!
这是我的错误,任何建议都将不胜感激
答案 0 :(得分:1)
请注意,由于您只有一行,因此任何缺失值都将是该列的100%缺失值。因此,在列上添加NA并计算inpute.knn(mat1,2)将导致您正在阅读的错误消息。
正如已经多次指出的那样,?impute.knn
的文件中明确说明了这一点:
rowmax - 任何行中允许的最大丢失数据百分比(默认值 50%)。对于任何超过rowmax%缺失的行都使用 每个样本的总体平均值。
colmax - 丢失数据的最大百分比 允许在任何列中(默认为80%)。如果任何列有超过 colmax%丢失数据,程序停止并报告错误。
因此,解决方案是使用多个行或列的测试矩阵,然后根据需要进一步调整这些参数。