Je viens de cette question au cas où quelqu'un voudrait suivre la piste.
Fondamentalement, j'ai un ensemble de données composé de objets où chaque objet a un nombre donné de valeurs mesurées qui lui sont attachées (deux dans ce cas):N
J'ai besoin d'un moyen de déterminer la probabilité qu'un nouvel objet appartienne à donc on m'a conseillé dans cette question d'obtenir une densité de probabilité grâce à un estimateur de densité de noyau, que je crois avoir J'ai déjà.Ω f
Comme mon objectif est d'obtenir la probabilité d' appartenance de ce nouvel objet ( ) à cet ensemble de données 2D , on m'a dit d'intégrer le pdf sur "les valeurs du support pour lesquelles la densité est inférieure à celle que vous avez observée ". La densité "observée" est évaluée dans le nouvel objet , c'est-à-dire: . J'ai donc besoin de résoudre l'équation:Ω f p f (xp,yp)
Le PDF de mon ensemble de données 2D (obtenu via le module stats.gaussian_kde de python ) ressemble à ceci:
où le point rouge représente le nouvel objet tracé sur le PDF de mon ensemble de données.
La question est donc: comment puis-je calculer l'intégrale ci-dessus pour les limites lorsque le pdf ressemble à ça?
Ajouter
J'ai fait quelques tests pour voir si la méthode Monte Carlo que je mentionne dans l'un des commentaires fonctionnait bien. Voici ce que j'ai obtenu:
Les valeurs semblent varier un peu plus pour les zones de faible densité, les deux bandes passantes montrant plus ou moins la même variation. La plus grande variation dans le tableau se produit pour le point (x, y) = (2,4,1,5) comparant la valeur d'échantillon de Silverman 2500 vs 1000, ce qui donne une différence de 0.0126
ou ~1.3%
. Dans mon cas, cela serait largement acceptable.
Edit : je viens de remarquer qu'en 2 dimensions, la règle de Scott est équivalente à celle de Silverman selon la définition donnée ici .
Réponses:
Un moyen simple consiste à pixelliser le domaine de l'intégration et à calculer une approximation discrète de l'intégrale.
Il y a certaines choses à surveiller:
Assurez-vous de couvrir plus que l'étendue des points: vous devez inclure tous les emplacements où l'estimation de la densité du noyau aura des valeurs appréciables. Cela signifie que vous devez étendre l'étendue des points de trois à quatre fois la bande passante du noyau (pour un noyau gaussien).
Le résultat variera quelque peu avec la résolution du raster. La résolution doit être une petite fraction de la bande passante. Comme le temps de calcul est proportionnel au nombre de cellules dans le raster, il ne prend presque pas de temps supplémentaire pour effectuer une série de calculs en utilisant des résolutions plus grossières que celle prévue: vérifiez que les résultats pour les plus grossiers convergent sur le résultat pour le meilleure résolution. Si ce n'est pas le cas, une résolution plus fine peut être nécessaire.
Voici une illustration pour un ensemble de données de 256 points:
Les points sont représentés par des points noirs superposés à deux estimations de densité de noyau. Les six grands points rouges sont des "sondes" auxquelles l'algorithme est évalué. Cela a été fait pour quatre bandes passantes (une valeur par défaut entre 1,8 (verticalement) et 3 (horizontalement), 1/2, 1 et 5 unités) à une résolution de 1000 par 1000 cellules. La matrice de diagramme de dispersion suivante montre à quel point les résultats dépendent de la bande passante pour ces six points de sonde, qui couvrent une large gamme de densités:
La variation se produit pour deux raisons. De toute évidence, les estimations de densité diffèrent, introduisant une forme de variation. Plus important encore, les différences dans les estimations de densité peuvent créer de grandes différences en tout point ("sonde"). Cette dernière variation est plus importante autour des «franges» de densité moyenne de groupes de points - exactement les endroits où ce calcul est susceptible d'être le plus utilisé.
Cela démontre la nécessité d'une grande prudence dans l'utilisation et l'interprétation des résultats de ces calculs, car ils peuvent être si sensibles à une décision relativement arbitraire (la bande passante à utiliser).
Code R
L'algorithme est contenu dans la demi-douzaine de lignes de la première fonction
f
,. Pour illustrer son utilisation, le reste du code génère les figures précédentes.la source
Default
etHp5
(je supposeH1
etH5
signifieh=1
eth=5
) estHp5
la valeurh=1/2
? Si oui, c'est quoiDefault
?kde2d
aide debandwidth.nrd
. Pour les données de l'échantillon, il est égal à dans le sens horizontal et dans le sens vertical, à peu près à mi-chemin entre les valeurs de et dans le test. Notez que ces bandes passantes par défaut sont suffisamment grandes pour placer une proportion appréciable de la densité totale bien au-delà de l'étendue des points eux-mêmes, c'est pourquoi cette étendue doit être étendue quel que soit l'algorithme d'intégration que vous choisissez d'utiliser. 1,85 1 5kde
augmente également (et j'ai donc besoin d'étendre les limites d'intégration)? Étant donné que je peux vivre avec une erreur de<10%
dans la valeur résultante de l'intégrale, que pensez-vous de l'utilisation de la règle de Scott?Si vous avez un nombre décent d'observations, vous n'aurez peut-être pas besoin de faire d'intégration du tout. Supposons que votre nouveau point soit . Supposons que vous ayez un estimateur de densité ; résumer le nombre d'observations pour lesquelles et diviser par la taille de l'échantillon. Cela vous donne une approximation de la probabilité requise. fx0 f^ f ( x )< f ( x 0 )x f^(x)<f^(x0)
Cela suppose que n'est pas "trop petit" et que la taille de votre échantillon est suffisamment grande (et suffisamment étalée) pour donner une estimation décente dans les régions à faible densité. Cependant, 20000 cas semblent assez volumineux, pour les .xf^(x0) x
la source