Эффективная свертка (в R)


9

Я хочу рассчитать / оценить свертку

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

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


2
В зависимости от обстоятельств я обычно либо дискретизирую до большой степени 2 бинов, и использую быстрое преобразование Фурье ( ?fft), либо использую convolve. Подход fft требует немного больше работы для настройки, но лучше, если вам нужно что-то свернуть несколько раз. Иногда требуется определенное время, чтобы определить правильные параметры аргумента с помощью команды convolve.
Glen_b

@Glen_b Спасибо. Я думаю, что для одномерной функции прямая интеграция может быть быстрее. f
Кук

2
Вы попросили эффективный способ - FFT действительно быстро ; это просто требует немного настройки (биннинг, заполнение нулями).
Glen_b

@Glen_b Да, я согласен, что fft действительно быстр, но предыдущий шаг может замедлить процесс. В любом случае я буду сравнивать оба метода. Спасибо.
Кук

Я помню, как использовал 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.