【问题标题】:impute error: a column has 80% missing value估算错误:一列有 80% 的缺失值
【发布时间】:2013-07-03 18:08:32
【问题描述】:

我需要使用 impute.knn() 函数使用 6 个最近邻和欧几里得距离来计算样本中的缺失值(特定探针集)。我必须在我的数据集中用 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!

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

【问题讨论】:

    标签: r missing-data


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • mat1 [,1] [1,] 8176.8 [2,] 8308.4 [3,] 13002.9 [4,] NA [5,] 8962.8 [6,] 8391.5 [7,] 8834.2 [8 ,] 10978.4 [9,] 11863.2 [10,] 10479 [11,] 51.7 [12,] 171.9 [13,] 581.4 [14,] 161.4 [15,] 167.9 [16,] 25.1 [17,] 213.2 [18 ,] 122.6 [19,] 81.7 [20,] 111.8 > impute.knn(mat1) double(n) 中的错误:'length' 参数无效另外:警告消息:在 knnimp(x, k, maxmiss = rowmax, maxp = maxp) : 1 行有超过 50% 的条目丢失;用于这些行的平均插补
    • 我已经尝试过类似的操作并收到此错误消息。我知道这可能是一个非常简单的解决方案,但对于像我这样刚从 R 开始的人来说,我真的很感激任何 cmets。谢谢
    • @user2207860 已经给出了非常清楚的解释。在这一点上,我们实际上只能为您阅读文档。
    猜你喜欢
    • 2014-04-12
    • 1970-01-01
    • 2019-07-14
    • 2018-12-25
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多