Keyword: ピアソン, 積率相関係数, 分散共分散行列, 計算
概要
本サンプルはピアソンの積率相関係数と分散共分散行列の計算を行うFortranによるサンプルプログラムです。 本サンプルは以下に示される5種類の観測値(100m走、400m走、走り幅跳び、走り高跳び、砲丸投げ)について平均、標準偏差、ピアソンの積率相関の行列の計算を行い出力します。
※本サンプルはnAG Fortranライブラリに含まれるルーチン g02bxf() のExampleコードです。本サンプル及びルーチンの詳細情報は g02bxf のマニュアルページをご参照ください。
ご相談やお問い合わせはこちらまで
入力データ
(本ルーチンの詳細はg02bxf のマニュアルページを参照)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
このデータをダウンロード |
G02BXF Example Program Data 'u' 20 5 11.25 48.9 7.43 2.270 15.48 10.87 47.7 7.45 1.971 14.97 11.18 48.2 7.44 1.979 14.20 10.62 49.0 7.38 2.026 15.02 11.02 47.4 7.43 1.974 12.92 10.83 48.3 7.72 2.124 13.58 11.18 49.3 7.05 2.064 14.12 11.05 48.2 6.95 2.001 15.34 11.15 49.1 7.12 2.035 14.52 11.23 48.6 7.28 1.970 15.25 10.94 49.9 7.45 1.974 15.34 11.18 49.0 7.34 1.942 14.48 11.02 48.2 7.29 2.063 12.92 10.99 47.8 7.37 1.973 13.61 11.03 48.9 7.45 1.974 14.20 11.09 48.8 7.08 2.039 14.51 11.46 51.2 6.75 2.008 16.07 11.57 49.8 7.00 1.944 16.60 11.07 47.9 7.04 1.947 13.41 10.89 49.6 7.07 1.798 15.84
- 1行目はタイトル行で読み飛ばされます。
- 2行目に重みを使用するかどうか(weight='u')、標本の観測値の数(n=20)、変数の数(m=5)を指定しています。"u"は重みを使用しないことを意味します。
- 3~22行目に観測値(x)を指定しています。
出力結果
(本ルーチンの詳細はg02bxf のマニュアルページを参照)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
この出力例をダウンロード |
G02BXF Example Program Results Means 11.0810 48.7900 7.2545 2.0038 14.6190 Standard deviations 0.2132 0.9002 0.2349 0.0902 1.0249 Correlation matrix 1 2 3 4 5 1 1.0000 0.4416 -0.5427 0.0696 0.3912 2 1.0000 -0.5058 -0.0678 0.7057 3 1.0000 0.2768 -0.4352 4 1.0000 -0.1494 5 1.0000
- 5行目に標本平均が出力されています。
- 9行目に標準偏差が出力されています。
- 11~17行目に相関行列が出力されています。
ソースコード
(本ルーチンの詳細はg02bxf のマニュアルページを参照)
※本サンプルソースコードは科学技術・統計計算ライブラリである「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
このソースコードをダウンロード |
PROGRAM g02bxfe ! G02BXF Example Program Text ! Mark 23 Release. nAG Copyright 2011. ! .. Use Statements .. USE nag_library, ONLY : g02bxf, nag_wp, x04caf ! .. Implicit None Statement .. IMPLICIT NONE ! .. Parameters .. INTEGER, PARAMETER :: nin = 5, nout = 6 ! .. Local Scalars .. INTEGER :: i, ifail, ldv, ldx, lwt, m, n LOGICAL :: zero_var CHARACTER (1) :: weight ! .. Local Arrays .. REAL (KIND=nag_wp), ALLOCATABLE :: r(:,:), std(:), v(:,:), wt(:), & x(:,:), xbar(:) ! .. Executable Statements .. WRITE (nout,*) 'G02BXF Example Program Results' WRITE (nout,*) ! Skip heading in data file READ (nin,*) ! Read in problem size READ (nin,*) weight, n, m IF (weight=='W' .OR. weight=='w') THEN lwt = n ELSE lwt = 0 END IF ldx = n ldv = m ALLOCATE (x(ldx,m),wt(lwt),xbar(m),std(m),v(ldv,m),r(ldv,m)) ! Read in data IF (lwt>0) THEN READ (nin,*) (x(i,1:m),wt(i),i=1,n) ELSE READ (nin,*) (x(i,1:m),i=1,n) END IF ! Calculate summary statistics ifail = -1 CALL g02bxf(weight,n,m,x,ldx,wt,xbar,std,v,ldv,r,ifail) IF (ifail/=0) THEN IF (ifail==5) THEN zero_var = .TRUE. ELSE GO TO 20 END IF ELSE zero_var = .FALSE. END IF ! Display results WRITE (nout,*) ' Means' WRITE (nout,*) WRITE (nout,99999) (xbar(i),i=1,m) WRITE (nout,*) WRITE (nout,*) ' Standard deviations' WRITE (nout,*) WRITE (nout,99999) (std(i),i=1,m) WRITE (nout,*) FLUSH (nout) ifail = 0 CALL x04caf('Upper','Non-unit',m,m,r,ldv,' Correlation matrix', & ifail) IF (zero_var) THEN WRITE (nout,*) ' NOTE: some variances are zero' END IF 20 CONTINUE 99999 FORMAT (1X,10F13.4) END PROGRAM g02bxfe