Keyword: パラメータ推定, PLS, 予測
概要
本サンプルはパラメータ推定に基づくPLS予測を行うFortranによるサンプルプログラムです。 本サンプルは以下に示されるデータについてPLS予測を行います。
※本サンプルはnAG Fortranライブラリに含まれるルーチン g02ldf() のExampleコードです。本サンプル及びルーチンの詳細情報は g02ldf のマニュアルページをご参照ください。
ご相談やお問い合わせはこちらまで
入力データ
(本ルーチンの詳細はg02ldf のマニュアルページを参照)| このデータをダウンロード |
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 のマニュアルページを参照)| この出力例をダウンロード |
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ライブラリ」のルーチンを呼び出します。
サンプルのコンパイル及び実行方法
| このソースコードをダウンロード |
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
