Je comprends qu’une fois que nous représentons les valeurs sous forme de graphique, nous pouvons identifier une distribution bimodale en observant les pics jumeaux, mais comment la trouver par programme? (Je cherche un algorithme.)
Je comprends qu’une fois que nous représentons les valeurs sous forme de graphique, nous pouvons identifier une distribution bimodale en observant les pics jumeaux, mais comment la trouver par programme? (Je cherche un algorithme.)
Réponses:
L'identification d'un mode pour une distribution continue nécessite le lissage ou le tri des données.
Le binning est généralement trop précis: les résultats dépendent souvent de l'endroit où vous placez les points de coupure.
Le lissage du noyau (en particulier, sous la forme d'une estimation de la densité du noyau ) est un bon choix. Bien que de nombreuses formes de noyau soient possibles, le résultat ne dépend généralement pas beaucoup de la forme. Cela dépend de la bande passante du noyau. Ainsi, les gens utilisent un lissage de noyau adaptatif ou effectuent une séquence de lissage de noyau pour différentes largeurs de bande fixes afin de vérifier la stabilité des modes identifiés. Bien que l’utilisation d’un lisseur adaptatif ou «optimal» soit attrayant, sachez que la plupart (tous?) Sont conçus pour atteindre un équilibre entre précision et précision moyenne: ils ne sont pas conçus pour optimiser l’estimation de la localisation des modes.
En ce qui concerne l'implémentation, les noyaux se déplacent et déplacent localement une fonction prédéterminée pour l'adapter aux données. À condition que cette fonction de base soit différentiable - les Gaussiens sont un bon choix, car vous pouvez les différencier autant de fois que vous le souhaitez - il vous suffit alors de la remplacer par sa dérivée pour obtenir la dérivée du lisse. Ensuite, il suffit d'appliquer une procédure standard de détermination du zéro pour détecter et tester les points critiques. ( La méthode de Brent fonctionne bien.) Bien sûr, vous pouvez faire la même chose avec la dérivée seconde pour obtenir un test rapide permettant de déterminer si un point critique correspond à un maximum local, c'est-à-dire un mode.
Un article bien connu de Silverman traite de cette question. Il utilise une estimation de la densité du noyau. Voir
BW Silverman, Utilisation d'estimations de la densité du noyau pour étudier la multimodalité , J. Royal Stat. Soc. B , vol. 43, non. 1, 1981, pages 97-99.
Notez qu'il y a des erreurs dans les tableaux du papier. Ceci est juste un point de départ, mais un très bon. Il fournit un algorithme bien défini à utiliser, si c'est ce que vous recherchez le plus. Vous pouvez consulter sur Google Scholar des articles qui le citent pour des approches plus "modernes".
Je suis arrivé en retard à la fête, mais si vous voulez savoir si elle est multimodale ou non, ce qui signifie que le nombre de modes ne vous intéresse pas, vous devriez vous intéresser à diptest .
Dans R
le paquet est appelé diptest
.
La définition de wiki me laisse un peu déroutant. La probabilité qu'un ensemble de données en continu ne comporte qu'un seul mode est égale à zéro. Un moyen simple de programmer une distribution bimodale consiste à utiliser deux distributions normales séparées, centrées différemment. Cela crée deux pics ou ce que wiki appelle des modes. Vous pouvez en réalité utiliser presque deux distributions, mais l'une des possibilités statistiques les plus difficiles consiste à déterminer comment le jeu de données a été formé après la combinaison des deux distributions de données aléatoires.