Хороша форма для видалення залишків?


12

Я працюю над статистикою для побудови програмного забезпечення. У мене є дані про кожну збірку про пропуск / відмову та минулий час, і ми генеруємо ~ 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]

Причина, яка мені здається кращою, двояка:

  • Ми не хочемо, щоб якісь дії з швидшими побудовами, вони вже добре
  • Найдовші побудови, ймовірно, викликані тайм-аутом, і вони завжди будуть. У нас є інші механізми їх виявлення

Тож мені здається, що це дані, які я шукаю, але я переживаю, що я досяг гладкості, видаливши, ну, правду.

Це суперечливо? Чи здоровий метод?

Дякую!


Ви досі не сказали, чому ви хочете, щоб ваш мір минув час. Чи потрібно оцінити загальний час роботи машини, який ви платите? Чи потрібно вам оцінити, скільки поїздок до кавоварки ви змогли б здійснити? Яку дію ви, ймовірно, вчините, якби знали часи?
StasK

Крім того, якщо у вас є неоднорідні вироби, які ви будуєте, то підстрибуючи навколо - це природно, і ви не повинні намагатися від нього позбутися. Якщо у вас є міра складності даного проекту (# файлів, # рядків коду, # підпрограм тощо), то вас може зацікавити минулий час, нормалізований за складністю, який може бути більш стабільним. Якщо ви хочете зробити його справді стабільним і рівним з часом, то ви не зможете навчитися, коли вам потрібно вжити своїх дій.
Стаск

@StasK: дякую за ваші коментарі, це важливий внесок. Дія вже відома: багато з цих конструкцій займають waaaay занадто довго, і ми повинні працювати над тим, щоб зробити їх швидше. Я хочу використовувати сукупний захід, щоб побачити, чи все стає на краще чи гірше.
Кім Грусман

І так, в ідеалі я б, мабуть, робив це за продуктом, але вихідні дані не підтримують цю інформацію, тому я обманюю, виходячи з того, що я знаю про розповсюдження. З часом, це може змінитися, і мені, можливо, доведеться передумати.
Кім Грусман

Мені здається, у ваших даних три групи: (i) будує, що будує; (ii) створює збій (і ви кажете, що вони мають тенденцію до відмови досить швидко), і (iii) складання, які зависають (або майже так) - і це, мабуть, головна, якщо не єдина група, над якою ви хочете вжити заходів. Сукупний показник часу може не принести великої користі; але щось на кшталт 10-ї найдовшої збірки або 10-го найвищого відсотка розподілу часу збірки може бути кращим показником того, що знаходиться на крайньому рівні розподілу, який вас цікавить. Це приблизно те, що EPA використовує для моніторингу забруднення.
StasK

Відповіді:


8

Ваш підхід має сенс для мене з урахуванням вашої мети. Це просто, це просто, це виконує роботу, і ви, ймовірно, не хочете писати про це наукову роботу.

Одне, що завжди слід робити у стосунках із людьми, що переживають люди, - це зрозуміти їх, і ти вже робиш велику роботу з цього приводу. Тож можливими шляхами вдосконалення вашого підходу є: чи можете ви використовувати інформацію про те, які збірки висять? Ви згадуєте, що у вас є "інші механізми для виявлення цих" - чи можете ви їх виявити, а потім вилучити лише ті з зразка?

В іншому випадку, якщо у вас буде більше даних, ви можете подумати про видалення не третилів, а квінтилів ... але в якийсь момент це, швидше за все, не призведе до значного значення.


Коли я кажу "інші" механізми, я маю на увазі абсолютно різні за межами цього набору даних, тому я не можу тут приймати рішення, засновані на ньому. Ми збираємо дані щодня, і ми отримуємо лише ~ 50 збірок на день, тому я думаю, що квінтили можуть отримати занадто мало даних, але дякую за пропозицію, я можу експериментувати з цим!
Кім Грусман

13

Те, що ви робите, відоме як підстрижене середнє .

Як ви зробили, звичайно обрізати однакову пропорцію з кожної сторони (пропорцію обрізки).

Можна обрізати що завгодно від 0% (звичайна середня величина) до (майже) 50% (що дає медіану). У вашому прикладі 30% оброблено з кожного кінця.

Дивіться цю відповідь та відповідну статтю у Вікіпедії .

[Редагувати: Дивіться чудову дискусію Ніка Кокса на цю тему.]

Це цілком розумний, дещо надійний оцінювач розташування. Зазвичай він вважається більш підходящим для майже симетричних розподілів, ніж сильно перекошені, але якщо він відповідає вашому призначенню * немає причин не використовувати його. Скільки краще обрізати, залежить від типу розповсюдження та властивостей, які ви шукаєте.

* Не зовсім зрозуміло, що ви хочете оцінити тут.

Існує велика кількість інших надійних підходів до підведення підсумків «центру» дистрибуцій, деякі з яких ви також можете виявити корисними. (наприклад, M-оцінки можуть бути корисні для вас, можливо)

[Якщо вам потрібна відповідна міра мінливості, щоб відповідати вашій обрізаній середній величині, стандартне відхилення Winsorized може бути корисним для вас (по суті, при обчисленні sd замініть значення, які ви відрізали б під час обрізки з найбільш крайніми значеннями, які ви не відрізали).]


Я фактично не перевіряв типову форму мого розповсюдження, я думаю, що вона змінюється щотижня за залежністю від того, де люди вносять зміни. Насправді це може бути сильно перекошене.
Кім Грусман

Дякую за те, що ви поставили ім’я на моїй хакерській роботі, btw. Це вселяє певну впевненість :-)
Кім Грусман

