У меня есть List<int>
, и мне нужно удалить выбросы, поэтому я хочу использовать подход, в котором я беру только середину n. Я хочу средний с точки зрения ценностей, а не индекса.
Правильное удаление выбросов полностью зависит от статистической модели, которая точно описывает распределение данных - которые вы нам не предоставили.
Предполагая, что это нормальное (гауссово) распределение, вот что вы хотите сделать.
Сначала вычислите среднее . Это легко; это просто сумма, деленная на количество предметов.
Во-вторых, вычислите стандартное отклонение . Стандартное отклонение является мерой того, насколько «разбросаны» данные вокруг среднего значения. Вычислить это по:
- принять разницу каждой точки от среднего
- квадрат разница
- взять среднее значение квадратов - это дисперсия
- взять квадратный корень из дисперсии - это стандартное отклонение
При нормальном распределении 80% пунктов находятся в пределах 1,2 стандартных отклонений от среднего. Например, предположим, что среднее значение равно 50, а стандартное отклонение равно 20. Можно ожидать, что 80% выборки упадет между 50 - 1,2 * 20 и 50 + 1,2 * 20. Затем вы можете отфильтровать элементы из списка. которые находятся за пределами этого диапазона.
Обратите внимание, что это , а не удаление "выбросов". Это удаляет элементы, которые имеют более 1,2 стандартных отклонения от среднего значения, чтобы получить 80% интервал вокруг среднего значения. В нормальном распределении ожидают увидеть «выбросы» на регулярной основе. 99,73% элементов находятся в пределах трех стандартных отклонений от среднего значения, что означает, что если у вас есть тысяча наблюдений, совершенно нормально видеть два или три наблюдения, превышающие три стандартных отклонения за пределами среднего значения! Фактически, где-нибудь, скажем, до пяти наблюдений, превышающих три стандартных отклонения от среднего значения, если дано тысяча наблюдений, вероятно, не указывает на выброс .
Я думаю, вам нужно очень тщательно определить, что вы подразумеваете под выбросом , и описать, почему вы пытаетесь устранить их. Вещи, которые выглядят как выбросы, потенциально вовсе не являются выбросами, это реальные данные, на которые вам следует обратить внимание.
Также обратите внимание, что ни один из этих анализов не является правильным, если нормальное распределение неверно! Вы можете столкнуться с большими, большими проблемами, устраняя то, что выглядит как выбросы, когда на самом деле вы неправильно поняли всю статистическую модель. Если модель более «тяжелая», чем нормальное распределение, то выбросы являются общими, и на самом деле не выбросы . Быть осторожен! Если ваше распределение не является нормальным, вам нужно сообщить нам, что такое распределение, прежде чем мы сможем порекомендовать, как определить выбросы и устранить их.