Tengo tres variables, A, B y C. Parece obvio que si X = A-B e Y = C-B debería haber una correlación entre X e Y. Cuando he hecho esto en matlab con números aleatorios, parece ser el caso con una media r de alrededor de 0,5. El hecho de que haya una correlación es intuitivo porque X e Y comparten la varianza en B; pero cuando he intentado averiguar por qué es 0,5, he tenido menos suerte. Cualquier pista sobre por qué esto es así sería muy apreciada.
Respuestas
¿Demasiados anuncios?Así que calculando esto a mano tenemos lo siguiente (supondré independencia de $A,B$ y $C$ ):
\begin{align*} \text{Cor}(X,Y)&=\frac{\text{Cov}(X,Y)}{\sqrt{\text{Var(X)}\text{Var}(Y)}}\\ &\\ &=\frac{\text{Cov}(A-B,C-B)}{\sqrt{\text{Var}(A-B)\text{Var}(C-B)}}\\ &\\ &=\frac{E[(A-B)(C-B)]-E[A-B]E[C-B]}{\sqrt{[\text{Var}(A)+\text{Var}(B)]\times[\text{Var}(C)+\text{Var}(B)]}}\\ &\\ &=\frac{E[AC-AB -BC +B^2]-(E[A]-E[B])(E[C]-E[B])}{\sqrt{[\text{Var}(A)+\text{Var}(B)]\times[\text{Var}(C)+\text{Var}(B)]}}\\ &\\ &=\frac{E[AC]-E[AB] -E[BC] +E[B^2]-(E[A]-E[B])(E[C]-E[B])}{\sqrt{[\text{Var}(A)+\text{Var}(B)]\times[\text{Var}(C)+\text{Var}(B)]}}\\ &\\ &=\frac{E[A]E[C]-E[A]E[B] -E[B]E[C] +E[B^2]-(E[A]-E[B])(E[C]-E[B])}{\sqrt{[\text{Var}(A)+\text{Var}(B)]\times[\text{Var}(C)+\text{Var}(B)]}}\\ &\\ &=\frac{E[B^2]-(E[B])^2}{\sqrt{[\text{Var}(A)+\text{Var}(B)]\times[\text{Var}(C)+\text{Var}(B)]}}\\ &\\ &=\frac{\text{Var(B)}}{\sqrt{[\text{Var}(A)+\text{Var}(B)]\times[\text{Var}(C)+\text{Var}(B)]}}\\ &=\frac{1}{\sqrt{2\times2}}\\ &=\frac{1}{2} \end{align*}
Dependerá de cuáles sean las variables. Por ejemplo ( R
código, aunque debería quedar bastante claro)
set.seed(1234)
A <- rnorm(100)
B <- rnorm(100)
C <- rnorm(100)
cor(A-C, B-C) #0.40
A <- runif(100)
B <- runif(100)
C <- runif(100)
cor(A-C, B-C) #0.54
A <- rnorm(100,1,10)
B <- rnorm(100,10,100)
C <- rnorm(100,1,200)
cor(A-C, B-C) #0.89
Y, por supuesto, si A y B están relacionados, obtendrías otros valores
Esencialmente, lo que ocurre es que tiene dos fuentes de varianza en su puntuación restada y una de esas fuentes se comparte entre cada una de las puntuaciones restadas. Cuando las variables aleatorias iniciales de A
, B
y C
son todos independientes, pero luego se añade la varianza de B
tanto a A
y C
entonces la proporción de varianza que se comparte va a ser su correlación. Tuviste varianzas iguales en cada condición, por eso es 0.5, la mitad de la varianza es compartida.
Obsérvese que, si la correlación entre A
y B
es 0, entonces el var(A-B) == var(A) + var(B)
. Todas las ecuaciones siguientes muestran resultados similares (más adelante hablaré de por qué no son exactas).
a <- rnorm(10000, 0, 1)
b <- rnorm(10000, 0, 1)
var(a)
var(b)
var(a) + var(b)
var(a + b)
var(a - b)
Por lo tanto, su X
y Y
variables creadas incluyen la varianza de B
. Las correlaciones se refieren a la varianza compartida, así que tus intuiciones son correctas.
Imagino que ya habrás hecho algo parecido a lo siguiente pero quizás por fuerza bruta. Estoy usando R y el mvrnorm
porque me permite fijar mis correlaciones iniciales en 0.
library(MASS) #so I can use mvrnorm and insure 0 correlation
# The following is a covariance matrix with the variance of each condition
# on the diagonal and the covariances among the conditions of of it.
sigma <- matrix(c(1.0, 0.0, 0.0,
0.0, 1.0, 0.0,
0.0, 0.0, 1.0), 3, byrow = TRUE)
mat <- mvrnorm(100, c(0,0,0), sigma, empirical = TRUE)
cor(mat)
a <- mat[,1]
b <- mat[,2]
c <- mat[,3]
x <- a - b
y <- c - b
cor(x, y)
Puede ver la correlación final de x
y y
es 0.5, tal como lo encontraste. Puedes predecir de antemano lo que ocurriría si cambiaras las varianzas de las condiciones (ten en cuenta que lo que importa aquí es la varianza, no la desviación típica). Supongamos que la varianza de b
se aumentó de 1 a 2. Ahora, la proporción de varianza que proviene de b
en x
va a ser var(b) / (var(a) + var(b))
o 2/3. Eso va a ser lo mismo para y
por lo que la varianza geométrica media compartida va a ser igual a ambas y la correlación es 0,66 (2/3). Para generar los datos que acaba de cambiar la matriz de varianza-covarianza original que hice anteriormente y luego proceder como se indica más arriba.
# note the variance of the second condition is now 2
sigma <- matrix(c(1.0, 0.0, 0.0,
0.0, 2.0, 0.0,
0.0, 0.0, 1.0), 3, byrow = TRUE)
mat <- mvrnorm(100, c(0,0,0), sigma, empirical = TRUE)
....
Y, efectivamente, lo que ocurre es que se obtiene una correlación de 0,66. Por lo tanto, es fácil de calcular lo que la correlación debe ser sobre la base de las varianzas iniciales. Si tienes correlaciones entre a
, b
y c
y casi siempre es así, la cosa se complica un poco. Imagino que te habrás encontrado con esto en tus simulaciones cuando decías que lo que encontrabas era aproximadamente 0,5. A veces tus variables aleatorias estaban correlacionadas. Si tomo mis variables actuales que no están correlacionadas entonces las siguientes producirán los mismos resultados.
var(a) + var(b)
var(a - b)
var(a + b)
Todos ellos muestran la suma de las varianzas. Pero las ecuaciones son diferentes si existe una correlación. La primera debería ser...
var(a) + var(b) - 2*cov(a,b)
Y sería lo mismo que var(a) + var(b)
cuando la correlación es 0. También sale lo mismo que var(a - b)
. Como nota al margen, en realidad hay que sumar el término de covarianza en lugar de restarlo para que coincida con var(a + b)
.
Así que, esperemos que eso lo explique con suficiente detalle como para que puedas deducir la correlación esperada de X
y Y
basándose en las covarianzas entre A
, B
y C
y sus respectivas varianzas.
Hay una explicación gráfica usando geometría que es muy bonita pero se me escapa ahora mismo. Además, este es un excelente material para entender si alguna vez quieres tener una idea de regresión múltiple (o incluso ANOVAs desequilibrados).