Zastanawiałem się, biorąc pod uwagę dwie normalne dystrybucje z iσ 2 , μ 2
- jak mogę obliczyć procent nakładających się regionów dwóch rozkładów?
- Podejrzewam, że ten problem ma konkretną nazwę. Czy znasz jakieś konkretne nazwy opisujące ten problem?
- Czy znasz jakieś implementacje tego (np. Kod Java)?
normal-distribution
similarities
metric
bhattacharyya
Ali Salehi
źródło
źródło
Odpowiedzi:
Jest to często nazywane „współczynnikiem nakładania się” (OVL). Googlowanie za to da ci wiele trafień. Można znaleźć nomogramu dla bi-normalnym przypadku tutaj . Przydatnym papierem może być:
Edytować
Teraz zainteresowałeś mnie tym bardziej, więc stworzyłem kod R, aby to obliczyć (jest to prosta integracja). Wrzuciłem wykres dwóch rozkładów, w tym cieniowanie nakładającego się regionu:
W tym przykładzie wynik jest następujący:
0.6099324
z błędem bezwzględnym< 1e-04
. Niżej wymienione.źródło
Daje to współczynnik Bhattacharyya . W przypadku innych dystrybucji zobacz także wersję uogólnioną, odległość Hellingera między dwiema dystrybucjami.
Nie znam żadnych bibliotek do obliczenia tego, ale biorąc pod uwagę wyraźne sformułowanie w odniesieniu do odległości Mahalanobisa i wyznacznika macierzy wariancji, wdrożenie nie powinno stanowić problemu.
źródło
Nie wiem, czy istnieje oczywisty standardowy sposób na zrobienie tego, ale:
Najpierw znajdź punkty przecięcia dwóch gęstości. Można to łatwo osiągnąć przez zrównanie obu gęstości, co przy rozkładzie normalnym powinno skutkować równaniem kwadratowym dla x.
Coś w pobliżu:
Można to rozwiązać za pomocą rachunku różniczkowego.
Zatem masz zero, jeden lub dwa punkty przecięcia. Teraz te punkty przecięcia dzielą rzeczywistą linię na 1, 2 lub trzy części, gdzie jedna z dwóch gęstości jest najniższa. Jeśli nie przychodzi ci na myśl nic więcej matematycznego, po prostu wypróbuj dowolny punkt w jednej z części, aby dowiedzieć się, który z nich jest najniższy.
Twoja wartość zainteresowania jest teraz sumą obszarów pod krzywą najniższej gęstości w każdej części. Obszar ten można teraz znaleźć w funkcji skumulowanego rozkładu (wystarczy odjąć wartość na obu krawędziach „części”).
źródło
Dla potomnych rozwiązanie Wolfganga nie zadziałało - natknąłem się na błędy w
integrate
funkcji. Połączyłem to z odpowiedzią Nicka Staubbe, aby opracować następującą małą funkcję. Powinny być szybsze i mniej obciążające niż przy użyciu integracji numerycznej:źródło
(l+r)/2
?Oto wersja Java, Apache Commons Mathematics Library :
źródło
Myślę, że coś takiego może być rozwiązaniem w MATLAB:
Przynajmniej mógłbym odtworzyć wartość 0,8026 podaną poniżej na ryc. 1 w tym pliku pdf .
Musisz tylko precyzyjnie dostosować wartości początkową i końcową oraz wartości przedziałów, ponieważ jest to tylko rozwiązanie numeryczne.
źródło