Chcę ustalić, który z dwóch zestawów danych (B1, B2) lepiej koreluje (gruszki r) z innym zestawem (A). Brakuje danych we wszystkich zestawach danych. Jak mogę ustalić, czy wynikowa korelacja jest znacząco inna, czy nie?
Np. Wartości 8426 są obecne zarówno w A, jak i B1, r = 0,74. 8798 jest obecnych zarówno w A, jak i B2, r = 0,72.
Myślałem, że to pytanie może pomóc, ale nie ma na nie odpowiedzi: Skąd wiedzieć, że jeden system jest znacznie lepszy od drugiego?
Odpowiedzi:
Czasem może być w stanie osiągnąć to w regresji wielokrotnej, gdzie A jest DV B jest wynik ludzie mają w skali, a C jest kod manekin, który mówi, że jest albo B1 lub B2
lm(A~B+C+B*C)
. Termin interakcji,B*C
powie ci, czy korelacje są różne, a proste nachylenia między A i B na obu poziomach C powie ci korelacje.Nie jest jednak możliwe dopasowanie wszystkich rodzajów porównań między warunkami w tych ramach.
cocor
Pakiet R jest bardzo przydatne i ma bardzo prosty wskaż i kliknij interfejs w internecie. Zauważ, że przy różnych brakujących danych nie masz próbek niezależnych ani zależnych. Użyłbym tutaj listowego usuwania, aby było to proste (a moc nie jest dla ciebie problemem).źródło
Och, moc bootstrapu. Spójrzmy na trzy wektory dla ilustracji:ZA , b1 i b2) gdzie:
doo r ( A ,b1) = 0,92
doo r ( A ,b2)) = 0,86
Celem jest ustalenie, czy korelacja tych dwóch zestawów danych jest znacząco różna. Pobierając próbki bootstrap w taki sposób:
Możemy wykreślić rozkłady bootstrap dwóch korelacji:
Możemy również uzyskać 95% przedziały ufności dladoo r ( A ,bja) .
95% CI dladoo r r ( A ,b1) :
( 0,897 ; 0,947 )
95% CI dladoo r r ( A ,b2)) :
( 0,810 , 0,892 )
Fakt, że przedziały nie nakładają się (ledwo), daje pewne dowody na to, że zaobserwowana różnica korelacji próbek jest rzeczywiście istotna statystycznie.
Jak ameba wskazuje w komentarzach, bardziej „mocny” wynik wynika z uzyskania różnicy dla każdej próbki bootstrap.
95% CI dla różnicy między tymi dwoma wynosi:( 0,019 ; 0,108 )
Biorąc pod uwagę, że przedział (ledwo) wyklucza 0, mamy podobne dowody jak wcześniej.
Aby poradzić sobie z problemem braku danych, po prostu wybierz próbki bootstrapu z par zawartych w obu zestawach danych.
źródło
Załóżmy, że transformacja Fishera:r′1=tanh- 1(r1) i r′2)=tanh- 1(r2)) . Lub w równoważny i być może jaśniejszy sposób (dzięki @dbwilson !),r′1=12)ln(1 +r11 -r1) i r′2)=12)ln(1 +r2)1 -r2)) .
Wynika z tego, że ze względu na fakt, że zmienne transformowane przez Fishera są teraz rozkładem normalnym, a suma rozkładów losowych rozkładów normalnych jest nadal rozkładem normalnym:
Więc testujesz hipotezę zerowąH.0: z= 0 poprzez uzyskanie P.( z≠ 0 ) = 2 ⋅ P.( Z> | z| ) .
W porównaniu do zwykłegot -testuj, zauważ, że nie mogliśmy użyć t -statystyki tak łatwo, zobacz jaki jest rozkład różnicy rozkładów dwóch t , więc należy wziąć pod uwagę stopnie swobody dostępne w obliczeniach, tzn. zakładamyn wystarczająco duży, aby normalne przybliżenie mogło być rozsądnie odpowiednie t Statystyka.
-
Po komentarzu @Josha możemy nieco uwzględnić możliwość współzależności między próbkami (pamiętaj, że obie korelacje zależą od rozkładu A). Bez zakładania niezależnych próbek i stosowania nierówności Cauchy'ego-Schwarza możemy uzyskać następującą górną granicę (patrz: Jak znaleźć standardowe odchylenie różnicy między dwoma średnimi? ):
źródło
Edytowane po pomocnych opiniach Marka White'a (dziękuję!)
Jedną z opcji jest obliczenie obu zależności (B1 z A i B2 z A) w jednym modelu, który również szacuje różnicę między nimi. Jest to łatwe do osiągnięcia dzięki regresji wielokrotnej . Uruchomiłbyś model z A jako zmienną zależną, a następnie jedną zmienną ciągłą ze wszystkimi wynikami dla B1 i B2, zmienną kategoryczną wskazującą, która to zmienna (B1 lub B2) i interakcję między nimi. R:
Oto korelacje z danych, które wygenerowałem:
Zmiana formatu danych w celu zaspokojenia potrzeb modelu (przeformatowanie na „długie”):
Oto model:
Wyniki tutaj (z moich opracowanych danych) sugerują, że istnieje znaczący związek między B1 i A (test współczynnika „wartości”, ponieważ B1 jest grupą odniesienia dla współczynnika „var”), ale że różnica związek między B1 z A i B2 z A nie jest istotny (test współczynnika „wartość: varB2”).
Jeśli wolisz myśleć w kategoriach korelacji niż współczynników regresji, po prostu ujednolicaj wszystkie swoje zmienne (A, B1 i B2) przed uruchomieniem modelu, a otrzymane współczynniki regresji zostaną ustandaryzowane (nie do końca to samo korelacja zerowego rzędu, ale znacznie bliższa interpretacji).
Zauważ również, że ograniczy to analizę tylko do przypadków, które mają zarówno B1, jak i B2 ( usunięcie listowe ). Tak długo, jak pozostawia Ci to wystarczającą ilość danych, abyś nie był niedostatecznie zasilony, i tak długo, jak brakujące dane są losowo tracone (lub wystarczająco mała część wszystkich danych, aby nie mieć większego znaczenia, nawet jeśli brakuje ich losowo), to w porządku.
Ograniczenie analizy do tego samego zestawu danych w celu oszacowania efektów zarówno dla B1, jak i B2 (zamiast używania nieco innych zestawów danych w oparciu o różne wzorce braków) ma tę zaletę, że nieco interpretuje różnicę między korelacjami bardziej proste. Jeśli obliczysz korelacje osobno dla każdej z nich, a następnie przetestujesz różnicę między nimi , napotkasz problem polegający na tym, że dane leżące u ich podstaw są nieco inne w każdym przypadku --- każda widoczna różnica może wynikać z różnic w próbkach tak samo jak różnic w rzeczywistych relacjach między zmiennymi.
źródło
lm(A~B1*B2)
będzie sprawdzić, czy korelacja pomiędzyB1
iA
zależy od czyjegośB2
wynik ? Ten termin interakcji nie sprawdza, czy korelacje są różne; sprawdza, czy dwa predyktory oddziałują na siebie. Możesz stworzyć sztuczny kod,C
który koduje, czy skala dlaB
jest,B1
czy nieB2
. To by powiedziało ci, że korelacja pomiędzyB
iA
zależy od tego, czy jest,B1
czyli odB2
tego, czy korelacje są różne.