マン・ホイットニー(Mann Whitney)のU検定

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

ホーム > 製品 > nAG数値計算ライブラリ > nAG Fortranライブラリ > サンプルソースコード集 > マン・ホイットニー(Mann Whitney)のU検定 (Fortran)

Keyword: マン・ホイットニー, Mann Whitney, ノンパラメトリック, 検定

概要

本サンプルはマン・ホイットニー(Mann Whitney)のU検定を行うFortranによるサンプルプログラムです。 本サンプルは以下に示される2つの独立した標本を分析対象とし、検定統計量U、P値等を算出します。

U検定のデータ 

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

入力データ

(本ルーチンの詳細はg08ahf のマニュアルページを参照)
1
2
3
4
5
6
7

このデータをダウンロード
G08AHF Example Program Data
 16  23  'L'                                     :: N1,N2,TAIL
 13.0  6.0 12.0  7.0 12.0  7.0 10.0  7.0
 10.0  7.0 16.0  7.0 10.0  8.0  9.0  8.0         :: End of X
 17.0  6.0 10.0  8.0 15.0  8.0 15.0 10.0 
 15.0 10.0 14.0 10.0 14.0 11.0 14.0 11.0 
 13.0 12.0 13.0 12.0 13.0 12.0 12.0              :: End if Y

  • 1行目はタイトル行で読み飛ばされます。
  • 2行目に一つ目の標本のサンプル数 (n1=16)、二つ目の標本のサンプル数 (n2=23) 、どの裾確率を計算するか(tail='L')を指定しています。裾確率"L"は下側確率が計算されることを意味しています。
  • 3行目から4行目には全部で16個の数値が指定されていますが、これらは一つ目の標本の値(x)です。
  • 5行目から7行目には全部で23個の数値が指定されていますが、これらは二つ目の標本の値(y)です。

出力結果

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

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

 Mann-Whitney U test

 Sample size of group 1 =    16
 Sample size of group 2 =    23

 Data values

     Group 1   13.0  6.0 12.0  7.0 12.0  7.0 10.0  7.0
               10.0  7.0 16.0  7.0 10.0  8.0  9.0  8.0


     Group 2   17.0  6.0 10.0  8.0 15.0  8.0 15.0 10.0
               15.0 10.0 14.0 10.0 14.0 11.0 14.0 11.0
               13.0 12.0 13.0 12.0 13.0 12.0 12.0

 Test statistic           =    86.0000
 Normal Statistic         =    -2.8039
 Approx. tail probability =     0.0025

 There are ties in the pooled sample

 Exact tail probability   =     0.0020

  • 1行目はタイトルです
  • 5行目は一つ目の標本のサイズが出力されています。 (入力データより読んだ値)
  • 6行目は二つ目の標本のサイズが出力されています。 (入力データより読んだ値)
  • 10行目~16行目には読み込まれたデータが出力されています。
  • 18行目は マン・ホイットニーの検定統計量であるUの値が出力されています。
  • 19行目は正規検定統計量が出力されています。
  • 20行目には裾確率 (tail probability) である P値 の近似値が出力されています。(ある程度のサンプルサイズの場合はこちらの近似値が利用可能です。)
  • 24行目には正確な裾確率 (tail probability) である P値 が出力されています。 (正確な裾確率の計算には時間がかかりますが、小さいサンプルサイズの場合はこちらの値が推奨されます)

ソースコード

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

※本サンプルソースコードは科学技術・統計計算ライブラリである「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
89
90
91
92
93
94
95
96
97
98
99
100

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

!      G08AHF Example Program Text

!      Mark 23 Release. nAG Copyright 2011.

!      .. Use Statements ..
       USE nag_library, ONLY : g08ahf, g08ajf, g08akf, nag_wp
!      .. Implicit None Statement ..
       IMPLICIT NONE
!      .. Parameters ..
       INTEGER, PARAMETER              :: nin = 5, nout = 6
!      .. Local Scalars ..
       REAL (KIND=nag_wp)              :: p, pexact, u, unor
       INTEGER                         :: ifail, liwrk, lwrk, lwrk1, lwrk2,    &
                                          lwrk3, mn, n1, n2, nsum
       LOGICAL                         :: ties
       CHARACTER (1)                   :: tail
!      .. Local Arrays ..
       REAL (KIND=nag_wp), ALLOCATABLE :: ranks(:), wrk(:), x(:), y(:)
       INTEGER, ALLOCATABLE            :: iwrk(:)
!      .. Intrinsic Functions ..
       INTRINSIC                          int, max, min
!      .. Executable Statements ..
       WRITE (nout,*) 'G08AHF Example Program Results'
       WRITE (nout,*)

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

!      Read in problem size
       READ (nin,*) n1, n2, tail

!      Calculate sizes of various workspaces
       nsum = n1 + n2
       mn = min(n1,n2)

!      Workspace for G08AHF
       lwrk1 = nsum

!      Workspace for G08AJF
       lwrk2 = int(n1*n2/2) + 1

!      Workspace for G08AKF
       lwrk3 = mn + mn*(mn+1)*nsum - mn*(mn+1)*(2*mn+1)/3 + 1
       liwrk = 2*nsum + 2

       lwrk = max(lwrk1,lwrk2,lwrk3)
       ALLOCATE (x(n1),y(n2),ranks(nsum),wrk(lwrk),iwrk(liwrk))

!      Read in data
       READ (nin,*) x(1:n1)
       READ (nin,*) y(1:n2)

!      Display title
       WRITE (nout,*) 'Mann-Whitney U test'
       WRITE (nout,*)

!      Display input data
       WRITE (nout,99999) 'Sample size of group 1 = ', n1
       WRITE (nout,99999) 'Sample size of group 2 = ', n2
       WRITE (nout,*)
       WRITE (nout,*) 'Data values'
       WRITE (nout,*)
       WRITE (nout,99998) '    Group 1  ', x(1:n1)
       WRITE (nout,*)
       WRITE (nout,99998) '    Group 2  ', y(1:n2)

!      Perform test
       ifail = 0
       CALL g08ahf(n1,x,n2,y,tail,u,unor,p,ties,ranks,wrk,ifail)

!      Calculate exact probabilities
       IF ( .NOT. ties) THEN
          ifail = 0
          CALL g08ajf(n1,n2,tail,u,pexact,wrk,lwrk,ifail)

       ELSE
          ifail = 0
          CALL g08akf(n1,n2,tail,ranks,u,pexact,wrk,lwrk,iwrk,ifail)
       END IF

!      Display results
       WRITE (nout,*)
       WRITE (nout,99997) 'Test statistic           = ', u
       WRITE (nout,99997) 'Normal Statistic         = ', unor
       WRITE (nout,99997) 'Approx. tail probability = ', p
       WRITE (nout,*)
       IF (ties) THEN
          WRITE (nout,*) 'There are ties in the pooled sample'
       ELSE
          WRITE (nout,*) 'There are no ties in the pooled sample'
       END IF
       WRITE (nout,*)
       WRITE (nout,99997) 'Exact tail probability   = ', pexact

99999  FORMAT (1X,A,I5)
99998  FORMAT (1X,A,8F5.1,2(/14X,8F5.1))
99997  FORMAT (1X,A,F10.4)
    END PROGRAM g08ahfe


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