8 votos

Convolución eficiente (en R)

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 utilizar convolve . 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).

10voto

ЯegDwight Puntos 10668

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

0 votos

Gracias. Si he entendido bien, este paquete es para convolucionar secuencias numéricas, en lugar de dos funciones. ¿Me he perdido algo?

2 votos

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.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X