Ich komme von dieser Frage, falls jemand der Spur folgen möchte.
Grundsätzlich habe ich einen Datensatz bestehend aus Objekten, an die an jedem Objekt eine bestimmte Anzahl von Messwerten angehängt ist (in diesem Fall zwei):
Ich brauche einen Weg , um die Wahrscheinlichkeit einen bestimmen neuen Objekt der Zugehörigkeit zu Ω so I in dieser Frage wurde geraten , eine Wahrscheinlichkeitsdichte zu erhalten f durch einen Kerndichteschätzer, die ich glaube , ich habe schon .
Da mein Ziel , die Wahrscheinlichkeit dieses neuen Objekts (zu erhalten , ist ) der Zugehörigkeit zu diesem 2D - Datensatz Ω , wurde ich gesagt , das PDF zu integrieren f über " Werte der Unterstützung der Dichte , für die ist kleiner als der, den Sie beobachtet haben ". Die "beobachtete" Dichte ist f in dem neuen Objekt ausgewertet p , das heißt: f ( x p , y p ) . Also muss ich die Gleichung lösen:
Das PDF meines 2D-Datensatzes (erhalten über das Modul stats.gaussian_kde von Python ) sieht folgendermaßen aus:
Dabei steht der rote Punkt für das neue Objekt , das über der PDF-Datei meines Datensatzes aufgezeichnet ist.
Die Frage ist also: Wie kann ich berechnen die obige Integral für die Grenzen , wenn die pdf sieht aus wie das?
Hinzufügen
Ich habe einige Tests durchgeführt, um zu sehen, wie gut die in einem der Kommentare erwähnte Monte-Carlo-Methode funktioniert. Das habe ich bekommen:
Die Werte scheinen für Bereiche mit geringerer Dichte etwas stärker zu variieren, wobei beide Bandbreiten mehr oder weniger die gleiche Variation aufweisen. Die größte Variation in der Tabelle tritt für den Punkt (x, y) = (2.4, 1.5) auf, wenn der Wert von 2500 gegen 1000 von Silverman verglichen wird, was eine Differenz von 0.0126
oder ergibt ~1.3%
. In meinem Fall wäre dies weitgehend akzeptabel.
Edit : Mir ist gerade aufgefallen, dass Scotts Regel in 2 Dimensionen Silvermans gemäß der hier angegebenen Definition entspricht.
Antworten:
Ein einfacher Weg besteht darin, den Bereich der Integration zu rastern und eine diskrete Approximation an das Integral zu berechnen.
Es gibt einige Dinge zu beachten:
Stellen Sie sicher, dass Sie mehr als die Ausdehnung der Punkte abdecken: Sie müssen alle Stellen einschließen, an denen die Schätzung der Kerneldichte nennenswerte Werte aufweist. Dies bedeutet, dass Sie die Ausdehnung der Punkte um das Drei- bis Vierfache der Kernelbandbreite erweitern müssen (für einen Gaußschen Kernel).
Das Ergebnis hängt von der Auflösung des Rasters ab. Die Auflösung muss einen kleinen Bruchteil der Bandbreite ausmachen. Da die Berechnungszeit proportional zur Anzahl der Zellen im Raster ist, dauert es fast nicht länger, eine Reihe von Berechnungen mit einer gröberen Auflösung als der beabsichtigten durchzuführen: Überprüfen Sie, ob die Ergebnisse für die gröberen mit dem Ergebnis für das übereinstimmen feinste Auflösung. Ist dies nicht der Fall, ist möglicherweise eine feinere Auflösung erforderlich.
Hier ist eine Illustration für einen Datensatz von 256 Punkten:
Die Punkte werden als schwarze Punkte angezeigt, die zwei Kernel-Dichteschätzungen überlagert sind. Die sechs großen roten Punkte sind "Sonden", an denen der Algorithmus ausgewertet wird. Dies wurde für vier Bandbreiten (ein Standardwert zwischen 1,8 (vertikal) und 3 (horizontal), 1/2, 1 und 5 Einheiten) bei einer Auflösung von 1000 mal 1000 Zellen durchgeführt. Die folgende Streudiagramm-Matrix zeigt, wie stark die Ergebnisse von der Bandbreite dieser sechs Prüfpunkte abhängen, die einen weiten Bereich von Dichten abdecken:
Die Variation tritt aus zwei Gründen auf. Offensichtlich unterscheiden sich die Dichteschätzungen, was eine Form der Variation einführt. Noch wichtiger ist, dass die Unterschiede bei den Dichteschätzungen zu großen Unterschieden an jedem einzelnen Punkt ("Sondenpunkt") führen können. Die letztere Variation ist um die "Ränder" von Punkthaufen mittlerer Dichte am größten - genau an den Stellen, an denen diese Berechnung wahrscheinlich am häufigsten verwendet wird.
Dies zeigt, dass bei der Verwendung und Interpretation der Ergebnisse dieser Berechnungen große Vorsicht geboten ist, da sie für eine relativ willkürliche Entscheidung (die zu verwendende Bandbreite) so empfindlich sein können.
R-Code
Der Algorithmus ist in einem halben Dutzend Zeilen der ersten Funktion enthalten
f
. Zur Veranschaulichung der Verwendung werden im Rest des Codes die vorhergehenden Abbildungen generiert.quelle
Default
und derHp5
Bandbreiten verstehe (ich nehme anH1
undH5
meineh=1
undh=5
) IstHp5
der Werth=1/2
? Wenn ja was ist dasDefault
?kde2d
bandwidth.nrd
kde
zunimmt (und ich daher die Integrationsgrenzen erweitern muss)?<10%
Was halten Sie von der Anwendung der Scottschen Regel , da ich mit einem Fehler im resultierenden Wert des Integrals leben kann?Wenn Sie eine anständige Anzahl von Beobachtungen haben, müssen Sie möglicherweise überhaupt keine Integration durchführen. Sagen Sie, Ihr neuer Punkt istx0 f^ x f^(x)<f^(x0)
quelle