Ich versuche, die lokalen Maxima für eine Wahrscheinlichkeitsdichtefunktion zu finden (gefunden mit der densityMethode von R ). Ich kann keine einfache Methode zum Umsehen von Nachbarn durchführen (bei der man sich an einem Punkt umsieht, um festzustellen, ob es sich um ein lokales Maximum in Bezug auf die Nachbarn handelt), da es eine große Datenmenge gibt. Darüber hinaus scheint es effizienter und allgemeiner zu sein, so etwas wie Spline-Interpolation zu verwenden und dann die Wurzeln der 1. Ableitung zu finden, anstatt einen "Blick um die Nachbarn" mit Fehlertoleranz und anderen Parametern zu erstellen.
Also meine Fragen:
- Ausgehend von einer Funktion von
splinefun, welche Methoden finden die lokalen Maxima? - Gibt es eine einfache / standardmäßige Möglichkeit, Ableitungen einer mit zurückgegebenen Funktion zu finden
splinefun? - Gibt es einen besseren / standardmäßigen Weg, um die lokalen Maxima einer Wahrscheinlichkeitsdichtefunktion zu finden?
Als Referenz ist unten eine grafische Darstellung meiner Dichtefunktion. Andere Dichtefunktionen, mit denen ich arbeite, sind in der Form ähnlich. Ich sollte sagen, dass ich neu in R bin, aber nicht neu in der Programmierung. Es kann also eine Standardbibliothek oder ein Standardpaket geben, um das zu erreichen, was ich brauche.

Danke für Ihre Hilfe!!
msExtrema {msProcess}) ähnelt, und konnte nur einige der Maxima identifizieren, niemals alle, indem ich mit den Toleranzeinstellungen spielte.
msExtremaansehen, handelt es sich um einen einfachen Wrapper für peaksdas splus2RPaket, den Sie besser direkt verwenden sollten, wenn Sie nur die lokalen Maxima und nicht die lokalen Minima möchten. Ich kann nicht erkennen, warum bei Verwendung der Standardeinstellung span=3nicht alle lokalen Maxima gefunden wurden. Und 2 ^ 15 = 32768 sollte nicht groß genug sein, damit die Effizienz ein großes Problem darstellt.
peaksscheint fehlerhaft zu sein: Es ruft max.colmit der Standardeinstellung von auf ties.method = "random", die nicht nur willkürliche Bindungen aufbricht, sondern auch eine relative Toleranz von 1e-5 für das Deklarieren einer Bindung festlegt. Ersteres ist verwirrend, letzteres ist definitiv nicht das, was Sie hier wollen. peaks()Außerdem wird ein strictParameter verwendet, der schlecht dokumentiert ist und im Code der Funktion nichts bewirkt. Ah, die Freuden benutzergestützter Softwarebibliotheken! Möglicherweise können Sie das
density()schätzt nicht die Dichte für jedes Datum, sondern die Dichte bei n Werten, wobei n ein benutzerdefinierter Parameter mit dem Standardwert n = 512 ist.