重回帰分析
Visual C++ プログラム
重回帰分析では、p個の変数の組で与えられるデータ、、・・・、、に対して次式
による関係を設定する。は互いに独立で、
である。なお、本ウェブサイトにおける式番号は、拙著「心理学データ分析と測定」におけるものである。
このモデルの下で、以下の式が計算される。
ここで、
である。は予測値の変動量(2乗和)を、はデータの変動量を表し、はデータの変動量に占める予測値の変動量の割合を表す。は多重決定係数(coefficient of multiple determination)と呼ばれている。
の平方根
は、との相関係数に等しく、重相関係数(multiple correlation coefficient)と呼ばれている。
モデル(2.4.1)のもとで、の推定値は次式で表される分布に従う。
したがって、帰無仮説「」の検定は、
の値(統計量)が有意水準に対する棄却域
に入っているかどうかを調べることによって行うことができる。は、自由度のt分布に従う確率変数に対して
を満たす値である。
の信頼区間は、次式で与えられる。
上の重回帰分析を行うプログラムMultipleRegression.exeを作成した。ファイル名MultipleRegression.exeをクリックして、ダウンロード実行することができる。実行時に「xxxxxx.dllがインストールされていません」というようなエラーメッセージが表示されるときは、Visual Studio Express 2013 for Windows Desktopを
http://www.visualstudio.com/downloads/download-visual-studio-vs
からダウンロードインストールすれば、必要なファイルがインストールされてプログラムMultipleRegression.exeが実行できるようになる。
ソースコードファイルなどは圧縮ファイルMultipleRegression.zipにまとめたので、圧縮ファイル名MultipleRegression.zipをクリックしてダウンロード・解凍すれば、Visual Studio 2013で開くことができる。
プログラムを実行すると、図1のフォームが表示される。
図1
「GO」ボタンのクリックで、入力データファイル名の設定を求めるダイアログウィンドウが表示される(図2)。
図2
入力データファイルは、表2.1.1(表番号は、拙著「心理学データ分析と測定」におけるものである)のデータの場合
表2.1.1 (物理、数学、身長)の50人分のデータ |
(53, 73, 167) (65, 53, 152) (54, 50, 145) (59, 58, 153) (58, 49, 176) (51, 52, 148) (52, 49, 159) (63, 69, 153) (64, 63, 158) (75, 83, 161) (66, 58, 171) (59, 57, 154) (75, 90, 172) (65, 76, 167) (70, 61, 160) (62, 60, 152) (58, 44, 166) (79, 98, 160) (65, 65, 161) (63, 54, 161) (60, 47, 173) (64, 67, 165) (67, 71, 168) (52, 53, 165) (60, 70, 162) (63, 70, 171) (69, 72, 173) (57, 58, 159) (58, 65, 165) (51, 51, 157) (60, 63, 163) (50, 42, 151) (52, 43, 177) (67, 69, 149) (59, 67, 167) (44, 35, 168) (79, 85, 157) (54, 66, 180) (75, 82, 150) (60, 74, 156) (62, 63, 165) (54, 48, 164) (69, 73, 166) (74, 87, 163) (72, 81, 160) (56, 66, 165) (70, 77, 174) (64, 60, 166) (71, 72, 145) (70, 69, 151) |
以下のように用意する(DataTable211.txt)。
/
3
Physics Const Math Height
53 1 73 167
65 1 53 152
54 1 50 145
59 1 58 153
58 1 49 176
51 1 52 148
・
・
・
70 1 77 174
64 1 60 166
71 1 72 145
70 1 69 151
/
/
0
/
1
1
/
1
2
/
-1
まず、最初のスラッシュ / で始まる行の次の行に、定数1を含めた独立変数の個数を書く。上の例では、「Const」、「Math」、「Height」の3個である。
続けて次の行に、従属変数と独立変数のラベルを並べて書く。
その次の行から、1行に1組ずつのデータを書いていく。
最後のデータの次の行は、スラッシュ / で始まる行を置いて、データの終わりを示す。
その後は、フルモデルとの階層的比較を行うものである。
スラッシュ / で始まる行の次の行に、制約モデルの独立変数の数(定数を除く)を書く。
次の行に、何番目の独立変数が使われるのかを、1行にまとめて並べて書く。
スラッシュで始まる行の次の行に負の数が書かれておれば、そこで入力ファイルからの読み込みが終了となり、プログラムの実行終了となる。
図2の入力ファイル名の設定ダイアログウィンドウにおいて、ファイル名を設定して「開く」ボタンをクリックすると、次に計算結果の出力用ファイル名の設定を求めるダイアログウィンドウが表示される(図3)。
図3
テキストファイル用の適当な名前を設定して「保存」ボタンをクリックすると、計算が始まる。計算が終了すると、計算結果を出力したファイルが保存されたことを示すメッセージボックスが表示される(図4)。
図4
「OK」ボタンのクリックでプログラムの実行終了となる。実行終了後、出力ファイルを開くと、上の入力データの場合、以下の内容となっている。
Input File = D:\yasuharu\www\LaCoocan\booksetc\pm2010\mregression\MultipleRegression\MultipleRegression\DataTable211.txt
Y -> Physics
X[0] -> Const
X[1] -> Math
X[2] -> Height
n = 50
Data...
Y X[0] X[1] X[2]
b[0] = 43.06346
b[1] = 0.49441
b[2] = -0.07666
R2 = 0.68029
r = 0.82480
t[0] = 3.26206 df = 47 p = 0.00206
t[1] = 9.94997 df = 47 p = 0.00000
t[2] = -0.97043 df = 47 p = 0.33680
95% 信頼区間
b[0] -> (16.50587, 69.62105)
b[1] -> (0.39445, 0.59437)
b[2] -> (-0.23557, 0.08226)
Vars -> <0>
R2 = 0.00000
r = 0.00000
F = 50.00429 df1 = 2 df2 = 47 p = 0.00000
b(0) = 62.38000
Vars - > 1
R2 = 0.67388
r = 0.82090
F = 0.94174 df1 = 1 df2 = 47 p = 0.33680
b(0) = 30.64834
b(1) = 0.49457
Vars - > 2
R2 = 0.00685
r = 0.08275
F = 99.00183 df1 = 1 df2 = 47 p = 0.00000
b(0) = 75.20585
b(2) = -0.07926
上の出力において、R2はを表す。出力の意味は、拙著の「2.1 分析例1」における説明を参照して欲しい。
次に、拙著の表2.2.1のデータの場合について説明する。
表2.2.1 2要因データ |
|||
|
|
A |
|
|
|
A1 |
A2 |
B |
B1 |
54 54 37 48 46 58 47 63 43 49 |
59 56 60 56 68 63 57 54 55 56 |
B2 |
60 57 63 56 59 61 59 63 68 60 |
64 59 66 67 59 57 60 50 70 66 |
この場合のデータは、
とおき、表2.2.1のデータをで表して、次の重回帰モデルを設定する。
このとき、入力データファイル(DataTable221.txt)は
/
4
data const A B AB
54 1 0 0 0
54 1 0 0 0
37 1 0 0 0
48 1 0 0 0
46 1 0 0 0
58 1 0 0 0
47 1 0 0 0
63 1 0 0 0
43 1 0 0 0
49 1 0 0 0
59 1 1 0 0
56 1 1 0 0
60 1 1 0 0
56 1 1 0 0
68 1 1 0 0
63 1 1 0 0
57 1 1 0 0
54 1 1 0 0
55 1 1 0 0
56 1 1 0 0
60 1 0 1 0
57 1 0 1 0
63 1 0 1 0
56 1 0 1 0
59 1 0 1 0
61 1 0 1 0
59 1 0 1 0
63 1 0 1 0
68 1 0 1 0
60 1 0 1 0
64 1 1 1 1
59 1 1 1 1
66 1 1 1 1
67 1 1 1 1
59 1 1 1 1
57 1 1 1 1
60 1 1 1 1
50 1 1 1 1
70 1 1 1 1
66 1 1 1 1
/
/
0
/
2
2 3
/
2
1 3
/
2
1 2
/
-1
と用意する。この入力データに対して、出力ファイルは以下のようになる。
Input File = D:\yasuharu\www\LaCoocan\booksetc\pm2010\mregression\MultipleRegression\MultipleRegression\DataTable221.txt
Y -> data
X[0] -> const
X[1] -> A
X[2] -> B
X[3] -> AB
n = 40
Data...
Y X[0] X[1] X[2] X[3]
b[0] = 49.90000
b[1] = 8.50000
b[2] = 10.70000
b[3] = -7.30000
R2 = 0.44005
r = 0.66336
t[0] = 28.52982 df = 36 p = 0.00000
t[1] = 3.43639 df = 36 p = 0.00150
t[2] = 4.32581 df = 36 p = 0.00012
t[3] = -2.08685 df = 36 p = 0.04404
95% 信頼区間
b[0] -> (46.35277, 53.44723)
b[1] -> (3.48346, 13.51654)
b[2] -> (5.68346, 15.71654)
b[3] -> (-14.39446, -0.20554)
Vars -> <0>
R2 = 0.00000
r = 0.00000
F = 9.43040 df1 = 3 df2 = 36 p = 0.00010
b(0) = 57.67500
Vars - > 2 3
R2 = 0.25637
r = 0.50633
F = 11.80877 df1 = 1 df2 = 36 p = 0.00150
b(0) = 54.15000
b(2) = 6.45000
b(3) = 1.20000
Vars - > 1 3
R2 = 0.14899
r = 0.38599
F = 18.71261 df1 = 1 df2 = 36 p = 0.00012
b(0) = 55.25000
b(1) = 3.15000
b(3) = 3.40000
Vars - > 1 2
R2 = 0.37231
r = 0.61017
F = 4.35494 df1 = 1 df2 = 36 p = 0.04404
b(0) = 51.72500
b(1) = 4.85000
b(2) = 7.05000
上の出力結果の見方は、拙著の「2.2 分析例2」における説明を参考にしてほしい。