SSブログ

多重共線性の話 〜その2 一般的な問題点 [データサイエンス、統計モデル]

回帰係数は、シミュレーション結果と異なるが、予測結果は問題ない。
多重共線性が起こっているx1, x2において、係数の標準誤差が大きくなっている(t値が小さくなる)ことが確認できる。

x1とx2間に強い線形の関係が見られる。



x1, x2, x3のいくつかの変数を使ったモデルを作成し、R2やAICの比較を行った。


> vif(res_123)
      x1       x2       x3 
6.453802 6.462609 1.003874 
> vif(res_12)
      x1       x2 
6.450832 6.450832 
> vif(res_13)
      x1       x3 
1.002045 1.002045 
> vif(res_23)
      x2       x3 
1.003412 1.003412 


実験2: 多重共線性のあるデータを300レコード発生させ、回帰分析を行う	
# 多重共線性が起こっているデータ
set.seed(123)
x1 <- rnorm(N)
x2 <- x1 + 0.4*rnorm(N)
x3 <- rnorm(N)
e <- rnorm(N)

y  <- 1000 + 100*x1 + 80*x2 + 60*x3 + 100*e
df.2 <- data.frame(x1, x2, x3, e, y)

# lm model
model_lm2 <- lm(y~x1+x2+x3, data=df.2)
summary(model_lm2)

## 予測値と実測値プロット
plot(df.2$y, predict(model_lm2), xlab="Actual", ylab="Predict", xlim=c(200,1800), ylim=c(200,1800))
abline(0, 1, col="red")

## 残差プロット
plot(predict(model_lm2), resid(model_lm2), xlab="Predict", ylab="Residual")
abline(0, 0, col="red")

> summary(model_lm2)

Call:
lm(formula = y ~ x1 + x2 + x3, data = df.2)

Residuals:
     Min       1Q   Median       3Q      Max 
-256.535  -71.289    0.933   56.108  311.957 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 1002.441      5.874 170.650  < 2e-16 ***
x1            73.000     15.791   4.623 5.66e-06 ***
x2           109.728     14.904   7.363 1.80e-12 ***
x3            64.558      5.700  11.327  < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 101.7 on 296 degrees of freedom
Multiple R-squared:  0.7688,	Adjusted R-squared:  0.7665 
F-statistic: 328.1 on 3 and 296 DF,  p-value: < 2.2e-16


nice!(0)  コメント(0) 
共通テーマ:学問

nice! 0

コメント 0