Calcul du mode des données échantillonnées à partir d'une distribution continue

12

Quelles sont les meilleures méthodes pour ajuster le «mode» des données échantillonnées à partir d'une distribution continue?

Étant donné que le mode est techniquement indéfini (non?) Pour une distribution continue, je me demande vraiment `` comment trouvez-vous la valeur la plus courante ''?

Si vous supposez que la distribution parente est gaussienne, vous pouvez regrouper les données et trouver par exemple que le mode est l'emplacement du bac avec le plus grand nombre. Cependant, comment déterminez-vous la taille du bac? Existe-t-il des implémentations robustes? (c.-à-d. robuste aux valeurs aberrantes). J'utilise python/ scipy/ numpy, mais je peux probablement traduire Rsans trop de difficulté.

keflavich
la source
8
Je ne sais pas si le mode est défini techniquement de cette façon, mais le mode global d'une distribution continue est généralement considéré comme signifiant le point avec la densité la plus élevée.
Macro
1
@Macro - c'est utile. Vous pouvez alors lire ma question comme: «Quelles sont les meilleures méthodes pour déterminer la densité (maximale)?
keflavich
1
Peut-être adapter une estimation de la densité du noyau pour vos données et estimer le mode comme le pic de cela? Cela semble être une approche raisonnable, mais je ne connais pas la littérature sur ce problème.
Macro
1
Si vous ne supposez pas que la distribution parente est gaussienne, est-il toujours possible de regrouper les données et de prendre le mode comme emplacement de bac avec le plus grand nombre? Pourquoi ou pourquoi pas? Plus sérieusement, pourquoi ne pas trouver les déciles pour que des échantillons soient dans l'intervalle , et donc il est probable que le mode soit dans l' intervalle interdécile le plus court ? Prenez ensuite la taille du bac comme, disons, un quart de cet intervalle interdécile le plus court. x0=xmin,x1,x2,,x9,x10=xmax10%xi+1ximin1j10xj+1xj
Dilip Sarwate
2
Quelles hypothèses pouvez-vous faire sur la distribution parente, keflavich? S'ils sont paramétriques, il est préférable d'estimer les paramètres, puis d'estimer le mode à partir de ces paramètres. (Par exemple, la moyenne de l'échantillon estime le mode d'une distribution normale.) Sinon, le regroupement peut être une mauvaise méthode. Au lieu de cela, une séquence d'estimateurs du noyau avec une demi-largeur variable peut être utilisée pour fournir une séquence d'estimateurs; typiquement, si la distribution sous-jacente est unimodale, les modes des lissages du noyau sembleront converger vers un mode unique à mesure que les demi-largeurs deviennent grandes et cela peut être votre estimation.
whuber

Réponses:

4

Dans R, l'application de la méthode qui n'est pas basée sur la modélisation paramétrique de la distribution sous-jacente et utilise l'estimateur par défaut du noyau de densité à 10000 variables distribuées gamma:

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

renvoie 0,199 qui est la valeur de x estimée comme ayant la densité la plus élevée (les estimations de densité sont stockées sous la forme "z $ y").

Peter Ellis
la source
3
La seule chose que je ferais différemment de cela est d'utiliser une bande passante différente. La bande passante par défaut pour la densité () n'est pas particulièrement bonne. la densité (x, bw = "SJ") est meilleure. Encore mieux serait d'utiliser une bande passante conçue pour l'estimation de mode. Voir sciencedirect.com/science/article/pii/0167715295000240 pour une discussion.
Rob Hyndman
2

Supposons que vous réalisiez un histogramme de taille b et que la plus grande corbeille ait k entrées à partir de votre échantillon total de taille n. Le PDF moyen dans ce bac peut alors être estimé à b * k / n.

Le problème est qu'un autre bac, qui compte moins de membres au total, pourrait avoir une densité de tache élevée. Vous ne pouvez le savoir que si vous avez une hypothèse raisonnable sur le taux de changement du PDF. Si vous le faites, vous pouvez alors estimer la probabilité que le deuxième plus grand bac contienne réellement le mode.

Le problème sous-jacent est le suivant. Un échantillon fournit une bonne connaissance du CDF, par le théorème de Kolmogorov-Smirnov, et donc une bonne estimation de la médiane et d'autres quantiles. Mais connaître une approximation d'une fonction dans L1 ne fournit pas une connaissance approximative de sa dérivée. Aucun échantillon ne fournit donc une bonne connaissance du PDF, sans hypothèses supplémentaires.

chrishmorris
la source
0

Voici quelques esquisses de solution générales qui fonctionnent également pour les distributions de grande dimension:

  • Former un f-GAN avec une divergence KL inversée, sans donner aucune entrée aléatoire au générateur (c'est-à-dire le forcer à être déterministe).

  • Entraînez un f-GAN avec une divergence KL inversée, déplacez la distribution d'entrée vers le générateur vers une fonction delta de Dirac à mesure que la formation progresse et ajoutez une pénalité de gradient à la fonction de perte du générateur.

  • Former un modèle génératif (différenciable) qui peut évaluer facilement une approximation du pdf à tout moment (je crois que, par exemple, un VAE, un modèle basé sur les flux ou un modèle autorégressif ferait l'affaire). Ensuite, utilisez un certain type d'optimisation (une certaine saveur d'ascension du gradient peut être utilisée si l'inférence du modèle est différentiable) pour trouver un maximum de cette approximation.

Stéphane Bersier
la source