ステップワイズ回帰分析

Fortranによるサンプルソースコード : 使用ルーチン名:g02eff

Keyword: ステップワイズ, 変数選択, 線形回帰

概要

本サンプルはステップワイズ回帰分析を行うFortranによるサンプルプログラムです。 本サンプルは以下に示される13個の観測値とそれぞれ4個の説明変数についてステップワイズ変数選択による回帰分析を行い、フィッティングされた回帰モデルの切片の推定値、選択された説明変数の偏回帰係数の推定値と標準誤差、そして残差の平均平方を出力します。

ステップワイズ回帰の統計量の計算のデータ 

※本サンプルはnAG Fortranライブラリに含まれるルーチン g02eff() のExampleコードです。本サンプル及びルーチンの詳細情報は g02eff のマニュアルページをご参照ください。
ご相談やお問い合わせはこちらまで

入力データ

(本ルーチンの詳細はg02eff のマニュアルページを参照)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

このデータをダウンロード
G02EFF Example Program Data
13 4 4.0 2.0 1.0D-6 1        : N,M,FIN,FOUT,TAU,MONLEV
 7.0 26.0  6.0 60.0  78.5
 1.0 29.0 15.0 52.0  74.3
11.0 56.0  8.0 20.0 104.3
11.0 31.0  8.0 47.0  87.6
 7.0 52.0  6.0 33.0  95.9
11.0 55.0  9.0 22.0 109.2
 3.0 71.0 17.0  6.0 102.7
 1.0 31.0 22.0 44.0  72.5
 2.0 54.0 18.0 22.0  93.1
21.0 47.0  4.0 26.0 115.9
 1.0 40.0 23.0 34.0  83.8
11.0 66.0  9.0 12.0 113.3
10.0 68.0  8.0 12.0 109.4    : End of augmented design matrix Z = (X | Y)
1 1 1 1                      : ISX

  • 1行目はタイトル行で読み飛ばされます。
  • 2行目に観測値の数(n=13)、説明変数の数(m=4)、説明変数がモデルに投入される場合超える必要のある分散比の基準値(fin=4.0)、この値を下回る場合に説明変数がモデルから除去される分散比の基準値(fout=2.0)、そして許容誤差(tau=1.0D-6)、モデル選択プロセスの監視のためにサブルーチンがユーザにより提供されているかどうかを示すフラグ(monlev=1)を指定しています。フラグ"1"はサブルーチンがユーザにより提供されていることを意味します。
  • 3から15行目には左から縦4列目までに説明変数を、一番右側の列に観測値(z)を指定しています。
  • 16行目には説明変数がステップワイズ変数選択を実行するのに使用されるかどうか(isx)を指定しています。"1"は使用されることを意味します。

出力結果

(本ルーチンの詳細はg02eff のマニュアルページを参照)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

この出力例をダウンロード
 G02EFF Example Program Results

 Starting Stepwise Selection

 Forward Selection
 Variable    1 Variance ratio =    1.260E+01
 Variable    2 Variance ratio =    2.196E+01
 Variable    3 Variance ratio =    4.403E+00
 Variable    4 Variance ratio =    2.280E+01

 Adding variable    4 to model

 Backward Selection
 Variable    4 Variance ratio =    2.280E+01

 Keeping all current variables

 Forward Selection
 Variable    1 Variance ratio =    1.082E+02
 Variable    2 Variance ratio =    1.725E-01
 Variable    3 Variance ratio =    4.029E+01

 Adding variable    1 to model

 Backward Selection
 Variable    1 Variance ratio =    1.082E+02
 Variable    4 Variance ratio =    1.593E+02

 Keeping all current variables

 Forward Selection
 Variable    2 Variance ratio =    5.026E+00
 Variable    3 Variance ratio =    4.236E+00

 Adding variable    2 to model

 Backward Selection
 Variable    1 Variance ratio =    1.540E+02
 Variable    2 Variance ratio =    5.026E+00
 Variable    4 Variance ratio =    1.863E+00

 Dropping variable    4 from model

 Forward Selection
 Variable    3 Variance ratio =    1.832E+00
 Variable    4 Variance ratio =    1.863E+00

 Finished Stepwise Selection

 Fitted Model Summary
 Term              Estimate   Standard Error
 Intercept:       5.258E+01        2.294E+00
 Variable:   1    1.468E+00        1.213E-01
 Variable:   2    6.623E-01        4.585E-02

 RMS:    5.790E+00

  • 3~48行目にステップワイズ変数選択の各ステップが出力されています。
  • 52行目にフィッティングされた回帰モデルの切片の推定値と標準誤差が出力されています。
  • 53~54行目にはステップワイズ変数選択により選択された説明変数1と説明変数2の偏回帰係数の最小二乗推定値と標準誤差が出力されています。
  • 56行目にフィッティングされた回帰モデルの残差の平均平方が出力されています。

