我想從我的數據集的每一列中刪除異常值...通過搜索網絡,似乎Hampel標識符應該是我的問題的一個很好的解決方案,它具有異常值檢測技術:[median – t * MAD, median + t * MAD]
。去除異常值(outlierMAD命令在pracma包中)
與指令提供:http://exploringdatablog.blogspot.com/2012/01/moving-window-filters-and-pracma.html我想用「outlierMAD」命令來完成我的任務:
outlierMAD <- function (x, k){
n <- length(x)
y <- x
ind <- c()
L <- 1.4826
t0 <- 3
for (i in (k + 1):(n - k)) {
x0 <- median(x[(i - k):(i + k)])
S0 <- L * median(abs(x[(i - k):(i + k)] - x0))
if (abs(x[i] - x0) > t0 * S0) {
y[i] <- x0
ind <- c(ind, i)
}
}
list(y = y, ind = ind)
}
但我得到一個錯誤,當我嘗試:
Error in if (abs(x[i] - x0) > t0 * S0) { :
missing value where TRUE/FALSE needed
燦任何人都可以幫助我?我怎樣才能避免我的數據中有NAs?
我的樣本數據的鏈接,可以發現: https://drive.google.com/file/d/0B86_a8ltyoL3NHNaeWk3d1QyQms/view?usp=sharing
複製[此](HTTP的:/ /stats.stackexchange.com/questions/121071/can-we-use-leave-one-out-mean-and-standard-deviation-to-reveal-the-outliers/121075?noredirect=1#comment230920_121075)。 – user189035 2014-10-23 07:57:49