Mam problem z obliczeniem współczynnika korelacji Pearsona dla zbiorów danych z możliwie zerowym odchyleniem standardowym (tj. Wszystkie dane mają tę samą wartość).
Załóżmy, że mam następujące dwa zestawy danych:
float x[] = {2, 2, 2, 3, 2};
float y[] = {2, 2, 2, 2, 2};
Współczynnik korelacji „r” oblicza się przy użyciu następującego równania:
float r = covariance(x, y) / (std_dev(x) * std_dev(y));
Ponieważ jednak wszystkie dane w zbiorze danych „y” mają tę samą wartość, odchylenie standardowe std_dev (y) wynosi zero, a „r” jest niezdefiniowane.
Czy jest jakieś rozwiązanie tego problemu? Czy powinienem w tym przypadku użyć innych metod do pomiaru relacji danych?
correlation
Andree
źródło
źródło
Odpowiedzi:
Ludzie z „teorii próbkowania” powiedzą ci, że nie ma takiej oceny. Ale możesz je zdobyć, musisz tylko rozsądnie podchodzić do swoich wcześniejszych informacji i wykonywać dużo cięższą pracę matematyczną.
Jeśli określiłeś bayesowską metodę szacowania, a tylna jest taka sama jak poprzednia, możesz powiedzieć, że dane nie mówią nic o parametrze. Ponieważ rzeczy mogą stać się dla nas „osobliwe”, nie możemy używać nieskończonych przestrzeni parametrów. Zakładam, że ponieważ używasz korelacji Pearsona, masz dwuwymiarowe normalne prawdopodobieństwo:
Qi=(xi-μx)2
Aby wskazać, że jeden zestaw danych może mieć tę samą wartość, napisz , a następnie otrzymamy:yi=y
A więc prawdopodobieństwo zależy od czterech liczb, . Więc chcesz oszacować , więc musisz pomnożyć przez a priori i zintegrować uciążliwe parametry . Aby przygotować się do integracji, „wypełniamy kwadrat”s2x,y,x¯¯¯,N ρ μx,μy,σx,σy
Powinniśmy teraz zachować ostrożność i zapewnić odpowiednio znormalizowane prawdopodobieństwo. W ten sposób nie możemy wpaść w kłopoty. Jedną z takich opcji jest użycie słabo informacyjnego przeora, który po prostu ogranicza zasięg każdego z nich. Mamy więc dla średnich z płaską wcześniejszą i dla standardowych odchyleń z jeffreys wcześniejszy. Limity te są łatwe do ustalenia przy odrobinie „zdrowego rozsądku” w myśleniu o problemie. Wezmę nieokreślony przed , więc otrzymujemy (mundur powinien działać ok, jeśli nie obciąć osobliwości o ):Lμ<μx,μy<Uμ Lσ<σx,σy<Uσ ρ ±1
Gdzie . Daje to później:A=2(Uμ−Lμ)2[log(Uσ)−log(Lσ)]2
Teraz pierwszą integrację nad można wykonać, zmieniając zmienne a pierwsza całka nad staje się:μy z=N−−√μy−[y−(x¯¯¯−μx)ρσyσx]σy1−ρ2√⟹dz=N√σy1−ρ2√dμy μy
Widać stąd, że żadne rozwiązania analityczne nie są możliwe. Warto jednak zauważyć, że wartość nie spadła z równań. Oznacza to, że dane i wcześniejsze informacje wciąż mają coś do powiedzenia na temat prawdziwej korelacji. Jeśli dane nie mówiły nic o korelacji, wówczas po prostu zostalibyśmy z jako jedyną funkcją w tych równaniach.ρ p(ρ) ρ
Pokazuje także, jak przejście do granicy nieskończonych granic dla "wyrzuca" część informacji o , które zawarte są w skomplikowanej wyglądającej normalnej funkcji CDF . Teraz, jeśli masz dużo danych, to przekroczenie limitu jest w porządku, nie tracisz dużo, ale jeśli masz bardzo rzadkie informacje, na przykład w twoim przypadku - ważne jest, aby zachować każdy posiadany złom. Oznacza to brzydkie matematyki, ale ten przykład nie jest zbyt trudny do zrobienia numerycznego. Możemy więc dość łatwo oszacować zintegrowane prawdopodobieństwo dla przy wartościach . Po prostu zamień całki na sumy w wystarczająco małych odstępach - aby uzyskać potrójne sumowanie ρ Φ ( . ) ρ - 0,99 , - 0,98 , … , 0,98 , 0,99μy ρ Φ(.) ρ −0.99,−0.98,…,0.98,0.99
źródło
Zgadzam się z sesqu, że w tym przypadku korelacja jest niezdefiniowana. W zależności od rodzaju aplikacji można np. podobieństwo Gowera między dwoma wektorami, czyli: gdzie oznacza kroneckera , zastosowaną jako funkcję w wersjach . δv1,v2gower(v1,v2)=∑ni=1δ(v1i,v2i)n δ v1,v2
Na przykład, jeśli wszystkie wartości są równe, gower (.,.) = 1. Jeśli natomiast różnią się tylko jednym wymiarem, gower (.,.) = 0,9. Jeśli różnią się w każdym wymiarze, gower (.,.) = 0 i tak dalej.
Oczywiście nie jest to miara korelacji, ale pozwala obliczyć, jak blisko wektor ze s> 0 jest do wektora ze s = 0. Oczywiście możesz również zastosować inne wskaźniki, jeśli lepiej służą Twojemu celowi.
źródło
W takim przypadku korelacja jest niezdefiniowana. Jeśli musisz to zdefiniować, zdefiniowałbym to jako 0, ale zamiast tego rozważ zwykłą różnicę absolutną.
źródło
To pytanie pochodzi od programistów, więc sugeruję podłączenie do zera. Nie ma dowodów na korelację, a hipoteza zerowa wynosiłaby zero (brak korelacji). Może istnieć inna wiedza kontekstowa, która zapewniłaby „typową” korelację w jednym kontekście, ale kod może być ponownie użyty w innym kontekście.
źródło