Keyword: 偏相関, 分散共分散行列, 計算
概要
本サンプルは偏相関/分散共分散行列の計算を行うFortranによるサンプルプログラムです。 本サンプルは以下に示される観測値について相関・偏相関行列の計算を行います。
※本サンプルはnAG Fortranライブラリに含まれるルーチン g02byf() のExampleコードです。本サンプル及びルーチンの詳細情報は g02byf のマニュアルページをご参照ください。
ご相談やお問い合わせはこちらまで
入力データ
(本ルーチンの詳細はg02byf のマニュアルページを参照)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
このデータをダウンロード |
G02BYF Example Program Data 'u' 15 3 :: WEIGHT,N,M (G02BXF) 112 0.30 0.09 140 0.49 0.16 143 0.61 0.22 120 0.49 0.14 196 2.64 0.75 294 3.45 0.86 513 4.46 1.34 518 4.46 1.34 430 1.22 0.47 274 1.22 0.47 255 0.32 0.22 236 0.29 0.23 256 0.50 0.26 222 0.32 0.16 213 0.32 0.16 :: End of X (G02BXF) 2 1 :: NY,NX -1 -1 1 :: ISZ
- 1行目はタイトル行で読み飛ばされます。
- 2行目に重みが使用されるかどうか(weight='u')、観測値の数(n=15)と相関行列の変数の数(m=3)を指定しています。"u"は重みが使用されないことを意味します。
- 3~17行目に死亡者数と煙、二酸化硫黄の濃度を表す観測値(x)を指定しています。
- 19行目はY変数の数(ny)とX変数の数(nx)を指定しています。
- 20行目はどの変数がX変数/Y変数に属するか(isz)を指定しています。0未満の値の場合はY変数、0より大きい値の場合はX変数に属することを意味します。
出力結果
(本ルーチンの詳細はg02byf のマニュアルページを参照)1 2 3 4 5 6 7 8 9 10 11 12
この出力例をダウンロード |
G02BYF Example Program Results Correlation matrix 1 2 3 1 1.0000 0.7560 0.8309 2 1.0000 0.9876 3 1.0000 Partial Correlation matrix 1 2 1 1.0000 -0.7381 2 1.0000
- 3~7行目に相関行列が出力されています。
- 9~12行目に偏相関行列が出力されています。
ソースコード
(本ルーチンの詳細はg02byf のマニュアルページを参照)
※本サンプルソースコードは科学技術・統計計算ライブラリである「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
このソースコードをダウンロード |
PROGRAM g02byfe ! G02BYF Example Program Text ! Mark 23 Release. nAG Copyright 2011. ! .. Use Statements .. USE nag_library, ONLY : g02bxf, g02byf, nag_wp, x04caf ! .. Implicit None Statement .. IMPLICIT NONE ! .. Parameters .. INTEGER, PARAMETER :: nin = 5, nout = 6 ! .. Local Scalars .. INTEGER :: i, ifail, ldp, ldr, ldx, lwt, m, n, & nx, ny CHARACTER (1) :: weight ! .. Local Arrays .. REAL (KIND=nag_wp), ALLOCATABLE :: p(:,:), r(:,:), std(:), v(:,:), & wk(:), wt(:), x(:,:), xbar(:) INTEGER, ALLOCATABLE :: isz(:) ! .. Executable Statements .. WRITE (nout,*) 'G02BYF Example Program Results' WRITE (nout,*) FLUSH (nout) ! Skip heading in data file READ (nin,*) ! Read in the problem size READ (nin,*) weight, n, m IF (weight=='W' .OR. weight=='w') THEN lwt = n ELSE lwt = 0 END IF ldp = m ldr = m ldx = n ALLOCATE (p(ldp,m),v(ldr,m),std(m),wk(m*m),wt(lwt),x(ldx,m),xbar(m), & isz(m),r(ldr,m)) ! Read in data READ (nin,*) (x(i,1:m),i=1,n) ! Read in number of variables and variable flags for partial correlation ! coefficients. READ (nin,*) ny, nx READ (nin,*) isz(1:m) ! Calculate correlation matrix ifail = 0 CALL g02bxf(weight,n,m,x,ldx,wt,xbar,std,v,ldr,r,ifail) ! Calculate partial correlation matrix ifail = 0 CALL g02byf(m,ny,nx,isz,r,ldr,p,ldp,wk,ifail) ! Display results ifail = 0 CALL x04caf('Upper','Non-unit',m,m,r,ldr,'Correlation matrix',ifail) WRITE (nout,*) FLUSH (nout) ifail = 0 CALL x04caf('Upper','Unit',ny,ny,p,ldp,'Partial Correlation matrix', & ifail) END PROGRAM g02byfe