我想使用“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是否可能被视为“坏”技术,或者您如何解释这种缺乏信息?
答案 0 :(得分:1)
如果您只有一个winsorize向量,则可以通过为winsor2
和na.rm = TRUE
函数设置median
来轻松修改mad
定义的here函数在代码中。它提供与winsorize {robustHD}相同的功能,但有1个差异:winsorize
调用robStandardize
,其中包括对非常小的值的一些调整。我不明白它在做什么,所以如果你放弃它,请注意。
如果要对矩阵的各列进行winsorize(与使用winsorize
中另一个选项的容差椭圆的多变量winsorization相反),您应该能够从{{1}中挖取必要的代码}和winsorize.default
。它们与standardize
做同样的事情,但是以矩阵形式。同样,您需要根据需要将自己的winsor2
设置添加到函数中。
答案 1 :(得分:0)
一些可能有用的想法:
NA
处理)包括在他的包中,这对于该方法本身并不重要。说完了,当然可以。确定是否有意省略包装功能的唯一方法是实际询问包装的开发者。如果问题更多地针对统计数据以及存在缺失值时方法的有效性,则交叉验证可能更有帮助。 从计算的角度来看,对问题的简单解决方案是在开始使用函数之前省略所有不完整的情况。从直觉上看,具有缺失值的案例也不容易被证明。首先,无论如何必须对完整的案例进行均值和标准差的计算,然后不清楚将哪个值分配给那些具有缺失值的值,因为它们可能不一定是异常值,即使它们可能是异常值。
如果省略不完整的案例不适合您,您可能需要寻找插补方法(在简历上)。