2

Ще один метод - це обчислити медіану всіх парних середніх значень або зробити завантажувальну передачу.

Оновлення:

Медіана всіх парних авангардів називається оцінкою Ходжеса – Леманна . Цей оцінювач зазвичай має високу ефективність. Цей запис енциклопедії Скотта Л. Гершбергера говорить:

Хоча як середня, так і оцінка Ходжеса-Леманна обидві є переважними середнього рівня вибірки для несиметричних розподілів, оцінювач Ходжеса-Леманна має більшу асимптотичну відносну ефективність відносно середньої, ніж середня

Запуск завантажень може бути менш релевантним та більш обчислювальним, але ви можете взяти невелику випадкову вибірку даних із заміною та обчислити середнє значення для цього підпроби, зробити це багато разів та обчислити медіану всіх засобів.

В обох випадках вам більше не потрібно вибирати значення серед значень ваших даних (коли ви обчислюєте звичайну медіану), а натомість вибираєте серед багатьох середніх значень з підмножини даних.


2
Чи можете ви описати переваги та недоліки цих методів? Однорядкова відповідь - недостатня.
StasK

1
Я спробував зробити оновлення з додатковим поясненням
Фін Еруп Нільсен

Як пара в середньому, так і завантажувальний інструмент, як видається, передбачають певний перерахунок за весь набір даних. Вибірка, як правило, досить мала (<500 значень), тому, ймовірно, це не проблема, але це здається складнішим. Добре знати, що існує більше підходів для експерименту, якщо обрізане середнє виявиться занадто тупим. Дякую!
Кім Грусман

1

Вам здається розумним те, що ви робите: лише для інформації я часто використовую наступний процес для подібної мети: але мене тільки коли-небудь по-справжньому цікавлять верхні люди.

Обчисліть п’ять підсумків чисел: Мін, Q1, Медіана, Q3, Макс. Обчисліть міжквартильний діапазон: Q3-Q1. Встановіть свої «огорожі» на Q1-IQR * X та Q3 + IQR * X: де розумне значення 'X' становить 1,5.

Використовуючи Excel та ваші фігури, наведене вище (використовуючи 1,5 для 'X' **) дає один верхній вигляд: 21011

MIN 50
Q1  3014
MEDIAN  8095
Q3  9073.25
MAX 21011
IQR 6059.25
UPPER FENCE 18162.125
LOWER FENCE -6074.875

Отже, нижня огорожа тут не є корисною чи реалістичною для вашого прикладу насправді: що підкріплює точку, зроблену іншою публікацією щодо важливості розуміння значення ваших конкретних даних.

(** Знайдено одне цитування правила "1,5": я не кажу, що це авторитетно, але мені здається розумним відправною точкою: http://statistics.about.com/od/Descriptive-Statistics/a/ Що - це - міжквартирний діапазон - правило.htm )

Ви також можете вирішити (можливо) просто використовувати точки даних, які підпадають під сам IQR: це, здається, дає розумні результати (оскільки приналежність до вашого методу дуже схожа).

Використовуючи ті самі дані, це розмістить такі точки даних у "зоні інтересу":

7812
3014
13400
21011
8993
8378
9100

На Boxplot: всі ці пункти потраплятимуть у частину коробки (а не на частину вусів) діаграми.

Видно, що цей список включає деякі елементи, які не є у вашому первинному списку (триваліші збірки); Я не можу сказати, чи є який-небудь список більш точним. (знову ж таки, зводиться до розуміння вашого набору даних).


Дякую, це здається в принципі дуже близьким до того, що я вже роблю. Яким способом цей спосіб може бути кращим, ніж просто розділення набору даних?
Кім Грусман

1
Я не можу сказати, чи кращий той чи інший метод: я запропонував це виходячи з того, що я прочитав у книгах / сайтах статистики. Одне (я думаю), що додає метод, - це те, що ви можете налаштувати «огорожі» під те, що вам здається підходящим (коригування 1,5-коефіцієнта); де просто взяття середньої третини може бути більш сприйнятливим до включення потенційно високого чужа (який, можливо, може бути краще класифікований поза огорожею) ..... але я не можу сказати, що точно. Ще одна річ, що стосується використання Quartiles - це те, що резюме в 5-ти числах досить добре зрозуміло і широко використовується.
monojohnny

Дякуємо за додану деталь! Я роблю це в Python, тому у мене вже є функція, де я розділяю набір даних на N частин, а потім витягую середню частину. Це зміна в один символ, щоб зробити її замість 5 або 7 розділів. Але ваша думка добре сприйнята, і добре бачити інший поширений спосіб підходу до цієї проблеми. Знову дякую.
Kim Gräsman

мені добре звучить: я додам ще одну річ, щоб наголосити на використанні квартилів та парканів (а не на змінних перегородках) - це те, що вони відображаються прямо на боксерських майданчиках: en.wikipedia.org/wiki/Box_plot, які дозволяють (серед іншого) стандартний спосіб графічного порівняння різних розподілів.
monojohnny
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.