在函数中使用mapply来检测距离均值超过3sd的异常值会返回不正确的值

时间:2016-07-12 18:51:00

标签: function mapply

我编写了一个函数,该函数应该为数据集中的每个变量返回一个值列表,这些值与列的平均值相差超过3sd。因此,我使用mapply来比较数据集中的每个单个值,它的绝对值是否大于其所属的相应变量的sd的三倍。该函数有效,但它给了我一堆“异常值”,这些异常值不在此截止值之外。我哪里可能出错了?

findOutlier <- function(data, cutoff = 3) {

## Calculate the sd
sds <- apply(data, 2, sd, na.rm = TRUE)

## Identify the cells with value greater than cutoff * sd

result <- mapply(function(d, s) {
which(abs(d) > cutoff * s)
}, data, sds)
result
}

0 个答案:

没有答案