La desigualdad del triángulo en su produciría:
d1
d1(X,Z)1−|Cor(X,Z)|⟹|Cor(X,Y)|+|Cor(Y,Z)|≤d1(X,Y)+d1(Y,Z)≤1−|Cor(X,Y)|+1−|Cor(Y,Z)|≤1+|Cor(X,Z)|
Parece una desigualdad bastante fácil de vencer. Podemos hacer que el lado derecho sea lo más pequeño posible (exactamente uno) haciendo que y independientes. Entonces, ¿podemos encontrar una para la cual el lado izquierdo exceda uno?XZY
Si y y tienen una varianza idéntica, entonces y de manera similar para , entonces el lado izquierdo está muy por encima de uno y se viola la desigualdad. Ejemplo de esta violación en R, donde y son componentes de una normal multivariada:Y=X+ZXZCor(X,Y)=2√2≈0.707Cor(Y,Z)XZ
library(MASS)
set.seed(123)
d1 <- function(a,b) {1 - abs(cor(a,b))}
Sigma <- matrix(c(1,0,0,1), nrow=2) # covariance matrix of X and Z
matrixXZ <- mvrnorm(n=1e3, mu=c(0,0), Sigma=Sigma, empirical=TRUE)
X <- matrixXZ[,1] # mean 0, variance 1
Z <- matrixXZ[,2] # mean 0, variance 1
cor(X,Z) # nearly zero
Y <- X + Z
d1(X,Y)
# 0.2928932
d1(Y,Z)
# 0.2928932
d1(X,Z)
# 1
d1(X,Z) <= d1(X,Y) + d1(Y,Z)
# FALSE
Aunque tenga en cuenta que esta construcción no funciona con su :d2
d2 <- function(a,b) {1 - cor(a,b)^2}
d2(X,Y)
# 0.5
d2(Y,Z)
# 0.5
d2(X,Z)
# 1
d2(X,Z) <= d2(X,Y) + d2(Y,Z)
# TRUE
En lugar de lanzar un ataque teórico sobre , en esta etapa me resultó más fácil jugar con la matriz de covarianza en R hasta que apareció un buen contraejemplo. Permitir , y da:d2Sigma
Var(X)=2Var(Z)=1Cov(X,Z)=1
Var(Y)=Var(X+Y)=Var(X)+Var(Z)+2Cov(X,Z)=2+1+2=5
También podemos investigar las covarianzas:
Cov(X,Y)=Cov(X,X+Z)=Cov(X,X)+Cov(X,Z)=2+1=3
Cov(Y,Z)=Cov(X+Z,Z)=Cov(X,Z)+Cov(Z,Z)=1+1=2
Las correlaciones al cuadrado son entonces:
Cor(X,Z)2=Cov(X,Z)2Var(X)Var(Z)=122×1=0.5
Cor(X,Y)2=Cov(X,Y)2Var(X)Var(Y)=322×5=0.9
Cor(Y,Z)2=Cov(Y,Z)2Var(Y)Var(Z)=225×1=0.8
Entonces mientras que y entonces la desigualdad del triángulo se viola por un margen sustancial.d2(X,Z)=0.5d2(X,Y)=0.1d2(Y,Z)=0.2
Sigma <- matrix(c(2,1,1,1), nrow=2) # covariance matrix of X and Z
matrixXZ <- mvrnorm(n=1e3, mu=c(0,0), Sigma=Sigma, empirical=TRUE)
X <- matrixXZ[,1] # mean 0, variance 2
Z <- matrixXZ[,2] # mean 0, variance 1
cor(X,Z) # 0.707
Y <- X + Z
d2 <- function(a,b) {1 - cor(a,b)^2}
d2(X,Y)
# 0.1
d2(Y,Z)
# 0.2
d2(X,Z)
# 0.5
d2(X,Z) <= d2(X,Y) + d2(Y,Z)
# FALSE