Я намагаюся знайти локальні максимуми для функції щільності ймовірності (знайденої за допомогою density
методу R ). Я не можу простий метод "озирнутися навколо сусідів" (де можна оглянути точку, щоб побачити, чи це локальний максимум щодо своїх сусідів), оскільки є великий об'єм даних. Крім того, здається більш ефективним і загальним використовувати щось на зразок інтерполяції Spline, а потім знайти коріння 1-ї похідної, на відміну від побудови "озирнусь навколо сусідів" з відмовою та іншими параметрами.
Отже, мої запитання:
- З огляду на функцію від
splinefun
, за якими методами можна знайти локальні максимуми? - Чи є простий / стандартний спосіб знайти похідні функції, повернуті за допомогою
splinefun
? - Чи існує кращий / стандартний спосіб знайти локальні максимуми функції щільності ймовірності?
Для довідки, нижче - графік моєї функції щільності. Інші функції щільності, з якими я працюю, схожі за формою. Я повинен сказати, що я новачок у R, але не новачок у програмуванні, тому може бути стандартна бібліотека чи пакет для досягнення того, що мені потрібно.
Спасибі за вашу допомогу!!
msExtrema {msProcess}
), і змог визначити лише кілька максимумів, ніколи не всі, граючи з налаштуваннями допуску.
msExtrema
, це просто оболонка для peaks
з splus2R
пакета, який ви б краще використовувати безпосередньо , якщо ви хочете тільки локальні максимуми , а не локальні мінімуми. Я не можу зрозуміти, чому за допомогою типових параметрів span=3
не знайдуться всі локальні максимуми. І 2 ^ 15 = 32768 не повинно бути достатньо великим, щоб ефективність викликала великі проблеми.
peaks
здається, баггі: він дзвонить max.col
із налаштуваннями за замовчуванням ties.method = "random"
, що не лише розриває зв’язки навмання, але й встановлює відносний допуск 1e-5 для оголошення краватки. Перше заплутане, друге - це точно не те, що ви хочете тут. peaks()
також приймає strict
параметр, який погано зафіксований і, дивлячись на код функції, нічого не робить. Ах, радості бібліотек програмного забезпечення, що надаються користувачем! Ви, можливо, зможете це виправити, хоча, як ви говорите, ви не новачок у програмуванні
density()
не оцінює щільність для кожної дати, вона оцінює щільність за n значень, де n - визначений користувачем параметр зі значенням за замовчуванням n = 512.