Quiero calcular/evaluar la convolución
$$g(x)=\int_D f(x-t) \phi(t) dt,$$
donde $f$ es una densidad y $\phi$ es una función suave con soporte compacto $D$ . La convolución no está disponible en forma cerrada y necesito integrarla numéricamente. Mi pregunta es: ¿Existe una forma eficiente de hacerlo? Quiero implementarlo en R, así que, me gustaría ver si hay una mejor manera que usar el comando integrate()
.
2 votos
Dependiendo de las circunstancias, suelo discretizar a una gran potencia de 2 bins y utilizar la transformada rápida de Fourier (
?fft
) o utilizarconvolve
. El enfoque fft requiere un poco más de trabajo para configurar, pero es mejor si usted necesita para convolver con algo varias veces. A veces se necesita un tiempo para averiguar la configuración correcta de los argumentos con convolve.0 votos
@Glen_b Gracias. Para una función univariante $f$ Entonces, creo que la integración directa puede ser más rápida.
2 votos
Usted pidió una manera eficiente - fft es realmente rápido sólo requiere un poco de configuración (binning, relleno con ceros).
0 votos
@Glen_b Sí, estoy de acuerdo en que el fft es muy rápido, pero el paso anterior puede ralentizar el proceso. De todas formas compararé ambos métodos. Gracias.
0 votos
Recuerdo haber utilizado
convolve
para este fin varias veces. Ejemplos sencillos de trabajo aparecen en stats.stackexchange.com/a/41263 , stats.stackexchange.com/a/41255 y stats.stackexchange.com/a/49444 .