Keyword: 分散共分散行列, 等価性, 検定統計量, 多変量解析
概要
本サンプルは群内分散共分散行列の等価性のための検定統計量の計算を行うFortranによるサンプルプログラムです。 本サンプルは以下に示されるデータについて検定統計量の計算を行います。
※本サンプルはnAG Fortranライブラリに含まれるルーチン g03daf() のExampleコードです。本サンプル及びルーチンの詳細情報は g03daf のマニュアルページをご参照ください。
ご相談やお問い合わせはこちらまで
入力データ
(本ルーチンの詳細はg03daf のマニュアルページを参照)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
このデータをダウンロード |
G03DAF Example Program Data 21 2 3 'U' : N,M,NG,WEIGHT 1.1314 2.4596 1 1.0986 0.2624 1 0.6419 -2.3026 1 1.3350 -3.2189 1 1.4110 0.0953 1 0.6419 -0.9163 1 2.1163 0.0000 2 1.3350 -1.6094 2 1.3610 -0.5108 2 2.0541 0.1823 2 2.2083 -0.5108 2 2.7344 1.2809 2 2.0412 0.4700 2 1.8718 -0.9163 2 1.7405 -0.9163 2 2.6101 0.4700 2 2.3224 1.8563 3 2.2192 2.0669 3 2.2618 1.1314 3 3.9853 0.9163 3 2.7600 2.0281 3 : End of X,ING 1 1 : ISX
- 1行目はタイトル行で読み飛ばされます。
- 2行目に観測値の数(n=21)、変数の数(m=2)、グループの数(ng=3)、重みづけをするかどうか(weight='U':重みづけをしない)を指定しています。
- 3~23行目に変数の観測値(x)と観測値がどのグループに属するか(ing)を指定しています。
- 24行目に変数が距離計算に含まれるかどうか(isx)を指定しています。"1"の場合は計算に含まれます。
出力結果
(本ルーチンの詳細はg03daf のマニュアルページを参照)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
この出力例をダウンロード |
G03DAF Example Program Results Group means 1 2 1 1.0433 -0.6034 2 2.0073 -0.2060 3 2.7097 1.5998 LOG of determinants -0.8273 -3.0460 -2.2877 STAT = 19.2410 DF = 6.0000 SIG = 0.0038
- 3~7行目にグループ平均が出力されています。
- 9~11行目に群内分散共分散行列の因子の対数が出力されています。
- 13行目に尤度比検定統計量が出力されています。
- 14行目に自由度が出力されています。
- 15行目に有意度が出力されています。
ソースコード
(本ルーチンの詳細はg03daf のマニュアルページを参照)
※本サンプルソースコードは科学技術・統計計算ライブラリである「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
このソースコードをダウンロード |
PROGRAM g03dafe ! G03DAF Example Program Text ! Mark 23 Release. nAG Copyright 2011. ! .. Use Statements .. USE nag_library, ONLY : g03daf, nag_wp, x04caf ! .. Implicit None Statement .. IMPLICIT NONE ! .. Parameters .. INTEGER, PARAMETER :: nin = 5, nout = 6 ! .. Local Scalars .. REAL (KIND=nag_wp) :: df, sig, stat INTEGER :: i, ifail, ldgmn, ldx, lgc, lwk, lwt, & m, n, ng, nvar CHARACTER (1) :: weight ! .. Local Arrays .. REAL (KIND=nag_wp), ALLOCATABLE :: det(:), gc(:), gmn(:,:), wk(:), & wt(:), x(:,:) INTEGER, ALLOCATABLE :: ing(:), isx(:), iwk(:), nig(:) ! .. Intrinsic Functions .. INTRINSIC count ! .. Executable Statements .. WRITE (nout,*) 'G03DAF Example Program Results' WRITE (nout,*) FLUSH (nout) ! Skip headings in data file READ (nin,*) ! Read in the problem size READ (nin,*) n, m, ng, weight IF (weight=='W' .OR. weight=='w') THEN lwt = n ELSE lwt = 0 END IF ldx = n ALLOCATE (x(ldx,m),ing(n),wt(lwt),isx(m)) ! Read in data IF (lwt>0) THEN READ (nin,*) (x(i,1:m),ing(i),wt(i),i=1,n) ELSE READ (nin,*) (x(i,1:m),ing(i),i=1,n) END IF ! Read in variable inclusion flags READ (nin,*) isx(1:m) ! Calculate NVAR nvar = count(isx(1:m)==1) ldgmn = ng lgc = (ng+1)*nvar*(nvar+1)/2 lwk = n*(nvar+1) ALLOCATE (nig(ng),gmn(ldgmn,nvar),det(ng),gc(lgc),wk(lwk),iwk(ng)) ! Compute test statistic ifail = 0 CALL g03daf(weight,n,m,x,ldx,isx,nvar,ing,ng,wt,nig,gmn,ldgmn,det,gc, & stat,df,sig,wk,iwk,ifail) ! Display results ifail = 0 CALL x04caf('General',' ',ng,nvar,gmn,ldgmn,'Group means',ifail) WRITE (nout,*) WRITE (nout,*) ' LOG of determinants' WRITE (nout,*) WRITE (nout,99999) det(1:ng) WRITE (nout,*) WRITE (nout,99998) ' STAT = ', stat WRITE (nout,99998) ' DF = ', df WRITE (nout,99998) ' SIG = ', sig 99999 FORMAT (1X,3F10.4) 99998 FORMAT (1X,A,F7.4) END PROGRAM g03dafe