Fiquei me perguntando, dadas duas distribuições normais com e
- como posso calcular a porcentagem de regiões sobrepostas de duas distribuições?
- Suponho que esse problema tenha um nome específico. Você conhece algum nome específico que descreva esse problema?
- Você está ciente de alguma implementação disso (por exemplo, código Java)?
normal-distribution
similarities
metric
bhattacharyya
Ali Salehi
fonte
fonte
Respostas:
Isso também é chamado de "coeficiente de sobreposição" (OVL). Ao pesquisar no Google, você obterá muitos hits. Você pode encontrar um nomograma para o caso bi-normal aqui . Um artigo útil pode ser:
Editar
Agora você me interessou mais por isso, então fui em frente e criei o código R para calcular isso (é uma integração simples). Joguei um gráfico das duas distribuições, incluindo o sombreamento da região sobreposta:
Para este exemplo, o resultado é:
0.6099324
com erro absoluto< 1e-04
. Figura abaixo.fonte
Isto é dado pelo coeficiente de Bhattacharyya . Para outras distribuições, consulte também a versão generalizada, a distância de Hellinger entre duas distribuições.
Não conheço nenhuma biblioteca para calcular isso, mas, dada a formulação explícita em termos das distâncias de Mahalanobis e das matrizes determinantes das variações, a implementação não deve ser um problema.
fonte
Não sei se existe uma maneira óbvia de fazer isso, mas:
Primeiro, você encontra os pontos de interseção entre as duas densidades. Isso pode ser facilmente alcançado equacionando as duas densidades, que, para a distribuição normal, devem resultar em uma equação quadrática para x.
Algo próximo a:
Isso pode ser resolvido com cálculo básico.
Assim, você tem zero, um ou dois pontos de interseção. Agora, esses pontos de interseção dividem a linha real em 1, 2 ou três partes, onde uma das duas densidades é a mais baixa. Se nada mais matemático vier à mente, tente qualquer ponto dentro de uma das partes para descobrir qual é a mais baixa.
Seu valor de interesse agora é a soma das áreas sob a curva de densidade mais baixa em cada parte. Agora, essa área pode ser encontrada na função de distribuição cumulativa (basta subtrair o valor nas duas arestas da 'peça'.
fonte
Para a posteridade, a solução da wolfgang não funcionou para mim - encontrei bugs na
integrate
função. Então eu combinei com a resposta de Nick Staubbe para desenvolver a pequena função a seguir. Deve ser mais rápido e com menos bugs do que usar integração numérica:fonte
(l+r)/2
?Aqui está a versão Java, Apache Commons Mathematics Library :
fonte
Eu acho que algo assim poderia ser a solução no MATLAB:
Pelo menos eu poderia reproduzir o valor 0,8026 dado abaixo na Fig.1 neste pdf .
Você só precisa adaptar os valores inicial, final e de intervalo para ser preciso, pois essa é apenas uma solução numérica.
fonte