library(tidyr)
相関係数は2つの変量 x,y の関係を表します。難しく感じますが、具体例で確かめながら進めましょう。
<定義>.
偏差は平均からのズレです。
あなたがテストの30点を持って帰ったらお家の人に叱られました。ところが平均が20点のテストだったとしたらどうでしょう。テストが難しかったのであって、自分はそんなに悪くないと主張することができるでしょう。平均を基準として、平均からのズレを計算したものが偏差です。
偏差平方和は偏差の二乗の合計.
平均から離れたデータが多いと大きくなります。分散は偏差平方の平均で、平均からの離れ具合の平均です。二乗しているのでルートにしたものが標準偏差です。
偏差積は2つのデータがどれくらい似通っているかを表します.
似通っていると (x,y) は直線 y=x に近づきます。
x+yが一定であれば、xyが大きいほど2つの値x,yは似た値になります。
(数学的根拠は \((x+y)/2\geq
\sqrt{xy}\) ですが立ち入る必要はありません)
偏差積和は偏差積の合計. 2つのデータが直線y=xにどれくらい近いかを表します。偏差積の平均が共分散で、(x,y)がどれくらいy=xに近く分布しているかを表します。
<関数>.
関数covは共分散であるが、n-1で割った値であることに注意.
(cov(
)にデータフレームを代入すると分散共分散行列を出力する).
関数varは分散であるが、n-1で割った値であることに注意.
x <- c(-2,2)
y <- c(-2,2)
plot(x,y,asp = 1,xlim=c(-3,3),ylim=c(-3,3))
abline(h=0,v=0,col="lightblue")
(x-mean(x))*(y-mean(y))#偏差積
## [1] 4 4
4,4の平均なので共分散は4です。
関数を使う場合は注意が必要です。
cov(x,y)/2#関数
## [1] 4
関数covは n-1=1 で割っているので修正して計算しています。 共分散はプラスに大きくなります。
x <- c(-2,2)
y <- c(2,-2)
plot(x,y,asp = 1,xlim=c(-3,3),ylim=c(-3,3))
abline(h=0,v=0,col="lightblue")
(x-mean(x))*(y-mean(y))
## [1] -4 -4
-4,-4 の平均なので共分散は -4 です。
x <- c(-2,2)
y <- c(-2,2)
data <- crossing(x, y);data
x | y |
---|---|
-2 | -2 |
-2 | 2 |
2 | -2 |
2 | 2 |
X <- data$x
Y <- data$y
plot(X,Y,asp = 1,xlim=c(-3,3),ylim=c(-3,3))
abline(h=0,v=0,col="lightblue")
(X-mean(X))*(Y-mean(Y))
## [1] 4 -4 -4 4
4 -4 -4 4 の平均なので共分散は0です。まんべんなく散らばっていると共分散は0に近くなります。
データの値が大きいと、共分散の値も大きくなります.
x <- c(-5,5)
y <- c(-5,5)
plot(x,y,asp = 1,xlim=c(-6,6),ylim=c(-6,6))
abline(h=0,v=0,col="lightblue")
(x-mean(x))*(y-mean(y))
## [1] 25 25
値は大きくなりましたが、x,yの見た目の関係は同じです。
値に左右されず関係だけを知りたい場合は、標準化という操作をします。
標準化は標準偏差で割ることです。
x,y の標準偏差は 2 なので 2 で割ります。
(関数varや関数sdは(n-1)で割った値なので、手計算するときは修正します).
x <- c(-2,2)
y <- c(-2,2)
X <- (x-mean(x))/2
Y <- (x-mean(y))/2
(X-mean(X))*(Y-mean(Y))#偏差積
## [1] 1 1
x <- c(-5,5)
y <- c(-5,5)
X <- (x-mean(x))/5
Y <- (x-mean(y))/5
(X-mean(X))*(Y-mean(Y))#偏差積
## [1] 1 1
値の大きさに左右されなくなりました。
cor(x,y)
## [1] 1
相関係数は2変量の関係の度合いを表す.
分布を表すものとしてヒストグラムが有用であるが、分布を簡潔に表現する指標として、平均・分散が有効.
2変量の関係を視覚的に捉えるには散布図が有用であるが、 散布図の状況を簡潔に表現する指標が相関係数.
相関のある2変量乱数は2変量正規分布で出力できる。
回帰と相関の違いについては市原先生の7章に詳しい
回帰 | 相関 | |
---|---|---|
誤 差 | y方向のみ | x,y両方が確率変数 |
信頼域 | yの信頼区間 | x,yの分布の中心からの等確率距離 |
目 的 | どのように直線に関係づけられるか | どの程度直線的か |
単 位 | 単位に依存 | 単位に依存しない |
ここでは、相関係数によって散布図がどのようになるかを Rの乱数でシミュレーションする。イメージを掴んでおこう。
sigma.zero <- matrix(c(1,0,0,1), ncol=2)
x <- rmvnorm(n=10000, mean=c(0,0), sigma=sigma.zero)
par(mfrow = c(1,1))
plot(x,xlim=c(-4,4),ylim=c(-4,4),asp=1,col="grey")
sigma <- matrix(c(1,0.5,0.5,1), ncol=2)
x <- rmvnorm(n=10000, mean=c(0,0), sigma=sigma)
data <- data.frame(X=x[,1],Y=x[,2])
model <- lm(Y ~ X, data = data)
plot(x,asp=1,col="grey")
abline(model)
abline(v=1.5,col="blue")
model$coef
## (Intercept) X
## 0.001486601 0.498957098
回帰直線は、\(y=0.5x\)
標準化されていれば、回帰係数と相関係数は一致します。
回帰直線はxを固定したときの推定値を与えます。
例えていうと、相関係数はサツマイモの太さのようなもので、右斜めにしてサツマイモを切ったときに、切り口の中点を繋いだ線が回帰直線です。
sigma <- matrix(c(1,0,0,4), ncol=2)
x <- rmvnorm(n=10000, mean=c(0,0), sigma=sigma)
plot(x,asp=1,col="grey")
var(x)
## [,1] [,2]
## [1,] 1.01858254 -0.02285636
## [2,] -0.02285636 4.06587554
分散共分散行列は、matrix(c(1,0,0,4), ncol=2) になっています。
sigma <- matrix(c(1,1,1,4), ncol=2)
x <- rmvnorm(n=10000, mean=c(0,0), sigma=sigma)
data <- data.frame(X=x[,1],Y=x[,2])
model <- lm(Y ~ X, data = data)
plot(x,asp=1,col="grey")
abline(model)
abline(v=2,col="blue")
model$coef
## (Intercept) X
## -0.01223033 0.99098896
回帰直線は、\(y=1\cdot x\)
一般に回帰係数は、
標準偏差 \(s_x,s_y\)、相関係数 \(r_{xy}\) とすると \(\displaystyle
b=\dfrac{s_y}{s_x}r_{xy}\) であるので、
本問では、 \(b=2\cdot 0.5=1\) となっています。
sigma <- matrix(c(1,2,2,4), ncol=2)
x <- rmvnorm(n=10000, mean=c(0,0), sigma=sigma)
data <- data.frame(X=x[,1],Y=x[,2])
model <- lm(Y ~ X, data = data)
plot(x,asp=1,col="grey")
abline(model)
abline(v=2,col="blue")
model$coef
## (Intercept) X
## 1.930258e-16 2.000000e+00
回帰直線は、\(y=2\cdot x\)
sigma <- matrix(c(1,0.8,0.8,4), ncol=2)
x <- rmvnorm(n=10000, mean=c(0,0), sigma=sigma)
data <- data.frame(X=x[,1],Y=x[,2])
model <- lm(Y ~ X, data = data)
plot(x,asp=1,col="grey")
abline(model)
abline(v=2,col="blue")
model$coef
## (Intercept) X
## 0.003924729 0.788813296
回帰直線は、\(y=0.8\cdot x\)