R:Winsorizing(强大的HD)与NA不兼容?

时间:2014-07-22 11:53:39

标签: r na outliers

我想使用“robustHD”包中提供的winsorize函数,但它似乎不适用于NA,如示例中所示

## generate data
set.seed(1234)     # for reproducibility
x <- rnorm(10)     # standard normal
x[1] <- x[1] * 10  # introduce outlier

x[11]<- NA ## adding NA

## winsorize data
x
winsorize(x)

我搜索了问题,但没有找到解决方案,甚至没有找到类似问题的人。 winsorizing是否可能被视为“坏”技术,或者您如何解释这种缺乏信息?

2 个答案:

答案 0 :(得分:1)

如果您只有一个winsorize向量,则可以通过为winsor2na.rm = TRUE函数设置median来轻松修改mad定义的here函数在代码中。它提供与winsorize {robustHD}相同的功能,但有1个差异:winsorize调用robStandardize,其中包括对非常小的值的一些调整。我不明白它在做什么,所以如果你放弃它,请注意。

如果要对矩阵的各列进行winsorize(与使用winsorize中另一个选项的容差椭圆的多变量winsorization相反),您应该能够从{{1}中挖取必要的代码}和winsorize.default。它们与standardize做同样的事情,但是以矩阵形式。同样,您需要根据需要将自己的winsor2设置添加到函数中。

答案 1 :(得分:0)

一些可能有用的想法:

  1. Stack Overflow是一个编程板,可以询问编程相关问题并给出答案。如果某些统计程序是否合适或被认为是错误的,那么您更有可能在交叉验证中找到知识渊博的人。
  2. 统计方法和统计方法在某个软件环境中的实现通常是相当独立的。也就是说,如果包的开发者没有将某些特征(例如NA处理)包括在他的包中,这对于该方法本身并不重要。说完了,当然可以。确定是否有意省略包装功能的唯一方法是实际询问包装的开发者。如果问题更多地针对统计数据以及存在缺失值时方法的有效性,则交叉验证可能更有帮助。
  3. 我不知道为什么您无法找到有关此主题的任何信息。我可以自信地说,这是我第一次听到“赢得”这个词并且#34;。我实际上必须查找它,我可以肯定地说我从未遇到过这种方法,我个人从不使用它。
  4. 从计算的角度来看,对问题的简单解决方案是在开始使用函数之前省略所有不完整的情况。从直觉上看,具有缺失值的案例也不容易被证明。首先,无论如何必须对完整的案例进行均值和标准差的计算,然后不清楚将哪个值分配给那些具有缺失值的值,因为它们可能不一定是异常值,即使它们可能是异常值。

    如果省略不完整的案例不适合您,您可能需要寻找插补方法(在简历上)。