2016-10-23 1 views
0

Wenn ich eine Dichtefunktion habe und ich sie mit einer bestimmten Bandbreite plotte, stelle ich visuell fest, dass es 7 lokale Maxima gibt. Ich würde einfach gerne wissen, wie man separate Verteilungen der bestimmten Maxima auf dem gleichen Plot plant. Wenn es möglich ist, genau zu wissen, wo die Maxima auftreten, indem Sie Code ausführen? Ich kann mit dem Plot Ball-Park-Schätzungen machen, aber gibt es eine R-Funktion, mit der ich die genauen Punkte ermitteln kann? Ich würde gerne den Mittelwert und die Varianz der 7 Dichten, die ich identifiziert habe, kennen. Insbesondere , ich habe folgendes: istErmitteln der Modenorte der Kerndichteschätzung von multimodalen univariaten Daten

plot(density(stamp, bw=0.0013,kernel = "gaussian")) 

Antwort

0

Die Festlegung, welche Modi sind real in einer Kerndichteschätzung eine Materie, aus der Bandbreite, die Sie verwenden gewählt haben. Dies ist eine komplizierte Sache, und ich rate nicht, nur eine einzige Bandbreite zu wählen, da sogar verschiedene optimale Faustregeln Ihnen unterschiedliche Antworten geben können. Im allgemeinen ist die Anzahl der Moden von kde geringer als die Anzahl der zugrundeliegenden Dichte in dem Fall mit übermäßigem Spiel und mehr im Fall von zu geringer Geschwindigkeit. Es gibt viele Artikel, die dieses Thema behandeln und Ihnen viele Möglichkeiten geben, die Wahrhaftigkeit eines Modus zu bestimmen. B. Silverman-Modus-Test für Gauß-Kerne, Friedman und Fishers prim-Algorithmus, Marrons Größe und Minnottes und Scott's Modebaum sind gute Startpunkte.

Eine naive Sache, die Sie tun können, ist bei einer einzigen KDE Wahl der Bandbreite überprüfen Sie die Lauflängen.

In der Tat, mit der Bandbreite, die Sie gewählt haben, finde ich 9 Modi. Berechnen Sie einfach die Vorzeichenänderung der Differenz in der Reihe und berechnen Sie die kumulative Länge der Läufe, um die Punkte zu finden. Jeder andere Punkt wird ein Modus oder ein Anti-Modus sein, je nachdem, welcher zuerst kam. (Sie können das Zeichen überprüfen, dies zu bestimmen)

library(BSDA) 
dstamp <- density(Stamp$thickness, bw=0.0013, kernel = "gaussian") 
chng <- cumsum(rle(sign(diff(dstamp$y)))$lengths) 
plot(dstamp) 
abline(v = dstamp$x[chng[seq(1,length(chng),2)]]) 

enter image description here

+0

Vielen Dank für Ihre asnwer. Wie finde ich die Mittel der 9 von Ihnen identifizierten Modi heraus? –

+0

Gibt es auch eine Möglichkeit, genau 7 Modi zu finden? Ich dachte, dass meine Bandbreite gab mir 7, aber stellt sich heraus, diese sind 9 –

+0

Sie können 'Mean' und' sort' jeweils verwenden. – shayaa