Editado después de comentarios útiles de Mark White (¡gracias!)
Una opción es calcular ambas relaciones (B1 con A y B2 con A) en un solo modelo que también estima la diferencia entre ellas. Esto es fácil de lograr con regresión múltiple . Ejecutaría un modelo con A como variable dependiente, y luego una variable continua con todos los puntajes para B1 y B2, una variable categórica que indica qué variable era (B1 o B2), y la interacción entre ellos. En 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
Aquí están las correlaciones de los datos que generé:
> 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
>
Cambiar el formato de los datos para satisfacer las necesidades del modelo (reformatear a "largo"):
> mydata <- as.data.frame(mydata) %>%
+ gather("var", "value", B1, B2)
>
Aquí está el modelo:
resumen (lm (A ~ valor * 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
Los resultados aquí (de mis datos inventados) sugieren que existe una relación significativa entre B1 y A (la prueba del coeficiente de "valor", ya que B1 es el grupo de referencia para el coeficiente "var"), pero que la diferencia entre la relación B1 con A y la relación B2 con A no es significativa (la prueba del coeficiente "valor: varB2").
Si le gusta pensar en términos de correlación en lugar de coeficientes de regresión, simplemente estandarice todas sus variables (A, B1 y B2) antes de ejecutar el modelo y los coeficientes de regresión que obtendrá serán estandarizados (no exactamente lo mismo que un correlación de orden cero, pero mucho más cercana en términos de interpretación).
También tenga en cuenta que esto va a restringir su análisis sólo a los casos que tienen tanto B1 y B2 ( eliminación por lista ). Mientras eso te deje con suficientes datos para no tener poca potencia, y mientras los datos faltantes falten al azar (o una proporción lo suficientemente pequeña del total de datos como para no importar mucho, incluso si faltan de manera no aleatoria), entonces está bien.
El hecho de que esté restringiendo su análisis al mismo conjunto de datos para estimar los efectos tanto para B1 como para B2 (en lugar de usar conjuntos de datos ligeramente diferentes, basados en los diferentes patrones de falta) tiene la ventaja de interpretar un poco la diferencia entre correlaciones Más sencillo. Si calcula las correlaciones por separado para cada una y luego prueba la diferencia entre ellas , se encuentra con el problema de que los datos subyacentes son ligeramente diferentes en cada caso: cualquier diferencia que vea podría deberse tanto a diferencias en las muestras como a diferencias en las relaciones reales entre variables.