Я работаю над статистикой для сборок программного обеспечения. У меня есть данные для каждой сборки по пройденному / неудачному и истекшему времени, и мы генерируем ~ 200 из них / неделю.
Коэффициент успешности легко агрегируется, я могу сказать, что 45% прошли каждую данную неделю. Но я хотел бы также объединить прошедшее время, и я хочу убедиться, что я не искажаю данные слишком сильно. Подумал, я лучше спросить плюсы :-)
Скажем, у меня есть 10 продолжительности. Они представляют как успешные, так и неудачные случаи. Некоторые сборки терпят неудачу немедленно, что делает продолжительность необычно короткой. Некоторые зависают во время тестирования и в конечном итоге истекают, вызывая очень длительные периоды. Мы строим разные продукты, поэтому даже успешные сборки могут длиться от 90 секунд до 4 часов.
Я мог бы получить такой набор:
[50, 7812, 3014, 13400, 21011, 155, 60, 8993, 8378, 9100]
Мой первый подход состоял в том, чтобы получить среднее время, сортируя набор и выбирая среднее значение, в данном случае 7812 (я не беспокоился о среднем арифметическом для четных наборов).
К сожалению, это, кажется, вызывает много вариаций, так как я выбираю только одно заданное значение. Поэтому, если бы я изменил это значение, оно колебалось бы между 5000-10000 секундами, в зависимости от того, какая сборка была на медиане.
Поэтому, чтобы сгладить это, я попробовал другой подход - удалить выбросы и затем вычислить среднее значение по оставшимся значениям. Я решил разбить его на тертили и работать только над средним:
[50, 60, 155, 3014, 7812, 8378, 8993, 9100, 13400, 21011] ->
[50, 60, 155], [3014, 7812, 8378, 8993], [9100, 13400, 21011] ->
[3014, 7812, 8378, 8993]
Причина, по которой мне это кажется лучше, двоякая:
- Мы не хотим никаких действий на более быстрых сборках, они уже в порядке
- Самые длинные сборки, вероятно, вызваны тайм-аутом и всегда будут там. У нас есть другие механизмы для выявления этих
Так что мне кажется, что это данные, которые я ищу, но я беспокоюсь, что добился гладкости, удалив, ну, правда.
Является ли это спорно? Является ли метод вменяемым?
Благодарность!
Ответы:
Ваш подход имеет смысл для меня, принимая во внимание вашу цель. Это просто, это просто, это делает работу, и вы, вероятно, не хотите писать научную статью об этом.
Одна вещь, которую всегда нужно делать при работе с выбросами, - это понимать их, и вы уже отлично справляетесь с этим. Таким образом, возможные пути улучшения вашего подхода: можете ли вы использовать информацию о том, какие сборки зависают? Вы упоминаете, что у вас есть «другие механизмы для их обнаружения» - можете ли вы обнаружить их, а затем удалить только те из образца?
В противном случае, если у вас есть больше данных, вы можете подумать об удалении не тертилей, а квинтилей ... но в какой-то момент это, вероятно, не будет иметь большого значения.
источник
То, что вы делаете, известно как усеченное среднее .
Как вы уже сделали, обычно обрезается одинаковая пропорция с каждой стороны (пропорция обрезки).
Вы можете урезать что-нибудь между 0% (обычное среднее) до (почти) 50% (что дает медиану). Ваш пример на 30% обрезан с каждого конца.
Смотрите этот ответ и соответствующую статью в Википедии .
[Редактировать: Смотрите отличную дискуссию Ника Кокса на эту тему.]
Это довольно разумный, несколько надежный оценщик местоположения. Как правило, он считается более подходящим для почти симметричных распределений, чем сильно искаженные, но если он соответствует вашим целям *, нет никаких причин не использовать его. Сколько лучше обрезать, зависит от того, какие у вас дистрибутивы и какие свойства вы ищете.
* Не совсем понятно, что вы хотите оценить здесь.
Существует множество других надежных подходов к обобщению «центра» распределений, некоторые из которых вы также можете найти полезными. (например, М-оценки могут быть полезны для вас)
[Если вам нужна соответствующая мера изменчивости, чтобы соответствовать усеченному среднему значению, вам может пригодиться стандартное отклонение Winsorized (по сути, при вычислении sd замените значения, которые вы обрежете при обрезании, на самые крайние значения, которые вы не отрезал).]
источник
Еще один метод состоит в том, чтобы вычислить медиану всех попарных средних или выполнить начальную загрузку.
Обновить:
Медиана всех парных средних значений называется оценкой Ходжеса – Лемана . Эта оценка обычно имеет высокую эффективность. Эта запись энциклопедии Скотта Л. Гершбергера гласит:
Самозагрузка может быть менее релевантной и более требовательной к вычислениям, но вы можете взять небольшую случайную выборку данных с заменой и вычислить среднее значение этой подвыборки, сделать это много раз и вычислить медиану всех средств.
В обоих случаях вам больше не нужно выбирать значение среди значений ваших данных (когда вы вычисляете обычную медиану), а вместо этого вы выбираете среди множества средних значений из подмножеств данных.
источник
Кажется разумным, что вы делаете: просто для информации, я часто использую следующий процесс для аналогичной цели: но я действительно когда-либо действительно заинтересован в верхних выбросах.
Рассчитать пятизначную сводку: Мин, Q1, Медиана, Q3, Макс. Рассчитать межквартильный диапазон: Q3-Q1. Установите свои отклонения «заборы» на Q1-IQR * X и Q3 + IQR * X: где разумное значение «X» равно 1,5.
Используя Excel и ваши цифры выше (используя 1,5 для «X» **), получается один верхний выброс: 21011
Таким образом, нижний предел здесь не полезен и не реалистичен для вашего примера на самом деле: он подтверждает мнение другого поста относительно важности понимания значения ваших конкретных данных.
(** Найдена одна цитата для правила «1.5»: я не говорю, что оно авторитетное, но мне кажется, это разумная отправная точка: http://statistics.about.com/od/Descriptive-Statistics/a/ What-Is-The-Interquartile-Range-Rule.htm )
Вы также можете решить (возможно) просто использовать точки данных, которые попадают в сам IQR: это, кажется, дает ощутимые результаты (в том, что членство в вашем методе очень похоже).
используя те же данные, это поместит следующие точки данных в «область интересов»:
На блокпосте: все эти точки попадают в часть блока (а не в часть усиков) диаграммы.
Можно видеть, что в этот список входят некоторые элементы, которых нет в исходном списке (более длительные сборки); Я не могу сказать, является ли один список более точным в любом случае. (опять же, сводится к пониманию вашего набора данных).
источник