ソースコード

(本ルーチンの詳細はg02eff のマニュアルページを参照)

※本サンプルソースコードは科学技術・統計計算ライブラリである「nAG Fortranライブラリ」のルーチンを呼び出します。
サンプルのコンパイル及び実行方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83

このソースコードをダウンロード
    PROGRAM g02effe

!      G02EFF Example Program Text

!      Mark 23 Release. nAG Copyright 2011.

!      .. Use Statements ..
       USE nag_library, ONLY : g02buf, g02eff, g02efh, nag_wp
!      .. Implicit None Statement ..
       IMPLICIT NONE
!      .. Parameters ..
       INTEGER, PARAMETER              :: nin = 5, nout = 6
!      .. Local Scalars ..
       REAL (KIND=nag_wp)              :: fin, fout, rms, rsq, sw, tau
       INTEGER                         :: df, i, ifail, ldz, liuser, lruser,   &
                                          m, m1, monlev, n
       CHARACTER (1)                   :: mean, weight
!      .. Local Arrays ..
       REAL (KIND=nag_wp), ALLOCATABLE :: b(:), c(:), ruser(:), se(:),         &
                                          wmean(:), z(:,:)
       REAL (KIND=nag_wp)              :: wt(1)
       INTEGER, ALLOCATABLE            :: isx(:), iuser(:)
!      .. Executable Statements ..
       WRITE (nout,*) 'G02EFF Example Program Results'
       WRITE (nout,*)
       FLUSH (nout)

!      Skip heading in data file
       READ (nin,*)

!      Read in the problem size and various control parameters
       READ (nin,*) n, m, fin, fout, tau, monlev

!      Not using the user supplied arrays RUSER and IUSER
       liuser = 0
       lruser = 0

       m1 = m + 1
       ldz = n
       ALLOCATE (wmean(m1),c(m1*(m+2)/2),isx(m),b(m1),se(m1),iuser(liuser), &
          ruser(lruser),z(ldz,m1))

!      Read in augmented design matrix Z = (X | Y)
       READ (nin,*) (z(i,1:m1),i=1,n)

!      Read in variable inclusion flags
       READ (nin,*) isx(1:m)

!      G02EFF always adds the intercept term, so need to calculate correlation
!      matrix with mean included.
       mean = 'M'

!      No weights.
       weight = 'U'

!      Compute upper-triangular correlation matrix of the augmented design
!      matrix.
       ifail = 0
       CALL g02buf(mean,weight,n,m1,z,ldz,wt,sw,wmean,c,ifail)

!      Perform stepwise selection of variables.
       ifail = 0
       CALL g02eff(m,n,wmean,c,sw,isx,fin,fout,tau,b,se,rsq,rms,df,monlev, &
          g02efh,iuser,ruser,ifail)

!      Display results
       WRITE (nout,*)
       WRITE (nout,99999) 'Fitted Model Summary'
       WRITE (nout,99999) 'Term              Estimate   Standard Error'
       WRITE (nout,99998) 'Intercept:', b(1), se(1)
       DO i = 1, m
          IF (isx(i)==1 .OR. isx(i)==2) THEN
             WRITE (nout,99997) 'Variable:', i, b(i+1), se(i+1)
          END IF
       END DO
       WRITE (nout,*)
       WRITE (nout,99996) 'RMS:', rms

99999  FORMAT (1X,A)
99998  FORMAT (1X,A,4X,1P,E12.3,5X,E12.3)
99997  FORMAT (1X,A,1X,I3,1X,1P,E12.3,5X,E12.3)
99996  FORMAT (1X,A,1X,1P,E12.3)
    END PROGRAM g02effe


関連情報
© 日本ニューメリカルアルゴリズムズグループ株式会社 2025
Privacy Policy  /  Trademarks