Editado após feedback útil de Mark White (obrigado!)
Uma opção é calcular os dois relacionamentos (B1 com A e B2 com A) em um único modelo que também calcula a diferença entre eles. Isso é fácil de realizar com regressão múltipla . Você executaria um modelo com A como variável dependente e, em seguida, uma variável contínua com todas as pontuações para B1 e B2, uma variável categórica indicando qual variável era (B1 ou B2) e a interação entre elas. Em 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
Aqui estão as correlações dos dados que eu gerei:
> 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
>
Alterando o formato dos dados para atender às necessidades do modelo (reformatando para "longo"):
> mydata <- as.data.frame(mydata) %>%
+ gather("var", "value", B1, B2)
>
Aqui está o modelo:
resumo (lm (A ~ value * var, data = mydata))
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
Os resultados aqui (dos meus dados elaborados) sugerem que existe uma relação significativa entre B1 e A (o teste do coeficiente "valor", pois B1 é o grupo de referência para o coeficiente "var"), mas que a diferença entre o relacionamento B1 com A e o relacionamento B2 com A não é significativo (o teste do coeficiente "valor: varB2").
Se você gosta de pensar em termos de correlação, em vez de coeficientes de regressão, apenas padronize todas as suas variáveis (A, B1 e B2) antes de executar o modelo, e os coeficientes de regressão obtidos serão padronizados (não exatamente a mesma coisa que um correlação de ordem zero, mas muito mais próxima em termos de interpretação).
Note também que esta vai restringir sua análise apenas aos casos que têm tanto B1 e B2 ( listwise eliminação ). Desde que isso deixe você com dados suficientes para não ficar com pouca potência e contanto que os dados ausentes estejam faltando aleatoriamente (ou uma proporção pequena o suficiente do total de dados para não importar muito, mesmo que estejam ausentes de maneira não aleatória), tudo bem.
O fato de você restringir sua análise ao mesmo conjunto de dados para estimar efeitos para B1 e B2 (em vez de usar conjuntos de dados ligeiramente diferentes, com base nos diferentes padrões de falta) tem a vantagem de interpretar um pouco a diferença entre correlações mais direto. Se você calcular as correlações separadamente para cada uma delas e depois testar a diferença entre elas , terá o problema de que os dados subjacentes são ligeiramente diferentes em cada caso - qualquer diferença que você vê pode ser devido a diferenças nas amostras e a diferenças nas relações reais entre variáveis.