Berechnen des Datenmodus, der aus einer kontinuierlichen Verteilung abgetastet wird

12

Was sind die besten Methoden, um den 'Modus' von Daten anzupassen, die aus einer kontinuierlichen Verteilung entnommen wurden?

Da der Modus für eine kontinuierliche Verteilung technisch undefiniert ist (oder?), Frage ich mich wirklich, wie Sie den gängigsten Wert finden.

Wenn Sie davon ausgehen, dass die übergeordnete Verteilung Gauß ist, können Sie die Daten bündeln und feststellen, dass der Modus der Speicherort mit den höchsten Zählwerten ist. Wie bestimmen Sie jedoch die Behältergröße? Gibt es robuste Implementierungen? (dh robust gegenüber Ausreißern). Ich verwende python/ scipy/ numpy, aber ich kann wohl übersetzen , Rohne allzu große Schwierigkeiten.

Keflavich
quelle
8
Ich bin nicht sicher, ob der Modus auf diese Weise technisch definiert ist, aber der globale Modus einer kontinuierlichen Verteilung wird normalerweise als der Punkt mit der höchsten Dichte verstanden.
Makro
1
@Macro - das ist hilfreich. Sie können dann meine Frage wie folgt lesen: "Was sind die besten Methoden zur Bestimmung der (Peak-) Dichte?"
Keflavich
1
Passen Sie vielleicht eine Schätzung der Kerneldichte für Ihre Daten an und schätzen Sie den Modus als Höhepunkt davon? Dies scheint ein vernünftiger Ansatz zu sein, aber ich bin mit der Literatur zu diesem Problem nicht vertraut.
Makro
1
x0=xMindest,x1,x2,,x9,x10=xmax10%xich+1-xichMindest1j10xj+1-xj
2
Welche Annahmen können Sie über die Elternverteilung machen, Keflavich? Wenn sie parametrisch sind, ist es am besten, die Parameter und anschließend den Modus anhand dieser Parameter zu schätzen. (Beispielsweise schätzt der Stichprobenmittelwert den Modus einer Normalverteilung.) Andernfalls kann das Binning eine schlechte Methode sein. Stattdessen kann eine Sequenz von Kernschätzern mit variierender Halbwertsbreite verwendet werden, um eine Sequenz von Schätzern bereitzustellen; Wenn die zugrunde liegende Verteilung unimodal ist, scheinen die Modi der Kernel-Smooths in der Regel in Richtung eines eindeutigen Modus zu konvergieren, wenn die Halbwertsbreiten groß werden. Dies kann Ihre Schätzung sein.
whuber

Antworten:

4

In R wird die Methode angewendet, die nicht auf der parametrischen Modellierung der zugrunde liegenden Verteilung basiert und den Standardkernschätzer für die Dichte auf 10000 gamma-verteilte Variablen verwendet:

x <- rgamma(10000, 2, 5)
z <- density(x)
plot(z) # always good to check visually
z$x[z$y==max(z$y)]

gibt 0.199 zurück, was dem Wert von x entspricht, für den die höchste Dichte geschätzt wird (die Dichteschätzungen werden als "z $ y" gespeichert).

Peter Ellis
quelle
3
Das einzige, was ich anders machen würde, ist eine andere Bandbreite zu verwenden. Die Standardbandbreite für density () ist nicht besonders gut. Dichte (x, bw = "SJ") ist besser. Noch besser wäre es, eine Bandbreite zu verwenden, die für die Modenschätzung ausgelegt ist. Weitere Informationen finden Sie unter sciencedirect.com/science/article/pii/0167715295000240 .
Rob Hyndman
2

Angenommen, Sie erstellen ein Histogramm mit der Bin-Größe b und der größte Bin enthält k Einträge aus Ihrer Gesamtstichprobe mit der Größe n. Dann kann die durchschnittliche PDF innerhalb dieses Fachs als b * k / n geschätzt werden.

Das Problem ist, dass ein anderer Behälter mit weniger Mitgliedern eine hohe Punktdichte aufweisen kann. Dies können Sie nur wissen, wenn Sie eine vernünftige Annahme über die Änderungsrate der PDF-Datei haben. Wenn Sie dies tun, können Sie die Wahrscheinlichkeit abschätzen, mit der das zweitgrößte Fach tatsächlich den Modus enthält.

Das zugrunde liegende Problem ist dies. Eine Stichprobe liefert nach dem Kolmogorov-Smirnov-Theorem gute Kenntnisse über die CDF und somit eine gute Schätzung des Medians und anderer Quantile. Die Kenntnis einer Näherung an eine Funktion in L1 liefert jedoch keine ungefähre Kenntnis ihrer Ableitung. Daher bietet kein Beispiel gute Kenntnisse der PDF-Datei, ohne dass zusätzliche Annahmen erforderlich sind.

chrishmorris
quelle
0

Hier einige allgemeine Lösungsskizzen, die auch für hochdimensionale Verteilungen geeignet sind:

  • Trainieren Sie ein f-GAN mit umgekehrter KL-Divergenz, ohne dem Generator eine zufällige Eingabe zu geben (dh zu erzwingen, dass er deterministisch ist).

  • Trainieren Sie einen f-GAN mit umgekehrter KL-Divergenz, verschieben Sie die Eingangsverteilung zum Generator in Richtung einer Dirac-Delta-Funktion, während das Training fortschreitet, und fügen Sie der Generatorverlustfunktion eine Gradientenstrafe hinzu.

  • Trainieren Sie ein (differenzierbares) generatives Modell, das eine Annäherung des PDF-Dokuments zu jedem Zeitpunkt nachvollziehbar auswerten kann (ich glaube, dass z. B. ein VAE-, ein flussbasiertes oder ein autoregressives Modell ausreichen würde). Verwenden Sie dann eine Art Optimierung (eine Variante des Gradientenaufstiegs kann verwendet werden, wenn die Modellinferenz differenzierbar ist), um ein Maximum dieser Näherung zu finden.

Stephane Bersier
quelle