Convolución eficiente (en R)


9

Quiero calcular / evaluar la convolución

g(x)=∫Df(x−t)ϕ(t)dt,

donde es una densidad y es una función suave con soporte compacto . La convolución no está disponible en forma cerrada y necesito integrarla numéricamente. Mi pregunta es: ¿hay una manera eficiente de hacer esto? Quiero implementarlo en R, por lo tanto, me gustaría ver si hay una mejor manera que usar el comando .fϕD integrate()


2
Dependiendo de las circunstancias, generalmente discretizo con una gran potencia de 2 contenedores y uso la transformación rápida de Fourier ( ?fft) o uso convolve. El enfoque fft requiere un poco más de trabajo para configurarlo, pero es mejor si necesita involucrarse con algo varias veces. A veces lleva un tiempo descubrir la configuración de argumento correcta con convolve.
— Glen_b -Reinstala a Monica el

@Glen_b Gracias. Para una función univariada , creo que la integración directa puede ser más rápida, entonces. f
— Cocine el

2
Usted solicitó una manera eficiente: fft es realmente rápido ; solo requiere un poco de configuración (agrupación, relleno con ceros).
— Glen_b -Reinstale a Monica el

@Glen_b Sí, estoy de acuerdo en que el fft es realmente rápido, pero el paso anterior puede ralentizar el proceso. Compararé ambos métodos, de todos modos. Gracias.
— Cocine el

Recuerdo haber usado convolvepara este propósito varias veces. Ejemplos de trabajo simples aparecen en stats.stackexchange.com/a/41263 , stats.stackexchange.com/a/41255 y stats.stackexchange.com/a/49444 .
— whuber

Respuestas:


9

¿Has echado un vistazo a los paquetes R dedicados para eso? Como convolve, https://stat.ethz.ch/R-manual/R-devel/library/stats/html/convolve.html


Gracias. Si entiendo bien, este paquete es para convolucionar secuencias numéricas, en lugar de dos funciones. ¿Me estoy perdiendo de algo?
— Cocine el

2
Bueno, no he usado ese paquete, pero si estás tratando de hacer la convolución en R, entonces básicamente tendrás dos secuencias numéricas que serán los valores de tus funciones, ¿no? No creo que R te permita trabajar con la definición de la función.
— jmnavarro
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.