logo
生物科学研究所 井口研究室
Laboratory of Biology, Okaya, Nagano, Japan
Home

ステップワイズ変数選択:増減法と減増法を区別せよ

井口豊(生物科学研究所,長野県岡谷市)
最終更新:2020年1月5日

1. はじめに

回帰分析の変数選択でしばしば使われるのが,ステップワイズ法である。その中で,増減法(forward-backward stepwise)減増法(backward-forward stepwise)を取り上げ, R を利用して,結果の違いを解説した。

増減法は,最も単純なモデル(null model,定数項のみ)に対して,説明変数を 1 個加えることから始めて,その後,何らかの基準(例えば, AIC)によって,説明変数の出し入れを行い,最適な説明変数の組み合わせを探す方法である。

一方,減増法は,最も複雑なモデル(full model,全変数投入)に対して,説明変数を 1 個減じることから始めて,その後は,増減法と同様にして,最適な説明変数の組み合わせを探す方法である。

英語名をそのまま訳すと,それぞれ,前進後退法(forward-backward)と後退前進法(backward-forward)と呼ぶべきかもしれない。

解説者によって,これらを混同している,あるいは,一方しか解説せず,単に,ステップワイズ法としか述べていない場合も多々あるので注意が必要である。例えば,吉川隆範(2018)「多変量解析と統計的因果推論」その p. 8 を見ると,変数増減法 に対して,「変数減少法からスタートする」と述べているが,これは,変数減増法である。

2. R による計算例

二種類のステップワイズ法を R で実行する場合, step 関数を使うが,その direction オプションには,どちらの方法でも, "both" (前進と後退の両方向)を指定する。前述のとおり,初期モデルの設定を変えてやれば,自動的に,増減法と減増法が実行される。 R を使ったネット上や参考書の変数選択の解説では,この点にあまり触れられていない。

ここでは,以下のような仮想的な 5 個の説明変数で, 10 組のデータ(n = 10)を考えて,増減法と減増法による結果の違いを見た。合わせて,パッケージ bestglm の bestglm 関数による総当り法の結果も示した。

#### スクリプト開始

set.seed(1)
n<- 10

y<- rnorm(n) 
x1<- rnorm(n)
x2<- rnorm(n)
x3<- y + rnorm(n)
x4<- y + rnorm(n)
x5<- x1 + x2 + rnorm(n)
x6<- x3 + x4 + rnorm(n)

# 定数項モデル
mod.1 <- lm(y ~ 1)

# 全変数モデル
mod.2 <- lm(y ~ x1 + x2 + x3 + x4 + x5 +x6)

# 変数増減法
step(mod.1, direction="both",
  scope=list(upper=mod.2, lower=mod.1))

# 変数減増法
step(mod.2, direction="both",
  scope=list(upper=mod.2, lower=mod.1))

# 総当り法
library(bestglm)

Xy<- data.frame(x1, x2, x3, x4, x5, y)
bestglm(Xy, IC="AIC")

### スクリプト終了

結果として,選択された説明変数は,次の表 1 のようになった。

表 1. 回帰分析の三種類の変数選択法による結果
変数選択法 A1
増減法x4
減増法x3, x4, x6
総当り法x4

標本が小さい(n = 10)という理由もあるが,この例では増減法と減増法の結果が異なることがわかる。 論文では,ステップワイズ(stepwise)としか書かないものも多い。しかし,読者の観点からすれば,どちらのステップワイズなのか,それを明記したほうが良い。

特に, R を利用した論文では,全変数からの減増法を単にステップワイズと称しているような場合がある。この場合,今回の結果のように,多めの説明変数が選択されているかもしれないので,読者も注意が必要である。

関連サイト

AIC と BIC,その特徴を比較

Home