- 2つの「もの」がn次元ベクトルで表現されているとする
- それぞれをとする
- 空間の点と考えてユークリッド距離を計算すれば、
- これは、n次元空間を描き、そこに2点を配置して、2点間の直線を引くことで図示ことができる
- 別の図示の方法としては、x軸とy軸との2次元平面を準備して、そこになる点を打って示すことである
- このときというのは、点と、その点が直線に対して対称な点とを対角2点とする正方形の面積であるから、ユークリッド距離は、そのような正方形の面積の総和の平方根になる
- 正方形を描いてみると次のようになる
n <- 100
x <- runif(n)
y <- x + rnorm(n)*0.1
xlim <- ylim <- c(min(c(x,y)),max(c(x,y)))
plot(x,y,xlim=xlim,ylim=ylim)
for(i in 1:length(x)){
col <- gray(0.5 + 0.5 * i/length(x))
polygon(c(x[i],x[i],y[i],y[i]),c(y[i],x[i],x[i],y[i]),col=col)
}
abline(0,1, col=2)
- 一方、相関係数はであるので、この分子の部分のみを同様に図示とすると、という点(重心)と各点とが作る長方形の面積の和(ただし、重心を中心として直交4象限に分けたとき、第1、第3象限のときは正の値として加え、第2、第4象限のときは、負の値として加える、ことになるので、それを2色で塗り分けることにする
plot(x,y,xlim=xlim,ylim=ylim)
d.from.center <- sqrt((x-mean(x))^2+(y-mean(y))^2)
ord <- order(d.from.center,decreasing =TRUE)
cnt <- 1
for(i in ord){
col <- sign((x[i]-mean(x))*(y[i]-mean(y)))+3
col2 <- c(0,0,0)
if(col == 2){
col2 <- c(0.5+0.5*cnt/length(x),0,0)
}else{
col2 <- c(0,0,0.5+0.5*cnt/length(x))
}
cnt <- cnt +1
polygon(c(mean(x),mean(x),x[i],x[i]),c(mean(y),y[i],y[i],mean(y)),col=rgb(col2[1],col2[2],col2[3]))
}
abline(mean(y)-mean(x),1, col=2)
abline(v = mean(x),col=2)
abline(h = mean(y),col=2)