Efektywny splot (w R)

9

Chcę obliczyć / ocenić splot

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

gdzie oznacza gęstość i jest gładka funkcja o zwartym nośniku . Splot nie jest dostępny w formie zamkniętej i muszę go zintegrować numerycznie. Moje pytanie brzmi: czy jest na to skuteczny sposób? Chcę zaimplementować go w języku R, więc chciałbym sprawdzić, czy istnieje lepszy sposób niż użycie polecenia .fϕD integrate()

gotować
źródło
2
W zależności od okoliczności zwykle dyskretyzuję do dużej potęgi 2 pojemników i używam szybkiej transformacji Fouriera ( ?fft) lub używam convolve. Podejście do fft wymaga nieco więcej pracy, ale jest lepsze, jeśli musisz coś z sobą skręcić kilka razy. Czasami znalezienie konwójnych ustawień argumentów zajmuje trochę czasu.
Glen_b
@Glen_b Dzięki. Myślę, że w przypadku funkcji jednowymiarowej bezpośrednia integracja może być szybsza. f
Gotuj
2
Prosiłeś o skuteczny sposób - fft jest naprawdę szybki ; wymaga tylko trochę konfiguracji (binowanie, wypełnianie zerami).
Glen_b
@Glen_b Tak, zgadzam się, że fft jest naprawdę szybki, ale poprzedni krok może spowolnić proces. W każdym razie porównam obie metody. Dziękuję Ci.
Gotuj
Pamiętam, że użyłem convolvedo tego celu kilka razy. Proste przykłady działania są dostępne na stronie stats.stackexchange.com/a/41263 , stats.stackexchange.com/a/41255 oraz stats.stackexchange.com/a/49444 .
whuber

Odpowiedzi:

9

Przyjrzałeś się do tego dedykowanym pakietom R? Jak convolve, https://stat.ethz.ch/R-manual/R-devel/library/stats/html/convolve.html

jmnavarro
źródło
Dzięki. Jeśli dobrze rozumiem, ten pakiet służy do konwertowania sekwencji numerycznych zamiast dwóch funkcji. Czy coś brakuje?
Gotuj
2
Cóż, nie korzystałem z tego pakietu, ale jeśli próbujesz przeprowadzić splot w R, to w zasadzie będziesz mieć dwie sekwencje liczbowe, które będą wartościami z twoich funkcji, prawda? Nie sądzę, że R pozwala ci pracować z definicją funkcji.
jmnavarro