Up

回帰モデルの比較

 

回帰モデルの比較(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_ASSE_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 AModel Cの組み合わせに対して分析を行う場合は、/で始まる行の次の行にModel Aで用いる独立変数と用いない独立変数の指定、その次の行にModel Cで用いる独立変数と用いない独立変数の指定という形式を繰り返す(このウェブサイトの後半の例を参照)。

Model AModel 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.7Set 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 AModel Cの組み合わせに対してSSE_ASSE_CSSRF値などが出力されている。

上のモデル比較の場合、例えば、独立変数L1の有意性の検定は、独立変数からL1を除いたモデルをModel CCompact model)とし、それに独立変数L1を加えたものをModel A (Augmented model)として、L1が独立変数として有意な効果をもつものであるかどうかの判断に必要な計算を行い、F値などを算出している。F値の確率は<エフ分布の計算>に用意されているプログラムで求めることができる。

 

 

Up