Je me demandais, étant donné deux distributions normales avec et σ 2 , μ 2
- Comment puis-je calculer le pourcentage de régions qui se chevauchent de deux distributions?
- Je suppose que ce problème a un nom spécifique, connaissez-vous un nom particulier décrivant ce problème?
- Êtes-vous au courant de la mise en œuvre de ceci (par exemple, du code Java)?
normal-distribution
similarities
metric
bhattacharyya
Ali Salehi
la source
la source
Réponses:
C'est ce que l'on appelle souvent le "coefficient de recouvrement" (OVL). Googler pour cela vous donnera beaucoup de succès. Vous pouvez trouver un nomogramme pour le cas bi-normal ici . Un article utile peut être:
Modifier
Maintenant, cela m’intéresse davantage, j’ai donc décidé de créer du code R pour le calculer (c’est une intégration simple). J'ai jeté dans un graphique des deux distributions, y compris l'ombrage de la région qui se chevauchent:
Pour cet exemple, le résultat est:
0.6099324
avec erreur absolue< 1e-04
. Figure ci-dessous.la source
Ceci est donné par le coefficient de Bhattacharyya . Pour les autres distributions, voir aussi la version généralisée, la distance de Hellinger entre deux distributions.
Je ne connais aucune bibliothèque pour calculer cela, mais étant donné la formulation explicite en termes de distances de Mahalanobis et de déterminant de matrices de variance, la mise en œuvre ne devrait pas poser de problème.
la source
Je ne sais pas s'il existe un moyen standard évident de le faire, mais:
Tout d'abord, vous trouvez les points d'intersection entre les deux densités. Ceci peut être facilement réalisé en égalisant les deux densités, ce qui, pour la distribution normale, devrait aboutir à une équation quadratique pour x.
Cela peut être résolu avec un calcul de base.
Ainsi, vous avez soit zéro, un ou deux points d'intersection. Maintenant, ces points d'intersection divisent la ligne réelle en 1, 2 ou trois parties, l'une des deux densités étant la plus faible. Si rien de plus mathématique ne vous vient à l’esprit, essayez un point quelconque dans l’une des parties pour trouver laquelle est la plus basse.
Votre valeur d'intérêt est maintenant la somme des zones situées sous la courbe de densité la plus faible de chaque partie. Cette zone peut maintenant être trouvée à partir de la fonction de distribution cumulative (il suffit de soustraire la valeur dans les deux bords de la «partie».
la source
Pour la postérité, la solution de wolfgang n'a pas fonctionné pour moi: j'ai rencontré des bugs dans la
integrate
fonction. Je l'ai donc combiné avec la réponse de Nick Staubbe pour développer la petite fonction suivante. Devrait être plus rapide et moins complexe que l’intégration numérique:la source
(l+r)/2
?Voici la version Java, Apache Commons Mathematics Library :
la source
Je pense que quelque chose comme ceci pourrait être la solution dans MATLAB:
Au moins, je pourrais reproduire la valeur 0,8026 donnée ci-dessous Fig.1 dans ce pdf .
Vous devez simplement adapter les valeurs de début et de fin et les intervalles pour être précis, car il ne s'agit que d'une solution numérique.
la source