パラメータ推定に基づくPLS予測

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

Keyword: パラメータ推定, PLS, 予測

概要

本サンプルはパラメータ推定に基づくPLS予測を行うFortranによるサンプルプログラムです。 本サンプルは以下に示されるデータについてPLS予測を行います。

Ridge回帰のデータ 

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

入力データ

(本ルーチンの詳細はg02ldf のマニュアルページを参照)
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

このデータをダウンロード
G02LDF Example Program Data
 1   -1   1   15   15                            : MY, ORIG, SCALE, N, MZ
 -2.6931 -2.5271 -1.2871  3.0777  0.3891 -0.0701
  1.9607 -1.6324  0.5746  1.9607 -1.6324  0.5740
  2.8369  1.4092 -3.1398
 -2.6931 -2.5271 -1.2871  3.0777  0.3891 -0.0701
  1.9607 -1.6324  0.5746  0.0744 -1.7333  0.0902
  2.8369  1.4092 -3.1398
 -2.6931 -2.5271 -1.2871  3.0777  0.3891 -0.0701
  0.0744 -1.7333  0.0902  1.9607 -1.6324  0.5746
  2.8369  1.4092 -3.1398
 -2.6931 -2.5271 -1.2871  3.0777  0.3891 -0.0701
  0.0744 -1.7333  0.0902  0.0744 -1.7333  0.0902
  2.8369  1.4092 -3.1398
 -2.6931 -2.5271 -1.2871  2.8369  1.4092 -3.1398
  0.0744 -1.7333  0.0902  0.0744 -1.7333  0.0902
  2.8369  1.4092 -3.1398
 -2.6931 -2.5271 -1.2871  3.0777  0.3891 -0.0701
 -4.7548  3.6521  0.8524  0.0744 -1.7333  0.0902
  2.8369  1.4092 -3.1398
 -2.6931 -2.5271 -1.2871  3.0777  0.3891 -0.0701
  0.0744 -1.7333  0.0902  0.0744 -1.7333  0.0902
 -1.2201  0.8829  2.2253
 -2.6931 -2.5271 -1.2871  3.0777  0.3891 -0.0701
  2.4064  1.7438  1.1057  0.0744 -1.7333  0.0902
  2.8369  1.4092 -3.1398 
 -2.6931 -2.5271 -1.2871  0.0744 -1.7333  0.0902
  0.0744 -1.7333  0.0902  0.0744 -1.7333  0.0902
  2.8369  1.4092 -3.1398
  2.2261 -5.3648  0.3049  3.0777  0.3891 -0.0701
  0.0744 -1.7333  0.0902  0.0744 -1.7333  0.0902
  2.8369  1.4092 -3.1398
 -4.1921 -1.0285 -0.9801  3.0777  0.3891 -0.0701
  0.0744 -1.7333  0.0902  0.0744 -1.7333  0.0902
  2.8369  1.4092 -3.1398
 -4.9217  1.2977  0.4473  3.0777  0.3891 -0.0701
  0.0744 -1.7333  0.0902  0.0744 -1.7333  0.0902
  2.8369  1.4092 -3.1398
 -2.6931 -2.5271 -1.2871  3.0777  0.3891 -0.0701
  2.2261 -5.3648  0.3049  2.2261 -5.3648  0.3049
  2.8369  1.4092 -3.1398
 -2.6931 -2.5271 -1.2871  3.0777  0.3891 -0.0701
 -4.9217  1.2977  0.4473  0.0744 -1.7333  0.0902
  2.8369  1.4092 -3.1398
 -2.6931 -2.5271 -1.2871  3.0777  0.3891 -0.0701
 -4.1921 -1.0285 -0.9801  0.0744 -1.7333  0.0902
  2.8369  1.4092 -3.1398                         : End of Z
  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1    : Elements of ISZ
 -0.1383  0.0572 -0.1906  0.1238  0.0591  0.0936
 -0.2842  0.4713  0.2661 -0.0914  0.1226 -0.0488
  0.0332  0.0332 -0.0332                         : End of B
 -2.6137 -2.3614 -1.0449  2.8614  0.3156 -0.2641
 -0.3146 -1.1221  0.2401  0.4694 -1.9619  0.1691
  2.5664  1.3741 -2.7821                         : End of XBAR
  0.4520                                         : YBAR
  1.4956  1.3233  0.5829  0.7735  0.6247  0.7966
  2.4113  2.0421  0.4678  0.8197  0.9420  0.1735
  1.0475  0.1359  1.3853                         : End of XSTD
  0.9062                                         : YSTD

  • 1行目はタイトル行で読み飛ばされます。
  • 2行目は応答変数の数(my=1)、どのようにパラメータ推定が行われるか(orig=-1:中心的スケーリング可能(centred and possibly scaled)データに対しパラメータ推定が行われる)、どのように予測変数がスケーリングされるか(scale=1:変数の標準分散によってスケーリングされる)、テストデータの観測値の数(n=15)、テストデータで有効な予測変数の数(mz=15)を指定しています。
  • 3~47行目は予測変数の観測値(z)を指定しています。
  • 48行目はどの予測変数がモデルに含まれるか(isz)を指定しています。
  • 49~51行目はパラメータ推定値(b)を指定しています。
  • 52~54行目は予測変数の平均値(xbar)を指定しています。
  • 55行目は応答変数の平均値(ybar)を指定しています。
  • 56~58行目は予測変数のスケーリング(xstd)を指定しています。
  • 59行目は応答変数のスケーリング(ystd)を指定しています。

