Ich verstehe, dass wir, sobald wir die Werte als Diagramm gezeichnet haben, eine bimodale Verteilung identifizieren können, indem wir die Doppelspitzen beobachten. Aber wie findet man sie programmgesteuert? (Ich suche einen Algorithmus.)
distributions
venkasub
quelle
quelle
Antworten:
Um einen Modus für eine kontinuierliche Verteilung zu identifizieren, müssen die Daten geglättet oder gruppiert werden.
Das Binning ist in der Regel zu krustig: Die Ergebnisse hängen häufig davon ab, wo Sie die Bin-Schnittpunkte platzieren.
Die Kernel-Glättung (insbesondere in Form einer Kerneldichteschätzung ) ist eine gute Wahl. Obwohl viele Kernelformen möglich sind, hängt das Ergebnis normalerweise nicht stark von der Form ab. Dies hängt von der Kernelbandbreite ab. Daher verwenden die Benutzer entweder einen adaptiven Kernel-Smooth oder führen eine Sequenz von Kernel-Smooths für unterschiedliche feste Bandbreiten durch, um die Stabilität der identifizierten Modi zu überprüfen. Obwohl die Verwendung eines adaptiven oder "optimalen" Glätters attraktiv ist, sollten Sie sich darüber im Klaren sein, dass die meisten (alle?) Darauf ausgelegt sind, ein Gleichgewicht zwischen Präzision und durchschnittlicher Genauigkeit zu erreichen: Sie sind nicht darauf ausgelegt, die Schätzung der Position von Modi zu optimieren.
Bei der Implementierung verschieben und skalieren Kernel-Smoothers lokal eine vorgegebene Funktion, um sie an die Daten anzupassen. Vorausgesetzt, dass diese Grundfunktion differenzierbar ist - Gaußsche Werte sind eine gute Wahl, da Sie sie beliebig oft differenzieren können -, müssen Sie sie nur durch ihre Ableitung ersetzen, um die Ableitung des Glatten zu erhalten. Dann geht es einfach darum, ein Standardverfahren zur Nullsuche anzuwenden, um die kritischen Punkte zu erkennen und zu testen. ( Die Methode von Brent funktioniert gut.) Natürlich können Sie den gleichen Trick mit der zweiten Ableitung ausführen, um schnell zu testen, ob ein kritischer Punkt ein lokales Maximum ist - das heißt ein Modus.
quelle
Es gibt einen bekannten Artikel von Silverman, der sich mit diesem Thema befasst. Es verwendet eine Schätzung der Kerneldichte. Sehen
Beachten Sie, dass die Tabellen des Papiers einige Fehler enthalten. Dies ist nur ein Ausgangspunkt, aber ein ziemlich guter. Es bietet einen genau definierten Algorithmus für den Fall, dass Sie am meisten danach suchen. In Google Scholar finden Sie möglicherweise Artikel, in denen "modernere" Ansätze beschrieben werden.
quelle
Ich bin zu spät zur Party gekommen, aber wenn Sie nur daran interessiert sind, ob es multimodal ist oder nicht, was bedeutet, dass Sie nicht an der Anzahl der Modi interessiert sind, sollten Sie sich Diptest ansehen .
Im
R
Paket heißtdiptest
.quelle
Die Definition im Wiki ist für mich etwas verwirrend. Die Wahrscheinlichkeit, dass ein kontinuierlicher Datensatz nur einen Modus aufweist, ist Null. Eine einfache Möglichkeit, eine bimodale Verteilung zu programmieren, besteht darin, zwei verschiedene Normalverteilungen zu verwenden, die unterschiedlich zentriert sind. Dies erzeugt zwei Peaks oder was Wiki Modi nennt. Sie können praktisch zwei beliebige Verteilungen verwenden. Eine der schwierigeren statistischen Möglichkeiten besteht darin, herauszufinden, wie der Datensatz nach dem Kombinieren der beiden zufälligen Datenverteilungen gebildet wurde.
quelle