乱塊法/完全無作為化法の分散分析

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

Keyword: 分散分析, ANOVA, 乱塊法, 完全無作為化法

概要

本サンプルは乱塊法/完全無作為化法の分散分析(ANOVA: Analysis of Variance) を行うFortranによるサンプルプログラムです。 本サンプルは以下に示される観測値を10個のブロックに分け6回の処理で処理する釣合型不完備ブロック計画(Balanced Incomplete Block Design)により分散分析し、分散分析表、処理平均や処理平均の差の標準誤差を出力します。

分散分析のデータ 

※本サンプルはnAG Fortranライブラリに含まれるルーチン g04bbf() のExampleコードです。本サンプル及びルーチンの詳細情報は g04bbf のマニュアルページをご参照ください。
ご相談やお問い合わせはこちらまで

入力データ

(本ルーチンの詳細はg04bbf のマニュアルページを参照)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

このデータをダウンロード
G04BBF Example Program Data
30 6 10                     : N, NT, IBLOCK
1 5 4
5 10 6
2 9 3
4 8 6
2 4 7
6 7 5
5 7 2
7 2 4
8 4 2
10 8 7                      : End of Y
1 2 3
1 2 4
1 3 5
1 4 6
1 5 6
2 3 6
2 4 5
2 5 6
3 4 5
3 4 6                       : End of IT 

  • 1行目はタイトル行で読み飛ばされます。
  • 2行目に観測値の数(n=30)、処理数(nt=6)とブロック数(iblock=10)を指定しています。
  • 3~12行目に観測値のデータ(y)を指定しています。
  • 13~22行目に各観測値が何回目の処理で処理されるか処理回数(it)を指定しています。

出力結果

(本ルーチンの詳細はg04bbf のマニュアルページを参照)
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

この出力例をダウンロード
 G04BBF Example Program Results

  ANOVA table

   Source        df         SS          MS          F        Prob

 Blocks          9.       60.00        6.67        4.79     0.0039
 Treatments      5.      101.78       20.36       14.62     0.0000
 Residual       15.       20.89        1.39
 Total          29.      182.67

  Efficiency Factors

      0.00      0.80      0.80      0.80      0.80      0.80

  Grand Mean      5.33

  Treatment Means

      2.50      7.25      8.08      5.92      2.92      5.33

 Standard errors of differences between means
          1       2       3       4       5       6
 1
 2   0.8344
 3   0.8344  0.8344
 4   0.8344  0.8344  0.8344
 5   0.8344  0.8344  0.8344  0.8344
 6   0.8344  0.8344  0.8344  0.8344  0.8344

  • 3~10行目に分散分析表が出力されています。
  • 7行目にブロックの自由度、平方和、平均平方、F統計量と有意水準が出力されています。
  • 8行目に処理の自由度、平方和、平均平方、F統計量と有意水準が出力されています。
  • 9行目に残差の自由度、平方和と平均平方が出力されています。
  • 10行目に自由度と平方和の合計が出力されています。
  • 14行目には各処理の効率因子が出力されています。
  • 16行目には総平均が出力されています。
  • 20行目には各処理の処理平均が出力されています。
  • 23~29行目には処理平均の差の標準誤差が出力されています。

ソースコード

(本ルーチンの詳細はg04bbf のマニュアルページを参照)

※本サンプルソースコードは科学技術・統計計算ライブラリである「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
79
80
81
82
83
84
85
86
87
88

このソースコードをダウンロード
    PROGRAM g04bbfe

!      G04BBF Example Program Text

!      Mark 23 Release. nAG Copyright 2011.

!      .. Use Statements ..
       USE nag_library, ONLY : g04bbf, nag_wp, x04caf
!      .. Implicit None Statement ..
       IMPLICIT NONE
!      .. Parameters ..
       INTEGER, PARAMETER              :: ldtabl = 4, nin = 5, nout = 6
!      .. Local Scalars ..
       REAL (KIND=nag_wp)              :: gmean, tol
       INTEGER                         :: iblock, ifail, irdf, ldc, lit, n, nt
!      .. Local Arrays ..
       REAL (KIND=nag_wp), ALLOCATABLE :: bmean(:), c(:,:), ef(:), r(:),       &
                                          tmean(:), wk(:), y(:)
       REAL (KIND=nag_wp)              :: tabl(ldtabl,5)
       INTEGER, ALLOCATABLE            :: irep(:), it(:)
!      .. Intrinsic Functions ..
       INTRINSIC                          abs
!      .. Executable Statements ..
       WRITE (nout,*) 'G04BBF Example Program Results'
       WRITE (nout,*)

!      Skip heading in data file
       READ (nin,*)

!      Read in the problem size
       READ (nin,*) n, nt, iblock

       ldc = nt
       IF (nt>1) THEN
          lit = n
       ELSE
          lit = 1
       END IF
       ALLOCATE (y(n),bmean(abs(iblock)),tmean(nt),irep(nt),c(ldc,nt),r(n), &
          ef(nt),wk(3*nt),it(lit))

!      Read in the data and plot information
       READ (nin,*) y(1:n)
       IF (nt>1) THEN
          READ (nin,*) it(1:n)
       END IF

!      Use default tolerance
       tol = 0.0E0_nag_wp

!      Use standard degrees of freedom
       irdf = 0

!      Calculate the ANOVA table
       ifail = 0
       CALL g04bbf(n,y,iblock,nt,it,gmean,bmean,tmean,tabl,ldtabl,c,ldc,irep, &
          r,ef,tol,irdf,wk,ifail)

!      Display results
       WRITE (nout,*) ' ANOVA table'
       WRITE (nout,*)
       WRITE (nout,*) '  Source        df         SS          MS          F', &
          '        Prob'
       WRITE (nout,*)
       WRITE (nout,99998) ' Blocks      ', tabl(1,1:5)
       WRITE (nout,99998) ' Treatments  ', tabl(2,1:5)
       WRITE (nout,99998) ' Residual    ', tabl(3,1:3)
       WRITE (nout,99998) ' Total       ', tabl(4,1:2)
       WRITE (nout,*)
       WRITE (nout,*) ' Efficiency Factors'
       WRITE (nout,*)
       WRITE (nout,99999) ef(1:nt)
       WRITE (nout,*)
       WRITE (nout,99997) '  Grand Mean', gmean
       WRITE (nout,*)
       WRITE (nout,*) ' Treatment Means'
       WRITE (nout,*)
       WRITE (nout,99999) tmean(1:nt)
       WRITE (nout,*)
       FLUSH (nout)
       ifail = 0
       CALL x04caf('Lower','B',nt,nt,c,ldc, &
          'Standard errors of differences between means',ifail)

99999  FORMAT (8F10.2)
99998  FORMAT (A,3X,F3.0,2X,3(F10.2,2X),F9.4)
99997  FORMAT (A,F10.2)
    END PROGRAM g04bbfe


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