R:'spatialSign'功能是否有助于识别异常值?

lor*_*lai 4 r outliers

这是我的问题:

"AppliedPredictiveModeling"包中"spatialSign"功能的用途是什么?我在一本关于"空间符号"方法的书中读到了识别异常值的方法.该函数将变量的值投影到圆圈中,如果有异常值,则它们应该出现在圆圈内.R是否与此包中使用的"空间符号"相同?

如果是这样,我提交此代码的时候怎么样:

plotSubset <- data.frame(scale(zquant1[, c("AGE", "FL")]))
xyplot(AGE ~ FL,
       data = plotSubset,
       auto.key = list(columns = 10))
transformed <- spatialSign(plotSubset)
transformed <- as.data.frame(transformed)
xyplot(AGE ~ FL,
       data = transformed,
       auto.key = list(columns = 2))
Run Code Online (Sandbox Code Playgroud)

可能看起来我在第一张图片中有一个异常值,但空间符号方法(第二张图像)不能识别它?

(第1张图片)http://www.imagesup.net/?di=5142245473711 (第2张图片)http://www.imagesup.net/?di=5142245489110

rcs*_*rcs 6

不,它无法识别异常值.它只是一种预处理方法,它将异常值带到大多数数据中.

摘自Applied Predictive Modeling一书:

如果模型被认为对异常值敏感,那么可以最小化问题的一个数据转换就是空间符号(Serneels等,2006).此过程将预测值投影到多维球体上.这具有使所有样品与球体中心具有相同距离的效果.

Serneels,Sven,Evert De Nolf和Pierre J. Van Espen."空间符号预处理:为多变量估计器提供中等鲁棒性的简单方法."化学信息与建模期刊46(3):1402-9.DOI:10.1021/ci050498u.

set.seed(1)
n <- 10000
tmp <- data.frame(x=c(rnorm(n, 0, 0.02), -1, 1, 0.5),
                  y=c(rnorm(n, 0, 0.2), -1, 1, -2))

plot(tmp, asp=1, col=c(rep(1,n), 2, 3, 4), pch=19)
grid()
plot(spatialSign(tmp), asp=1, col=c(rep(1,n), 2, 3, 4), pch=19)
grid()
Run Code Online (Sandbox Code Playgroud)

spatialSign示例