Spójrz, a znajdziesz (korelację)


66

Mam kilkaset pomiarów. Teraz rozważam wykorzystanie jakiegoś oprogramowania do skorelowania każdej miary z każdą miarą. Oznacza to, że istnieją tysiące korelacji. Wśród nich powinna być (statystycznie) wysoka korelacja, nawet jeśli dane są całkowicie losowe (każda miara ma tylko około 100 punktów danych).

Kiedy znajdę korelację, w jaki sposób mogę dołączyć do niej informację o tym, jak bardzo szukałem korelacji?

Nie jestem na wysokim poziomie statystyki, więc proszę o wyrozumiałość.


5
To świetny przykład tego, dlaczego trzeba testować wiele hipotez.

Można przypuszczać, że można zastosować procedurę permutacji do wygenerowania rozkładu zerowego dla progów istotności dla największej korelacji, innego progu dla drugiej co do wielkości korelacji i tak dalej. Mam nadzieję, że zajęłoby to tylko kilka godzin w Pythonie lub R. (Ha! Znane ostatnie słowa). Ale na pewno ktoś musiał już to zrobić i gdzieś zapisać kod?

4
@tmo Rna tej maszynie zajmuje 18 sekund, aby uzyskać 1000 realizacji zerowego rozkładu permutacji maksymalnego współczynnika korelacji dla macierzy 300 na 100 x:correl <- function(x, k=1) { n <- dim(x)[2] * (dim(x)[2]-1) / 2; v <- cor(x); sort(v[lower.tri(v)])[(n-k+1):n] }; sim <- replicate(1000, correl(apply(x,2,sample)))
whuber

Odpowiedzi:


74

To doskonałe pytanie, godne kogoś, kto jest jasnym myślicielem statystycznym, ponieważ rozpoznaje subtelny, ale ważny aspekt wielokrotnych testów.

Istnieją standardowe metody korygowania wartości p wielu współczynników korelacji (lub równoważnie w celu rozszerzenia ich przedziałów ufności), takie jak metody Bonferroniego i Sidaka ( qv ). Są one jednak zbyt konserwatywne w przypadku dużych macierzy korelacji ze względu na nieodłączne zależności matematyczne, które muszą zachowywać się wśród współczynników korelacji w ogóle. (Aby zapoznać się z niektórymi przykładami takich relacji, zobacz ostatnie pytanie i wynikający z tego wątek .) Jednym z najlepszych podejść do radzenia sobie z tą sytuacją jest przeprowadzenie testu permutacji (lub ponownego próbkowania). Łatwo jest to zrobić za pomocą korelacji: w każdej iteracji testu po prostu losowo szyfruj porządek wartości każdego z pól (niszcząc w ten sposób wszelką nieodłączną korelację) i ponownie oblicz pełną macierz korelacji. Zrób to dla kilku tysięcy iteracji (lub więcej), a następnie podsumuj rozkłady wpisów macierzy korelacji, na przykład przez podanie ich 97,5 i 2,5 percentyli: posłużyłyby one jako wzajemne symetryczne dwustronne 95% przedziały ufności poniżej wartości zerowej hipoteza braku korelacji. (Za pierwszym razem, gdy zrobisz to z dużą liczbą zmiennych, zdziwisz się, jak wysokie mogą być niektóre współczynniki korelacji, nawet jeśli nie ma nieodłącznej korelacji).

Podczas raportowania wyników, niezależnie od wykonywanych obliczeń, należy uwzględnić następujące elementy:

  • Rozmiar macierzy korelacji ( tj. Ile zmiennych oglądałeś).

  • Jak określiłeś wartości p lub „istotność” któregokolwiek ze współczynników korelacji ( np. Pozostawiłeś je bez zmian , zastosowałeś korektę Bonferroniego, wykonałeś test permutacyjny lub cokolwiek innego).

  • Czy spojrzałeś na alternatywne miary korelacji, takie jak korelacja rang Spearmana . Jeśli tak, wskaż również, dlaczego wybrałeś metodę, której używasz.


