Я рассчитываю алгоритм обнаружения выбросов Тьюки на наборе данных о ценах.
Дело в том, что мне нужно, чтобы он вычислялся по группе (другая переменная, включенная в тот же набор данных), которая отлично работает с командой aggregate
до тех пор, пока мне не нужно вычислить среднее значение, используя только данные между процентилем 5 до медианы и один использует только данные от медианы до процентиля 95.
Насколько я знаю, команда идет так: aggregate(doc$
x, by=list(doc$
group), FUN=mean, trim = 0.05)
, если среднее было обрезано симметрично, взяв верхние и нижние 5% (итого 10%) из данных перед печатью результата. Я не знаю, как выполнить следующие шаги, где мне нужно рассчитать верхнее и нижнее среднее значение, взяв медиану в качестве точки деления, сохраняя при этом верхнее и нижнее значение со скидкой 5%.
medlow <- aggregate(doc1$`rp`, by=list(doc1$`Código Artículo`), FUN=mean,trim =c(0.05,0.5))
medup <- aggregate(doc1$`rp`, by=list(doc1$`Código Artículo`), FUN=mean,trim =c(0.5,0.95))
medtrunc <- aggregate(doc1$`rp`, by=list(doc1$`Código Artículo`), FUN=mean,trim = 0.05)
Я ожидаю, что на выходе будет номер, который мне нужен для каждой группы, но он идет
Ошибка в mean.default(X[[i]], ...) : 'trim' должен быть числовым и иметь длину один.