2010-03-22 7 views
8

Angenommen, ich habe eine Reihe von gewichteten Stichproben, wobei jede Stichprobe ein entsprechendes Gewicht zwischen 0 und 1 hat. Ich möchte die Parameter einer Verteilung der Gauß'schen Verteilung schätzen ist auf die Proben mit höherem Gewicht ausgerichtet. Bei der üblichen nicht-gewichteten Fall-Gauß-Mischung wird die Schätzung über den EM-Algorithmus durchgeführt. Kennt jemand eine Implementierung (jede Sprache ist in Ordnung), die erlaubt, Gewichte zu übergeben? Wenn nicht, weiß jemand, wie man den Algorithmus ändert, um die Gewichte zu berücksichtigen? Wenn nicht, kann mir jemand einen Hinweis geben, wie man die Gewichte in die Anfangsformel der Maximum-Log-Likelihood-Formulierung des Problems einbaut?Geschätzte Gaußsche (Gemisch) Dichte aus einer Reihe von gewichteten Stichproben

Danke!

+0

Ist „EM“ Fehlerminimierung, oder etwas ganz anderes? Außerdem gibt es * viele * numerische und Analysepakete, die von grundlegend und allgemein bis hochspezialisiert sind. Es kann hilfreich sein, wenn Sie etwas über Ihre Problemdomäne und die bevorzugte Umgebung sagen. Fortran? C++? Java? Python? Bist du in Ordnung, wenn du ein neues Werkzeug wie R oder Root lernst? – dmckee

+0

Ok, dann wäre meine bevorzugte Sprache Python. Aber jede der oben genannten Sprachen außer root (nie davon gehört) wäre auch in Ordnung. EM steht für Estimation Maximization und ist ein allgemeines iteratives Schema, das zur Schätzung der Parameter eines Gauß'schen Mischungsmodells aus Daten verwendet werden kann. – Christian

+0

Ich kenne diese Methode nicht und kann keine spezifischen Empfehlungen geben. – dmckee

Antwort

0

Nur ein Vorschlag, da keine anderen Antworten gesendet werden.

Sie könnten die normale EM mit GMM verwenden (OpenCV für ex. Hat viele Wrapper für viele Sprachen) und einige Punkte zweimal in den Cluster, den Sie "mehr Gewicht" haben wollen. Auf diese Weise würden die EM diese Punkte für wichtiger halten. Sie können die zusätzlichen Punkte später entfernen, wenn es darauf ankommt.

Ansonsten denke ich, das geht ziemlich extreme Mathematik, es sei denn, Sie haben einen starken Hintergrund in der erweiterten Statistik.

+0

Dies funktioniert nicht, wenn Sie entweder viele Punkte haben oder intrinsisch nicht ganzzahlig sind Gewichte. Wie es mir passiert ist, beides zu haben: ein Histogramm von Millionen von Punkten mit nicht ganzzahligen Gewichten ... – ansgri

3

Sie können eine gewichtete logarithmische Likelihood-Funktion berechnen; multipliziere einfach jeden Punkt mit seinem Gewicht. Beachten Sie, dass Sie dafür die Funktion log-Likelihood verwenden müssen.

So reduziert sich Ihr Problem auf die Minimierung von $ - \ ln L = \ sum_i w_i \ ln f (x_i | q) $ (für das Originalformular siehe the Wikipedia article).

4

Ich hatte gerade das gleiche Problem. Obwohl der Beitrag älter ist, könnte er für jemand anderen interessant sein. Die Antwort von honk ist im Prinzip richtig, es ist einfach nicht sofort zu sehen, wie sich dies auf die Implementierung des Algorithmus auswirkt. Aus dem Wikipedia-Artikel für Expectation Maximization und einem sehr schönen Tutorial können die Änderungen leicht abgeleitet werden.

Wenn $ v_i $ das Gewicht des i-ten Samples ist, ändert sich der Algorithmus aus dem Tutorial (siehe Ende von Abschnitt 6.2.), So dass $ gamma_ {ij} $ mit diesem Gewichtungsfaktor multipliziert wird. Für die Berechnung der neuen Gewichte $ w_j $ muss $ n_j $ durch die Summe der Gewichte $ \ sum_ {i = 1}^{n} v_i $ statt nur n geteilt werden. Das ist es ...