ピアソンの積率相関係数と分散共分散行列の計算

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

ホーム > 製品 > nAG数値計算ライブラリ > nAG Fortranライブラリ > サンプルソースコード集 > ピアソンの積率相関係数と分散共分散行列の計算

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


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