Tomemos dos variables aleatorias independientes y positivas,
set.seed(123)
n <- 100
x <- runif(n) + 0.5
y <- runif(n) + 0.5
No tengo ni que decir que su correlación es prácticamente cero,
cor(x,y)
#-0.0872707
y que en su diagrama de dispersión tampoco vamos a poder leer otra cosa:
Ahora generamos otra variable independiente de las anteriores,
z <- runif(n) + 0.5
y calculamos el cociente de las primeras con respecto a esta:
xz <- x / z
yz <- y / z
¿Independientes? Hummmm...
cor(xz, yz)
# 0.5277787
Parece que no. Porque valores grandes del cociente aplastan a la vez a los valores de x
e y
y a la inversa. La correlación entre las nuevas variables crece con la del denominador, de hecho.
Así que ¡cuidado al dividir!
Nota: Lo aquí publicado es casi, casi, casi una traducción de esto.
No me parece un resultado tan sorprendente. De hecho ambas variables xz, yz dependen una misma única variable z. El mismo aumento de correlación ocurre si sumas o multiplicas por z .
Retiro el comentario anterior. Dividir es más perverso ya que es algo que se hace habitualmente con series de datos para normalizarlas o hacerlas corresponder a un escala determinada
Mucho más perverso:
set.seed(123)
n <- 100
x <- (runif(n) + 0.5)*100
y <- (runif(n) + 0.5)*100
cor(x,y)
z <- (runif(n) + 0.5)*100
xz <- x / z
yz <- y / z
xz <- x / z
yz <- y / z
cor(xz, yz)
plot(xz, yz)
Perdón me he equivocado en el copia pega:
set.seed(123)
n <- 100
x <- (runif(n) + 0.5)*100
y <- (runif(n) + 0.5)*100
x <- sqrt(x)
y <- sqrt(y)
cor(x,y)
z <- (runif(n) + 0.5)*100
xz <- x / z
yz <- y / z
xz <- x / z
yz <- y / z
cor(xz, yz)
plot(xz, yz)