出力結果

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

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

 YHAT
              1
  1      0.2132
  2      0.5152
  3      0.1437
  4      0.4459
  5      0.1716
  6      2.4809
  7      0.0964
  8      1.4475
  9     -0.1546
 10     -0.5492
 11      0.5393
 12      0.2686
 13     -1.1332
 14      1.7975
 15      0.4973

  • 4~19行目に応答変数の予測値が出力されています。

ソースコード

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

※本サンプルソースコードは科学技術・統計計算ライブラリである「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

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

!      G02LDF Example Program Text

!      Mark 23 Release. nAG Copyright 2011.

!      .. Use Statements ..
       USE nag_library, ONLY : g02ldf, nag_wp, x04caf
!      .. Implicit None Statement ..
       IMPLICIT NONE
!      .. Parameters ..
       INTEGER, PARAMETER              :: nin = 5, nout = 6
!      .. Local Scalars ..
       INTEGER                         :: i, ifail, ip, iscale, ldb, ldyhat,   &
                                          ldz, my, mz, n, orig
!      .. Local Arrays ..
       REAL (KIND=nag_wp), ALLOCATABLE :: b(:,:), xbar(:), xstd(:), ybar(:),   &
                                          yhat(:,:), ystd(:), z(:,:)
       INTEGER, ALLOCATABLE            :: isz(:)
!      .. Intrinsic Functions ..
       INTRINSIC                          sum
!      .. Executable Statements ..
       WRITE (nout,*) 'G02LDF Example Program Results'
       WRITE (nout,*)
       FLUSH (nout)

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

!      Read in problem size
       READ (nin,*) my, orig, iscale, n, mz

       ldyhat = n
       ldz = n
       ALLOCATE (ybar(my),ystd(my),isz(mz),z(ldz,mz),yhat(ldyhat,my))

!      Read prediction x-data
       READ (nin,*) (z(i,1:mz),i=1,n)

!      Read in elements of ISZ
       READ (nin,*) isz(1:mz)

!      Calculate IP
       ip = sum(isz(1:mz))

       ldb = ip
       IF (orig==1) THEN
          ldb = ldb + 1
       END IF
       ALLOCATE (xbar(ip),xstd(ip),b(ldb,my))

!      Read parameter estimates
       READ (nin,*) (b(i,1:my),i=1,ldb)

!      Read means
       IF (orig==-1) THEN
          READ (nin,*) xbar(1:ip)
          READ (nin,*) ybar(1:my)

          IF (iscale/=-1) THEN
!            Read scalings
             READ (nin,*) xstd(1:ip)
             READ (nin,*) ystd(1:my)
          END IF
       END IF

!      Calculate predictions
       ifail = 0
       CALL g02ldf(ip,my,orig,xbar,ybar,iscale,xstd,ystd,b,ldb,n,mz,isz,z,ldz, &
          yhat,ldyhat,ifail)

!      Display results
       ifail = 0
       CALL x04caf('General',' ',n,my,yhat,ldyhat,'YHAT',ifail)

    END PROGRAM g02ldfe


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