Keyword: マン・ホイットニー, Mann Whitney, ノンパラメトリック, 検定
概要
本サンプルはマン・ホイットニー(Mann Whitney)のU検定を行うFortranによるサンプルプログラムです。 本サンプルは以下に示される2つの独立した標本を分析対象とし、検定統計量U、P値等を算出します。
※本サンプルはnAG Fortranに含まれるルーチン g08ahf() のExampleコードです。本サンプル及びルーチンの詳細情報は g08ahf のマニュアルページをご参照ください。
ご相談やお問い合わせはこちらまで
入力データ
(本ルーチンの詳細はg08ahf のマニュアルページを参照)| このデータをダウンロード |
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 のマニュアルページを参照)| この出力例をダウンロード |
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ライブラリ」のルーチンを呼び出します。
サンプルのコンパイル及び実行方法
| このソースコードをダウンロード |
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