1
Jest to dość dokładny opis metod dostosowywania wartości p, ale nie wspomniano o kryteriach dostosowania. Tradycyjnie był to rodzinny poziom błędu. Ale jest to ścisłe kryterium i nie jest przydatne, gdy patrzysz na tysiące porównań. W takim przypadku powszechnie stosowana jest obecnie liczba fałszywych wykrytych błędów, sugerowana przez Benjamini.
Michael Chernick

corr(x1,y1)corr(xn,yn)xiyicorr(xi,yj) ij)? Czy nadal potrzebujemy korekty?
Jase

@Jase Tak, robisz. Wielkość korekty zależy od wzajemnych zależności między zmiennymi. Metody oparte na symulacji są jedynym praktycznym sposobem ustalenia tych poprawek.
whuber

O, nieźle. Czy omawiana metoda poprawi również standardowe błędy dotyczące korelacji szeregowej i problemów heteroscedastyczności?
Jase

@Jase Trudno byłoby interpretować współczynniki korelacji w modelu heteroscedastycznym. Twój komentarz wydaje się odnosić do modelu liniowego w ustawieniach szeregów czasowych, a nie do szacowania wielowymiarowych współczynników korelacji.
whuber

10

Z odpowiedzi na pytanie zadane przez Petera Floma wynika, że ​​lepiej byłoby skorzystać z technik, które sprawdzają strukturę wyższego poziomu w macierzy korelacji.

Techniki takie jak analiza czynnikowa, PCA, skalowanie wielowymiarowe i analiza skupień zmiennych mogą być używane do grupowania zmiennych w zestawy stosunkowo bardziej powiązanych zmiennych.

Możesz także teoretycznie zastanowić się, jaki rodzaj struktury powinien być obecny. Gdy liczba zmiennych jest duża, a liczba obserwacji jest niewielka, często lepiej polegać na wcześniejszych oczekiwaniach.


1
(+1) Dobra rada w świetle komentarza OP do odpowiedzi @Peter Flom.
whuber

7

To jest przykład wielu porównań. Jest na ten temat duża literatura.

Jeśli masz, powiedzmy, 100 zmiennych, będziesz mieć 100 * 99/2 = 4950 korelacji.

Jeśli dane są tylko szumem, można oczekiwać, że 1 na 20 z nich będzie znaczący przy p = 0,05. To 247,5

Jednak zanim pójdziemy dalej, dobrze byłoby powiedzieć, DLACZEGO to robisz. Czym są te zmienne, dlaczego je korelujesz, jaki jest twój merytoryczny pomysł?

A może po prostu szukasz wysokich korelacji?


3
Powodem, dla którego chciałem to zrobić w ten sposób, był otwarty umysł na zrozumienie moich danych, więc może w pewnym sensie szukam korelacji, o których wcześniej nie myślałem, aby uzyskać oświecenie. Z pewnością nie robię tego, aby zadowolić mojego szefa lub coś w rodzaju aberracji. Wolałbym nie wchodzić w szczegóły danych, ponieważ potrzebuję ogólnej odpowiedzi na to pytanie, dzięki czemu będę mógł z niej korzystać we wszystkich sytuacjach w przyszłości.
David

7

Być może mógłbyś przeprowadzić wstępną analizę losowego podzbioru danych, aby sformułować hipotezy, a następnie przetestować te kilka interesujących hipotez, korzystając z reszty danych. W ten sposób nie będziesz musiał poprawiać prawie tylu wielu testów. (Myślę...)

Oczywiście, jeśli zastosujesz taką procedurę, zmniejszysz rozmiar zestawu danych wykorzystywanego do końcowej analizy, a tym samym zmniejszysz swoją siłę do znajdowania prawdziwych efektów. Jednak korekty wielu porównań również zmniejszają moc, więc nie jestem pewien, czy koniecznie byś coś stracił.


5
(+1) Ogólnie jest to świetny pomysł. W przypadku dużych macierzy korelacji istnieje jednak tak wiele statystyk i tak wiele z nich może być jednocześnie wyjątkowo dużych, że zwykle opłaca się je dostosowywać. W przeciwnym razie kończysz goniąc za dużą liczbą myląco „znaczących” korelacji, które po prostu znikają w danych wstrzymujących. (Przeprowadź symulację, powiedzmy, kilkaset losowań z 50 nieskorelowanych standardowych zmiennych wariacyjnych. To otwieracz do oczu.)
whuber
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.