Ефективна згортка (в R)


9

Я хочу порахувати / оцінити згортку

g(x)=Df(xt)ϕ(t)dt,

де є щільністю і гладка функція з компактним носієм . Згортання не доступне у закритій формі, і мені потрібно її інтегрувати чисельно. Моє запитання: чи є ефективний спосіб це зробити? Я хочу реалізувати його в R, тому я хотів би побачити, чи є кращий спосіб, ніж використання команди .fϕD integrate()


2
Залежно від обставин, я зазвичай або дискретизую велику потужність у 2 бункери, і використовую швидке перетворення "фур'є" ( ?fft) або використання convolve. Підхід у FFT потребує трохи більше роботи, щоб налаштувати, але краще, якщо вам потрібно кілька разів зв'язати щось. Іноді потрібен певний час, щоб визначити правильні параметри аргументу з конвультуванням.
Glen_b -Встановити Моніку

@Glen_b Дякую Щодо уніваріантної функції , то, думаю, пряма інтеграція може бути швидшою. f
Кук

2
Ви попросили ефективний спосіб - FFT дійсно швидкий ; це просто вимагає трохи налаштування (binning, padding з нулями).
Glen_b -Встановити Моніку

@Glen_b Так, я погоджуюся, що FF дійсно швидкий, але попередній крок може сповільнити процес. Я порівняю обидва способи, все одно. Дякую.
Кук

Пригадую, convolveкілька разів використовували для цієї мети. Прості робочі приклади з’являються на stats.stackexchange.com/a/41263 , stats.stackexchange.com/a/41255 та stats.stackexchange.com/a/49444 .
whuber

Відповіді:


9

Ви подивилися спеціальні пакети R для цього? Як convolve, https://stat.ethz.ch/R-manual/R-devel/library/stats/html/convolve.html


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

2
Ну, я не використовував цей пакет, але якщо ви намагаєтеся зробити згортку в R, то в основному у вас є дві числові послідовності, які будуть значеннями ваших функцій, чи не так? Я не думаю, що R дозволяє працювати з визначенням функції.
jmnavarro
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.