Keyword: パラメータ推定, PLS, 予測
概要
本サンプルはパラメータ推定に基づくPLS予測を行うFortranによるサンプルプログラムです。 本サンプルは以下に示されるデータについてPLS予測を行います。
※本サンプルは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