ความไม่เท่าเทียมกันสามเหลี่ยมบน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