Effiziente Faltung (in R)


9

Ich möchte die Faltung berechnen / bewerten

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

wobei eine Dichte und ist eine glatte Funktion mit kompaktem Träger . Die Faltung ist nicht in geschlossener Form verfügbar und ich muss sie numerisch integrieren. Meine Frage ist: Gibt es einen effizienten Weg, dies zu tun? Ich möchte es in R implementieren, also würde ich gerne sehen, ob es einen besseren Weg gibt als den Befehl zu verwenden .ϕ D.fϕD integrate()


2
Abhängig von den Umständen diskretisiere ich normalerweise entweder auf eine große Potenz von 2 Bins und verwende die schnelle Fourier-Transformation ( ?fft) oder verwende convolve. Das Einrichten des fft-Ansatzes erfordert etwas mehr Arbeit, ist jedoch besser, wenn Sie sich mehrmals mit etwas zusammenschließen müssen. Manchmal dauert es eine Weile, um mit convolve die richtigen Argumenteinstellungen herauszufinden.
— Glen_b -State Monica

@Glen_b Danke. Für eine univariate Funktion denke ich, dass die direkte Integration dann schneller sein kann. f
— Koch

2
Sie haben nach einem effizienten Weg gefragt - fft ist sehr schnell ; Es erfordert nur ein wenig Setup (Binning, Auffüllen mit Nullen).
— Glen_b -Reinstate Monica

@Glen_b Ja, ich bin damit einverstanden, dass das fft sehr schnell ist, aber der vorherige Schritt kann den Prozess verlangsamen. Ich werde sowieso beide Methoden vergleichen. Vielen Dank.
— Koch

Ich erinnere mich, convolvedass ich es mehrmals für diesen Zweck verwendet habe. Einfache Arbeitsbeispiele finden Sie unter stats.stackexchange.com/a/41263 , stats.stackexchange.com/a/41255 und stats.stackexchange.com/a/49444 .
— whuber

Antworten:


9

Haben Sie sich dafür spezielle R-Pakete angesehen? Wie convolve, https://stat.ethz.ch/R-manual/R-devel/library/stats/html/convolve.html


Vielen Dank. Wenn ich das richtig verstehe, dient dieses Paket eher zum Falten numerischer Sequenzen als zu zwei Funktionen. Vermisse ich etwas
— Koch

2
Nun, ich habe dieses Paket nicht verwendet, aber wenn Sie versuchen, die Faltung in R durchzuführen, haben Sie im Grunde zwei numerische Sequenzen, die die Werte Ihrer Funktionen sind, nicht wahr? Ich glaube nicht, dass Sie mit R mit der Funktionsdefinition arbeiten können.
— jmnavarro
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.