※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

推定値の分散共分散行列


  • NONMEM のアウトプット中に($COV を指定したときに)出力されてくる "Covariance Matrix of Estimate".
  • 通常はあまり使い道はないのだが,時々必要になる.
  • しかし,アウトプットファイルにおける分散共分散行列推定値も,これまた利用しにくい.
  • そこで,INFN 機能を利用して,この情報を取り出してみる.
    • NTH, NETA, NEPS の行に,それぞれ,THETA, ETA, EPS の数を適切に指定する.
    • 結果は COV.TXT というファイルに出力される.数値の意味はアウトプットの該当欄と見比べてみればすぐにわかるだろうから,説明省略.

      SUBROUTINE INFN(ICALL, THETA, DATREC, INDXS, NEWIND)
C
      INCLUDE 'C:\NMV\NM\NSIZES'
      COMMON /CM12/ COVM(LPAR3)
      INTEGER MODE
      INTEGER NTH, NETA, NEPS
      INTEGER NALL
C
C THE NEXT 3 LINES SHOULD BE EDITED FOR THE NUMBERS OF ETAs,
C THETAs AND EPSIILONs IN YOUR PROBLEM
C
      NTH  = 3
      NETA = 3
      NEPS = 1
C
      NALL = NTH + NETA*(NETA+1)/2 + NEPS*(NEPS+1)/2
      NALL = NALL * (NALL+1) / 2
C
      IF (ICALL.EQ.0) THEN
        OPEN(51, FILE = 'COV.TXT')
      ENDIF
C
      IF (ICALL.EQ.3) THEN
        MODE = 0
        CALL PASS(MODE)
        MODE = 1
20      CALL PASS(MODE)
        IF (MODE.EQ.0) GO TO 30
        GO TO 20
30      CONTINUE
        WRITE(51,*) (COVM(I),I=1,NALL)
      ENDIF
C
      RETURN
      END