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:
> set.seed(24601)
>
> library(tidyverse)
> library(mvtnorm)
> cov <- matrix(c(1, .4, .16,.4, 1, .4, .16, .4, 1), ncol=3, byrow=TRUE)
> mydata <- rmvnorm(n=100, sigma = cov)
> colnames(mydata) = c("A", "B1", "B2")
> head(mydata)
A B1 B2
[1,] -0.1046382 0.6031253 0.5641158
[2,] -1.9303293 -0.7663828 -0.7921836
[3,] 0.1244192 -0.4413581 -1.2376256
[4,] -3.2822601 -1.2512055 -0.5586773
[5,] -0.9543368 -0.1743740 1.1884185
[6,] -0.4843183 -0.2612668 -0.7161938
Oto korelacje z danych, które wygenerowałem:
> cor(mydata)
A B1 B2
A 1.0000000 0.4726093 0.3043496
B1 0.4726093 1.0000000 0.3779376
B2 0.3043496 0.3779376 1.0000000
>
Zmiana formatu danych w celu zaspokojenia potrzeb modelu (przeformatowanie na „długie”):
> mydata <- as.data.frame(mydata) %>%
+ gather("var", "value", B1, B2)
>
Oto model:
podsumowanie (lm (wartość A ~ * var, data = moje dane))
Call:
lm(formula = A ~ value * var, data = mydata)
Residuals:
Min 1Q Median 3Q Max
-2.89310 -0.52638 0.02998 0.64424 2.85747
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.09699 0.09014 -1.076 0.283
value 0.47445 0.09305 5.099 8.03e-07 ***
varB2 -0.10117 0.12711 -0.796 0.427
value:varB2 -0.13256 0.13965 -0.949 0.344
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.891 on 196 degrees of freedom
Multiple R-squared: 0.158, Adjusted R-squared: 0.1451
F-statistic: 12.26 on 3 and 196 DF, p-value: 2.194e-07
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.