> 決定係数が例えばそれぞれ40%,50%となったとして,二つの説明変数を含んだ重回帰モデルの決定係数が70%となる,といったことがよくあります。(二つの変数同士は相関がありません。)
> 単回帰分析で40%,50%を説明するならば,重回帰では90%説明する,となってもよさそうと思うのですが,どうしてでしょうか?
> 二つの変数同士の相関は(t値などが低くても)あると考えたほうがいいでしょうか?
二つの独立変数間の相関があるためです。
独立変数間の相関が0の場合には決定係数は単回帰の場合のそれぞれの決定係数の和になります。
では,単回帰の決定係数の和が1より大きくなることがないのかとのご心配もあるでしょうが,そのようなデータは存在しません(というか,少なくとも作成できないようです)。
独立変数間の相関がある場合にはその符号と大きさにより,決定係数は,単回帰の場合の決定係数の和より大きくなったり小さくなったりします。
以下のようなプログラムを書いてシミュレーションしてみるとよくわかります。
gen <- function(a, b, z=0.0)
{
x <- matrix(c(1,a,b,a,1,z,b,z,1),nc=3)
print(x)
d <- as.data.frame(gendat(50, x))
print(summary(lm(V1 ~ V2, d))$r.squared)
print(summary(lm(V1 ~ V3, d))$r.squared)
print(summary(lm(V1 ~ V2+V3, d))$r.squared)
}
gendat <- function(nc, r)
{
nv <- ncol(r)
z <- matrix(rnorm(nv*nc), ncol=nv)
res <- eigen(r2 <- cor(z))
coeff <- solve(r2) %*% (sqrt(matrix(res$values, nv, nv, byrow=TRUE))*res$vectors)
z <- t((t(z)-apply(z, 2, mean))/sqrt(apply(z, 2, var)*(nc-1)/nc)) %*% coeff
z %*% chol(r)
}
> gen(0.5,0.5,-0.1)
[,1] [,2] [,3]
[1,] 1.0 0.5 0.5
[2,] 0.5 1.0 -0.1
[3,] 0.5 -0.1 1.0
[1] 0.25
[1] 0.25
[1] 0.5555556
> gen(0.5,0.5,0.1)
[,1] [,2] [,3]
[1,] 1.0 0.5 0.5
[2,] 0.5 1.0 0.1
[3,] 0.5 0.1 1.0
[1] 0.25
[1] 0.25
[1] 0.4545455
> gen(0.5,0.5,0.0)
[,1] [,2] [,3]
[1,] 1.0 0.5 0.5
[2,] 0.5 1.0 0.0
[3,] 0.5 0.0 1.0
[1] 0.25
[1] 0.25
[1] 0.5