我编写了一个函数,该函数应该为数据集中的每个变量返回一个值列表,这些值与列的平均值相差超过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
}