Die Dreiecksungleichung auf Ihrem würde ergeben:
d1
d1( X, Z)1 - | C o r ( X, Z) |⟹| C o r (X, Y) | + | C o r ( Y, Z) |≤ d1( X, Y) + d1( Y, Z)≤ 1 - | C o r ( X, Y) | + 1 - | C o r ( Y, Z) |≤1+|Cor(X,Z)|
Dies scheint eine leichte Ungleichung zu sein, die es zu besiegen gilt. Wir können die rechte Seite so klein wie möglich machen (genau eine), indem wir und unabhängig machen. Können wir dann ein finden , dessen linke Seite ein überschreitet?XZY
Wenn und und identische Varianz haben, dann und ähnlich für , so Die linke Seite liegt weit darüber und die Ungleichung wird verletzt. Beispiel für diese Verletzung in R, wo und Komponenten einer multivariaten Normalen sind: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
Beachten Sie jedoch, dass diese Konstruktion mit Ihrem nicht funktioniert :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
Anstatt einen theoretischen Angriff auf starten , fand ich es zu diesem Zeitpunkt einfach einfacher, mit der Kovarianzmatrix in R herumzuspielen, bis ein schönes Gegenbeispiel herauskam. Das Zulassen von , und ergibt:V a r ( X ) = 2 V a r ( Z ) = 1 C o v ( X , Z ) = 1d2Sigma
Var(X)=2Var(Z)=1Cov(X,Z)=1
Var(Y)=Var(X+Y)=Var(X)+Var(Z)+2Cov(X,Z)=2+1+2=5
Wir können auch die Kovarianzen untersuchen:
C o v ( Y , Z ) = C o v ( X + Z , Z
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
Die quadratischen Korrelationen lauten dann:
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
Dann ist während und so dass die Dreieckungleichung mit einem erheblichen Spielraum verletzt wird.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