回帰モデルの比較
回帰モデルの比較(C. M. Judd, G. H. McClelland and C. S. Ryan (2009). “Data analysis: A model comparison approach, 2nd ed.” Routledge)のためのプログラムを作成した。比較するモデルは
の形式のものである。
プログラムは、実行形式のファイルRegANOVA.exeとソースファイルをまとめたものRegANOVA.zipを用意した。実行形式のファイルRegANOVA.exeは.Net Framework 3.5対応で、クリックしてダウンロード実行できる。ソースファイルRegANOVA.zipは、ダウンロード後、解凍すればVisual C++ 2008で開くことができる。
比較するモデルは階層的関係にあり、
Model C: Compact Model
と、Model Cに独立変数を加えた
Model A: Augmented Model
である。
Model Cのときの誤差の2乗和SSE_Cと、独立変数を増やしたModel Aにおける誤差の2乗和SSE_Aを比較し、SSE_AがSSE_Cと比べてどの程度減少したかを調べる。
2つのモデルに対してデータから
を算出する。
データファイルは、以下のように用意する。
JuddらのExhibit 5.7のデータの場合は、例えば
==========================
Judd et al. "Data analysis", Exhibit 5.7
/
1
Y X
/
35.5 20.4
55.6 28.1
42.5 24.6
26.5 18.4
46.7 27.5
51.8 34.6
51.2 31.6
50.7 24
43.2 22.8
38.3 23.1
43.0 26.3
42.3 20
40.1 27.1
39.4 17.1
39.0 25.5
43.9 27.3
36.6 20.5
30.2 22.5
42.6 24.1
43.8 32.3
45.5 32.7
42.1 23
43.0 31.2
26.3 18.7
42.5 26.2
40.6 23.8
37.0 24.6
41.0 19.3
56.0 30.1
47.8 30.1
35.7 23.6
39.8 28.7
35.3 23.2
37.7 22.6
40.7 24.6
34.3 22.5
50.8 27.2
40.1 24.3
38.8 26.4
32.0 19
37.9 25.7
36.3 22
38.3 23.9
48.4 26.4
46.7 28.8
44.3 31.9
49.7 28.6
34.3 15.3
40.6 23.8
44.1 20.6
/
/
1
0
/
-1
==========================
と用意する(DataINAcs.txt)。最初の/で始まる行に続いて、独立変数の数1を書く。次の行に、従属変数のラベル「Y」と、独立変数のラベル「X」を順番に書く。
次の/で始まる行から
従属変数の値 独立変数の値
の形式でデータを書いていき、最後のデータの次の行は/で始め、データの終わりとする。
次のスラッシュ/で始まる行の次の行に、Model Aで使う独立変数には1、使わない独立変数には0を与える。上のデータの場合は、独立変数がXの1つだけなので、Xを独立変数とすることを1を書いて示す。
次の行に、Model C用の独立変数の選択を書く。変数Xをモデルに使わないので0を書いている。
幾つかのModel AとModel Cの組み合わせに対して分析を行う場合は、/で始まる行の次の行にModel Aで用いる独立変数と用いない独立変数の指定、その次の行にModel Cで用いる独立変数と用いない独立変数の指定という形式を繰り返す(このウェブサイトの後半の例を参照)。
Model AとModel Cの組み合わせの指定が終了したときは、/で始まる行の次の行に負の整数を書く。
プログラムを実行すると、図1のフォームが表示される。
図1
Goボタンのクリックで、入力ファイル名の設定を求めるダイアログウィンドウが表示される(図2)。
図2
入力データファイル名の設定後、「開く」ボタンをクリックすると、出力ファイルの名前を設定するダイアログウィンドウが表示される(図3)。
図3
適当な名前を設定して「保存」ボタンをクリックすると、計算が始まる。計算が終了すると、計算結果を出力ファイルに保存したことを知らせるメッセージボックスが表示される(図4)。
図4
「OK」ボタンのクリックでプログラムは終了する。プログラムの終了後、出力ファイルをエディタで開くと、上のデータDataINAcs.txtの場合、以下のようになっている。
=======================================
Data
file...D:\yasuharu\www\LaCoocan\VCpp\CompRegModels\RegANOVA\RegANOVA\DataINAcs.txt
Number
of independent variables = 1
Lables...
Y
X
Number
of cases = 50
Y
X-1
35.5 20.4
55.6 28.1
42.5 24.6
26.5 18.4
・
・
・
44.3 31.9
49.7 28.6
34.3 15.3
40.6 23.8
44.1 20.6
------------------------------------------------------------------
Augmented
model
1
Compact
model
0
Augmented
model...
X(1)
b
=
15.75278
1.02909
Compact
model...
X(0)
b
=
41.41000
SSR =
964.99018 PRE =
0.46527
SSE_A
= 1109.03482
SSE_C
= 2074.02500
SSE_A
+ SSR = 2074.02500
Source
SS df MS
F
PRE
Reduce,Model A 964.99018 1 964.99018
41.76562
0.46527
Error for Model A 1109.03482 48 23.10489
Total
2074.02500 49
=======================================
独立変数の右に隣接して「X(1)」とか「X(0)」というように()内に書かれている数字は、1のときはその独立変数がモデルに使われたことを、0のときはモデルに使われなかったことを示す。
「b = 」の行には、まず定数パラメータの値、続いてモデルに使われた独立変数の係数の値が順番に出力されている。上の出力の場合、
ということである。
F値は、自由度が(Reduce,Model Aの行のdf, Error for Model Aの行のdf)である。F値の確率は<エフ分布の計算>に用意されているプログラムで求めることができる。
上の例は、単回帰モデルの検定であるが、分散分析の例として、JuddらのExhibit 8.6のデータに対してExhibit 8.7のSet Aのコードを用いた場合を示す。
入力データDataANOVA.txtは下記のように用意した。
==========================================
Judd
et al. "Data analysis",
Exhibit 8.6, Exhibit 8.7 Set A
/
2
Y L1 L2
/
2 -2 0
2 -2 0
2 -2 0
3 -2 0
4 -2 0
4 -2 0
3 -2 0
4 -2 0
4 1 -1
3 1 -1
4 1 -1
5 1 -1
5 1 -1
2 1 -1
4 1 -1
3 1 -1
4 1 1
6 1 1
5 1 1
4 1 1
6 1 1
4 1 1
3 1 1
3 1 1
/
/
1 1
0 0
/
1 1
0 1
/
1 1
1 0
/
-1
==========================================
上の入力データファイルに対する出力ファイルは、以下のようになる。
===========================================
Data
file...D:\yasuharu\www\LaCoocan\VCpp\CompRegModels\RegANOVA\RegANOVA\DataANOVA.txt
Number
of independent variables = 2
Lables...
Y
L1 L2
Number
of cases = 24
Y
X-1
X-2
2
-2
0
2
-2
0
2
-2
0
3
-2
0
4
-2
0
4 -2
0
3
-2
0
4
-2
0
4
1 -1
3
1 -1
4
1 -1
5
1 -1
5
1 -1
2
1 -1
4
1 -1
3
1 -1
4
1
1
6
1
1
5
1
1
4
1
1
6
1
1
4
1
1
3
1
1
3
1
1
------------------------------------------------------------------
Augmented
model
1 1
Compact
model
0 0
Augmented
model...
L1(1)
L2(1)
b
=
3.70833
0.35417
0.31250
Compact
model...
L1(0)
L2(0)
b
=
3.70833
SSR =
7.58333 PRE =
0.24495
SSE_A
= 23.37500
SSE_C
= 30.95833
SSE_A
+ SSR = 30.95833
Source
SS df
MS
F
PRE
Reduce,Model A
7.58333 2
3.79167
3.40642
0.24495
Error for Model A
23.37500 21
1.11310
Total
30.95833 23
------------------------------------------------------------------
Augmented
model
1 1
Compact
model
0 1
Augmented
model...
L1(1)
L2(1)
b
=
3.70833
0.35417
0.31250
Compact
model...
L1(0)
L2(1)
b
=
3.70833 0.31250
SSR =
6.02083 PRE =
0.20482
SSE_A
= 23.37500
SSE_C
= 29.39583
SSE_A
+ SSR = 29.39583
Source
SS df
MS
F
PRE
Reduce,Model A
6.02083 1
6.02083
5.40909 0.20482
Error for Model A
23.37500 21
1.11310
Total
29.39583 22
------------------------------------------------------------------
Augmented
model
1 1
Compact
model
1 0
Augmented
model...
L1(1)
L2(1)
b
=
3.70833
0.35417
0.31250
Compact
model...
L1(1)
L2(0)
b
=
3.70833
0.35417
SSR =
1.56250 PRE =
0.06266
SSE_A
= 23.37500
SSE_C
= 24.93750
SSE_A
+ SSR = 24.93750
Source
SS df
MS
F
PRE
Reduce,Model A
1.56250 1
1.56250
1.40374
0.06266
Error for Model A
23.37500 21
1.11310
Total 24.93750 22
===========================================
出力の見方は、上の単回帰モデルの場合と同様である。それぞれのModel AとModel Cの組み合わせに対してSSE_A、SSE_C、SSR、F値などが出力されている。
上のモデル比較の場合、例えば、独立変数L1の有意性の検定は、独立変数からL1を除いたモデルをModel C(Compact model)とし、それに独立変数L1を加えたものをModel A (Augmented model)として、L1が独立変数として有意な効果をもつものであるかどうかの判断に必要な計算を行い、F値などを算出している。F値の確率は<エフ分布の計算>に用意されているプログラムで求めることができる。