【发布时间】:2016-03-17 01:08:22
【问题描述】:
我正在尝试使用library(imputation) 和kNNImpute() 来估算R 中的一些缺失值。输入数据框是 44 行,每行 13 个变量。 2 列中有 30 个完整观测值和 14 个缺失值观测值。
代码表示它正在估算所有缺失值;但是,它将最后 4 个值估算为 0。从我对代码的阅读来看,这似乎是一个基于使用0 作为错误默认值的缺陷。我的代码:
# impute data
library(imputation)
knn_data <- kNNImpute(x, k= 5)
# examine kNNImpute code
kNNImpute
kNNImpute 的代码:参见第 4、8 行,从第 24 行开始的函数和倒数第 2 行(第 48 行):
[4] prelim = impute.prelim(x)
[8] x.missing = prelim$x.missing
[24] x.missing.imputed = t(apply(x.missing, 1, function(i) {...}
[48] x[missing.matrix2] = 0
??impute.prelim 不返回任何结果(缺少帮助页面)。因此,我无法检查此代码。
但是,kNNImpute 的程序流程似乎是
[4] # run a (seemingly undefined) screening function
[8] # pull in the missing rows for later imputation
[24] # run imputation function
[48] # based on line [4] output, impute all "error rows" == 0
谁能解释为什么会发生这种情况和/或如何解决这个问题?
仅供参考- 我已通过电子邮件向软件包作者发送了此页面的链接。
【问题讨论】:
-
impute.prelim定义完美,只是没有导出。试试imputation:::impute.prelim。不过,我同意将所有未成功估算为 0 的值至少应记录在案(我没有看到)。 -
试试
Amelia或其他mi包? -
我也找不到第 [24] 行函数所需的这两个内部函数的文档:
pdist(第 40 行)和.dist.2dto1d(第 36 行)