Я хотел бы удалить выбросы из каждого столбца моего набора данных... При поиске в Интернете кажется, что идентификатор Hampel должен быть хорошим решением моей проблемы, в которой есть метод обнаружения выбросов: [median – t * MAD, median + t * MAD]
.
С инструкциями, предоставленными: 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
Может ли кто-нибудь помочь мне в этом? Как я могу избежать NA в моих данных?
Ссылку на мои образцы данных можно найти по адресу: https://drive.google.com/file/d/0B86_a8ltyoL3NHNaeWk3d1QyQms/view?usp=sharing