Я розумію, що як тільки ми побудуємо значення у вигляді діаграми, ми можемо визначити бімодальний розподіл, спостерігаючи подвійні піки, але як це знайти програмно? (Я шукаю алгоритм.)
Я розумію, що як тільки ми побудуємо значення у вигляді діаграми, ми можемо визначити бімодальний розподіл, спостерігаючи подвійні піки, але як це знайти програмно? (Я шукаю алгоритм.)
Відповіді:
Визначення режиму для безперервного розповсюдження вимагає згладжування чи обшивки даних.
Бінінг, як правило, занадто прокрутоване: результати часто залежать від місця розміщення відрізків для сміття.
Згладжування ядра (зокрема, у формі оцінки щільності ядра ) - хороший вибір. Хоча можливо багато форм ядра, як правило, результат не сильно залежить від форми. Це залежить від пропускної здатності ядра. Таким чином, люди або використовують адаптивне ядро гладке, або проводять послідовність згладжування ядра для зміни фіксованої ширини смуги, щоб перевірити стабільність ідентифікованих режимів. Хоча використання пристосувального або «оптимального» плавнішого виглядає привабливо, пам’ятайте, що більшість із них (усі?) Призначені для досягнення балансу між точністю та середньою точністю: вони не розроблені для оптимізації оцінки розташування режимів.
Що стосується впровадження, ядро згладжує місцеві зміни та масштабування заздалегідь визначеної функції, щоб відповідати даним. За умови, що ця основна функція є диференційованою - гаусианці - хороший вибір, оскільки ви можете їх диференціювати стільки разів, скільки вам подобається, - тоді все, що вам потрібно зробити, це замінити її на похідну, щоб отримати похідну гладкої. Тоді просто питання застосування стандартної процедури нульового пошуку для виявлення та перевірки критичних точок. ( Метод Брента працює добре.) Звичайно, ви можете зробити такий же трюк і з другою похідною, щоб швидко перевірити, чи є якась критична точка локальним максимумом - тобто режимом.
Існує відомий документ Сільвермена, який займається цією проблемою. Тут використовується оцінка щільності ядра. Побачити
BW Silverman, Використовуючи оцінки щільності ядра для дослідження багатомодальності , Дж. Роял Стат. Соц. Б , вип. 43, ні. 1, 1981, с. 97-99.
Зауважте, що в таблицях статті є деякі помилки. Це лише відправна точка, але досить гарна. Він надає чітко визначений алгоритм використання, якщо це саме ви найбільше шукаєте. Ви можете подивитися в Google Академії документи, які цитують його для більш "сучасних" підходів.
Я пізно завітав на вечірку, але якщо вас просто цікавить, багатомодальна вона чи ні, це означає, що ви не зацікавлені в кількості режимів, ви повинні подивитися на тест .
У R
пакеті називається diptest
.
Визначення у вікі мене трохи бентежить. Імовірність безперервного набору даних, що має лише один режим, дорівнює нулю. Простий спосіб запрограмувати бімодальний дистрибутон - це два окремі нормальні розподіли, по центру по-різному. Це створює два піки або те, що вікі викликає режими. Насправді ви можете використовувати майже будь-які два розподіли, але однією з більш важких статистичних можливостей є пошук того, як формувався набір даних після поєднання двох випадкових розподілів даних.