Нерівність трикутника на вашому 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)|
Це здається досить легкою нерівністю для перемоги. Ми можемо зробити праву частину якомога меншою (саме одну), зробивши X і Z незалежними. Тоді чи можемо ми знайти Y для якого ліва частина перевищує одиницю?
Якщо і і мають однакову дисперсію, то і аналогічно для , так ліва частина значно вище однієї і нерівність порушується. Приклад цього порушення в R, де і є компонентами багатовимірної норми: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
Хоча зауважте, що ця конструкція не працює з вашим :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
Замість того, щоб запускати теоретичну атаку на , на цьому етапі мені просто стало легше пограти з коваріаційною матрицею в R, поки не вискочив хороший контрприклад. Дозволення , і дає: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
Ми також можемо досліджувати коваріації:
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
Потім кореляції у квадраті:
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
Тоді а і тому нерівність трикутника порушується за суттєвим запасом.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