社会調査情報処理実習A 2組

2017年度 後期 木04 15:15-16:45 瀬田2-119

重回帰分析における変数選択

被験者諸属性と試験結果(架空データ)を用いる。

ある集団から無作為に選んだ326人に学力テストを行い、その点数を記録し、さらに受験者のさまざまな属性と合わせて結果を分析する。得点と身長・年齢・性別の関係について回帰分析を行う。ただし不要な変数は除去し、最適モデルを選択したい。

モデルに投入可能な説明変数の候補が複数ある場合、説明変数の取捨選択を行う。

手作業―変数減少法

Excelなどモデル最適化機能を持たないソフトウェアで自分で変数選択・モデル選択を行う際には変数減少法がもっとも簡便な方法である。

最初に候補変数をすべて投入したモデルを作り、そこから不要な変数を減らしていく。

  1. 各説明変数からF値(t値の2乗)を計算し、2未満のものの中からもっとも小さな変数を除去して新たに回帰分析を行う。
  2. 前モデルの「自由度調整済み決定係数」と新しいモデルの「自由度調整済み決定係数」を比較し、数値が大きい方を採択する。
  3. 前モデルの「自由度調整済み決定係数」 > 新モデルの「自由度調整済み決定係数」となるまで繰り返す。

ソフトウェアの利用

RやSPSSなどでは変数選択を自動的に行う機能を持っている。その際には先の減少法、変数を増やしていく増加法、双方向に調整していくステップワイズ法(増減法)の選択が出来るものもある。

Rではすべての方法が選択可能である。さらにRではモデル評価基準に「自由度調整済み決定係数」 よりも洗練されている(とされている)AIC(赤池情報量規準)を用いている。

AICは値が小さい方が良いモデルであると判断する。

data <- read.csv("http://kyoto-edu.sakura.ne.jp/weblesson/statistics/data/exam-result.csv", fileEncoding = "utf-8")
summary(data)
#step関数を用いてモデル選択を行う
summary(step(lm(marks~height+age+gender,data)))

ただしこの標準機能では標準化回帰係数やVIFを出力しないので、今回は自作関数linestを用いる。

data <- read.csv("http://kyoto-edu.sakura.ne.jp/weblesson/statistics/data/exam-result.csv", fileEncoding = "utf-8")
summary(data)
source("http://kyoto-edu.sakura.ne.jp/weblesson/statistics/socialStatisticsBasic.R", encoding="UTF-8")
#ステップワイズ法(増減法)でモデル選択を行う
linest(marks~height+age+gender,data,direction="both")

linest関数(socialStatisticsBasic.Rで読み込まれる自作関数)

linest(fomula,data,direction)

重回帰分析を行う(R標準のlm関数の拡張)。

  • formula=回帰式(目的変数~説明変数1 + 説明変数2)
  • data=データフレーム
  • direction=c("both","backward","forward")…増減法・減少法・増加法を選択

モデル選択

Start:  AIC=691.54
marks ~ height + age + gender

         Df Sum of Sq     RSS     AIC
- height  1       0.7  2654.3  689.63
                 2653.6  691.54
- gender  1     278.7  2932.3  722.10
- age     1    8797.3 11450.9 1166.21

Step:  AIC=689.63
marks ~ age + gender

         Df Sum of Sq   RSS     AIC
                 2654  689.63
- gender  1       278  2932  720.12
- age     1     61389 64043 1725.42

3変数の中で身長heightを除去したモデルがAIC=689.63とAICを最小にする最適モデルであると判断された。

モデル選択後の回帰分析

引き続き採択したモデルで回帰分析が行われる。

$summary
            Model Summary
R               0.9792042
R2              0.9588409
Adjusted R2     0.9585860
SE              2.8666406

$anova
                  SS  df           MS        F  P
Regression 61834.335   2 30917.167458 3762.298  0
Residual    2654.294 323     8.217628       NA NA
Total      64488.629 325   198.426550       NA NA

$coefficient
                    b         SE        beta         t             P          F      VIF
(Intercept) -4.291756 0.66854204          NA -6.419576  4.874832e-10   41.21096       NA
age          6.654832 0.07699541  0.97582758 86.431536 2.389707e-225 7470.41044 1.000319
gendermale -1.847497 0.31758766 -0.06567816 -5.817282  1.439343e-08   33.84077 1.000319
年齢・性別を説明変数とする得点に対する重回帰式
y(得点) = -4.291756 + 6.654832*x1(年齢) + -1.847497*x2(性別.男)
モデル評価
  • 決定係数(寄与率)0.96
  • 調整済み決定係数 0.96
分散分析
  • 分散分析 F(2,323) 3762.298, p < 0.01
回帰係数
  • 年齢の係数が正の値なので年齢が高ければ得点も上がる(年齢1歳に付き得点は6.65点上がる)。
  • 性別.男の係数が負の値なので男性ならば得点は下がる(男性であれば得点は-1.85点下がる)。
標準化回帰係数
  • 年齢の絶対値が0.98で最大であり、性別.男が0.07で最小である。
回帰係数の有意性
  • 年齢 t(323) = 86.43, p < 0.01 1%水準で有意。
  • 性別.男 t(323) = -5.82, p < 0.01 1%水準で有意
VIF
  • VIFはどの回帰変数も10未満。

考察例

「得点」を結果変数、「年齢」「身長」「性別」を説明変数とする重回帰分析を行った。

「性別」は男性を1,女性を0とするダミー変数とした上で説明変数に投入し、ステップワイズ法で最適モデルの選択を行った。AICを元にしたモデル選択より「年齢」「性別」モデルが採択された。

重回帰分析の結果は分散分析よりF(2,323)=3763.30,p<.001で有意であった。

偏回帰係数は「年齢」が6.65、「性別(男性)」が-1.85でいずれも有意である。これより年齢が1歳上がれば6.65点上昇し、また男性より女性の方が1.85点高くなる傾向が見られた。