Rでステップワイズ法による重回帰分析の自作関数例

更新日

今回はステップワイズの変数選択法による、線形重回帰分析の自作関数を作ったのでメモとして残しておきます。ご自由にお使いください。ステップワイズ法による変数選択とは、AICを最小にするような重回帰分析の説明変数を選択するというものです。

Rによる通常の回帰分析は、R言語で線形モデルによる回帰分析をお読みください。
また、線形モデルによる回帰分析の自作関数は、Rで線形モデルによる回帰分析の自作関数例に掲載しています。

※R言語入門のトップページはこちら

ステップワイズ法による回帰分析の自作関数

引数のdatには解析用データ、fnには出力ファイル名を入れます。また、データフレームである、datの1列目には目的変数、それ以外の列に説明変数を格納するようにして下さい。

解析用したいデータフレームを引数に関数を適用させると、ステップワイズの手法によって、自動で変数選択を行い、重回帰分析を行ってくれます。

step_mra_fun <- function(dat,fn){
colnames(dat)[1] <- “y”
ans <- lm(dat$y~., data=dat)
ans <- step(ans)
s.ans <- summary(ans)
coe <- s.ans$coefficient
N <- nrow(dat)
aic <- AIC(ans)
conf <- confint(ans,levels=(0.95))
R2 <- summary(ans)$r.squared
result <- cbind(coe,conf,R2,aic,N)
colnames(result)[5:6] <- c(“RR95%CI.low”,”RR95%CI.up”)
e2 <- deviance(ans)
MSE <- e2 / N

if(nrow(result)>=2){
result[2:nrow(result),7:9] <- “”
}

write.table(cbind(“E2″,e2,”MSE”,MSE),fn,append=T,quote=F,sep=”,”,row.names=F,col.names=F)
write.table(matrix(c(“”,colnames(result)),nrow=1),fn,append=T,quote=F,sep=”,”,row.names=F,col.names=F)
write.table(result,fn,append=T,quote=F,sep=”,”,row.names=T,col.names=F)
write.table(“”,fn,append=T,quote=F,sep=”,”,row.names=F,col.names=F)
}

関数の使用例

以下に関数の使用例を示します。事前に関数の読み込みと、データを変数dfに入れる作業を行っておきます。

dat = df[,c(3,12:17)] #3行目が目的変数。12~17行目が説明変数

colnames(dat)[1] = “y” #1行目の列名をyに。

fn = “ステップワイズsample.csv” #出力ファイル名

step_mra_fun(dat,fn) #ステップワイズ関数の実行

これによって、「ステップワイズsample.csv」という名前のファイルに、ステップワイズ法によって変数選択を行なった後の、重回帰分析の結果が出力されます。

出力内容

関数を使うとこのような結果が出力されます。(詳細は極秘データのためここにはお載せ出来ませんが)

ステップワイズによって変数選択されたものについての重回帰分析結果が出力されます。

最後に出力項目の一つ一つについて、意味を見ていきましょう。

項目

意味

RSS

残差平方和

RSS/N

残差平方和を解析用データの行数で割ったもの

Estimate

回帰係数

Std.Error

標準誤差

t value

t値

RR95%~

95%信頼区間の上限と下限

R2

決定係数

aic

AIC

N

解析データの大きさ。つまりデータフレームの行数

 

※R言語入門のトップページはこちら

カテゴリ: R言語入門

データサイエンティストを募集しています AVILEN採用サイトへ

関連サービス

講座一覧ページ

記事一覧はこちら

無料で統計学を学ぶ

AVILEN 採用情報

データサイエンティストを募集しています AVILEN採用サイトへ