重回帰分析で簡単に変数選択する方法は?bestglm

重回帰分析で変数選択は苦労するもの。

統計ソフトRで重回帰分析をする場合に、
いいプログラムを見つけた。

その名もbestglm。
ま、そのまんまだね。

AIC, BIC(デフォルト), BICqなどの
Information Criterionを使って
ベストの変数の組み合わせを見つけてくれるすぐれもの。

bestglmのヘルプにあるznuclearデータで試してみよう。

事前にインストールしておいたあと
bestglmを呼び出す。

library(bestglm) 

データフレームの構造をみるなら、

str(znuclear)

ヘルプを見てみると、原発のデータだね。
Data on 32 nuclear power plants.
The response variable is cost and there are ten covariates.

help(znuclear) 

bestglmの場合、data.frame内で、
カラム順に指定がある。

まず独立変数を並べて、
一番最後のカラムに従属変数を置く。
変則的だ。

このdata.frameではcostが従属変数だ。

out <- bestglm(znuclear) 

結果を見ると、
BICで検討したBest Modelが表示される。

out 

BIC
BICq equivalent for q in (0.349204366418933, 0.716418902103362)
Best Model:
               Estimate Std. Error   t value     Pr(>|t|)
(Intercept) -38.7480703 7.91826983 -4.893502 4.910313e-05
date          0.5620284 0.11445901  4.910303 4.701224e-05
capacity      0.4759804 0.07818015  6.088252 2.310934e-06
NE            0.6588957 0.19616044  3.358963 2.510375e-03
CT            0.3714664 0.15987847  2.323430 2.858187e-02
N            -0.2277672 0.10786682 -2.111560 4.489115e-02
PT           -0.5982476 0.30044058 -1.991235 5.748951e-02


summary(out) 

で、Best modelのモデルの有意性が確認できる。

out$Subsets 

で、検討したモデル一覧が表示される。
*がBest modelだ。

out$BestModels 

で、Bestから5番目までが表示される。

out$BestModel

で、Best modelのcoefficientsだけが表示される。

Best modelのresidualを用いてQQ plotを描くことができる。

qqnorm(resid(out$BestModel), ylab="residuals, best model") 



参考文献:
bestglm: Best Subset GLM

このブログの人気の投稿

SPSSでCox回帰をするときのソフトウェア操作手順

「目的変数が正規分布していないのであれば重回帰分析は不適切」への対処法

SPSSで比率の区間推定はできますか?