Clinical PK/PD
http://w.atwiki.jp/wiki5_hks/
Clinical PK/PD
ja
2008-03-30T15:10:46+09:00
1206857446
-
濃度の予測区間
https://w.atwiki.jp/wiki5_hks/pages/106.html
*個体間変動と個体内変動を考慮した濃度の予測区間を構成する。
**非線形混合効果モデル
CL と V の個体間変動はいずれも 20%CV、個体内変動は 10% として、5 点 x 100 人のデータを発生させる。そのデータに対して、「真のモデル」(=データ発生に用いたモデル) を用いて FO 法で NONMEM パラメータを推定する。その結果を用いて、パラメトリック・ブートストラップにより個体間変動パラメータをシミュレートして、個体間変動のみを考慮した予測区間を構成。さらに、正規近似を用いて個体内変動分を加算した予測区間を求める。
以上のプロセスによって 90% 区間をシミュレーションしてみたところ、もともとのデータをどれくらいの割合で含んでいるか?
|種類|カバー率|
|個体間変動のみ|84%|
|個体内変動も|96%|
こうやって構成する予測区間と、「元のデータの何割を含んでいるか」とは本来全く関係がない。したがって、90% 区間が含む割合が上記のようになったとしても不思議はない。
**線形混合効果モデル
上記の結果の原因が非線形混合効果モデルにあるのは、それとも FO 法近似の限界なのかを確認するために線形混合効果モデルの設定で同様の検討をしてみる。デザインは上と全く同じ。
|種類|カバー率|
|個体間変動のみ|87%|
|個体内変動も|96%|
すなわち、非線形に起因する問題ではなく、本質的なことであることが示される。
**注意
なお、ここで用いたシミュレーションではパラメータの推定誤差は全く考慮していないが、考慮したところで傾向は同じだろう。個体内変動を含む区間のカバー率はさらに大きくなる (90% から遠くなる) だけである。
Cmax 付近、あるいはトラフ濃度の予測区間がどの程度になるか、といった本来の M&S に近い立場であるならば、この方法による予測区間構成は全く問題ない。
しかし、回顧的な 'posterior predictive check' = 'visual predictive check' の場合はどうなのだろう。
----
[[こちら>http://d.hatena.ne.jp/Fumi/20080324/1206357871]]も参照。
2008-03-30T15:10:46+09:00
1206857446
-
PosteriorPredictiveCheck
https://w.atwiki.jp/wiki5_hks/pages/25.html
Posterior Predictive Check とは
http://blog.goo.ne.jp/hkasai/e/a7b5f06c3408fce3a8ab89f2bcf21143
[[図解 (pdf)>http://www5.atwiki.jp/hks?cmd=upload&act=open&pageid=25&file=PPC.pdf]]
[[具体的な実施手順>PPCの手順]]
[[濃度の予測区間]]
関連記事:
+http://blog.goo.ne.jp/hkasai/e/4f075ff8022832f6aa45e851da33034d
+http://blog.goo.ne.jp/hkasai/e/437d5a9932c665811052e58d74eef9cb
2008-03-30T14:56:06+09:00
1206856566
-
$TABLEに20以上の変数
https://w.atwiki.jp/wiki5_hks/pages/105.html
*変数を 20 個以上 TABLE に出力したい
PRED-defined の変数が多数ある時、$TABLE ですべての変数を出力したくても NONMEM V では 20 個までしか出力できない(VI では 50 個まで)。$TABLE を複数用意して、別々の TABLE に出力させようとしてもエラーが出る。
以下のように、$PROBLEM を複数に分ければよい。
-1 回目の run ($PROBLEM 1) での結果を $EST MSF= で出力しておく。
-2 回目の run ($PROBLEM 2) ではその結果を $MSFI で読み込み、推定は実行しない。ただ単に $TABLE 出力のみを行わせる。
$PROBLEM 1(ESTIMATION)
$DATA DATA.TXT
$INPUT ID TIME AMT DV
$SUB ADVAN1 TRANS2
$PK
CL=THETA(1)*EXP(ETA(1))
V =THETA(2)*EXP(ETA(2))
;
SC=V
;
; 以下、適当
X1=1
X2=2
X3=3
X4=4
X5=5
X6=6
X7=7
X8=8
X9=9
X10=10
X11=1
X12=2
X13=3
X14=4
X15=5
X16=6
X17=7
X18=8
X19=9
X20=10
X21=11
;
$ERROR
Y=F*EXP(ERR(1))
$THETA
(0 0.1)
(0 1)
$OMEGA 0.04 0.04
$SIGMA 0.01
$EST MAXE=9999 MSF=MSF1.DAT
$COV
$TABLE
NOPRINT ONEHEADER NOAPPEND FILE=TAB1.TXT
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
X11 X12 X13 X14 X15 X16 X17 X18 X19 X20
;X21 ; 21 個目を出力しようとするとエラーが出る
;
$PROBLEM 2
$DATA DATA.TXT REWIND
$INPUT ID TIME AMT DV
$MSFI MSF1.DAT ; PROBLEM 1 での推定結果をそのまま用いる
$TABLE
NOPRINT ONEHEADER NOAPPEND FILE=TAB2.TXT
X21
;
----
参照:
-[NMusers] Too many PRED-generated items in $TABLE (Mar, 2008)
2008-03-23T19:51:08+09:00
1206269468
-
$TABLE
https://w.atwiki.jp/wiki5_hks/pages/57.html
*$TABLE
:使用方法|$DATA (出力項目) [FILE=filename][NOPRINT][ONEHEADER][FIRSTONLY][NOAPPEND]
''解説''
:出力項目|出力項目を何も指定しないと,標準では DV, PRED, RES, WRES の 4 項目がテーブルに出力される.通常はこれでは情報不足であり,たいていの場合,最低限 ID は追加する必要がある.また,予測値のテーブルを出力させる際には TIME も必要であろう.なお,たとえば,ID, TIME を追加出力させたい場合は $TABLE ID TIME と指定すればよい.DV, PRED, RES, WRES に関しては何も指定しなくても自動的に出力される.$ERROR で指定した[[個別予測値>IndividualPrediction]]を項目として指定するとテーブルに出力される.たとえば,$TABLE ID TIME IPRE IRES とする.
:FILE=filename|テーブルを標準アウトプットではない別のテキストファイルに出力させたい場合に指定する.filename には作成したいテーブルファイルのファイル名を指定する.
:NOPRINT|テーブルを標準アウトプット内には出力させない.通常 FILE=filename オプションとともに使用する.
:ONEHEADER|ヘッダ行をテーブル内の一番最初のみに出力させる.ONEHEADER を指定しない場合は,(試してみればすぐわかる)
:NOAPPEND|DV, PRED, RES, WRES を出力しない.[[POSTHOC パラメータ>PosthocParameter]]のテーブルを作る際にはこれら 4 項目は不要であるので,NOAPPEND オプションを指定するとよい.
:FIRSTONLY|標準ではテーブルファイルは,元の入力データセットの各行に対応して作成される.すなわち,作成されるテーブルの行数は入力データと同じ行数になる.ところで,[[POSTHOC パラメータ>PosthocParameter]]のテーブルを作成したい場合は,基本的に一人一人の被験者におけるパラメータ値が知りたいわけであるから,被験者一人につき,そのパラメータ値が一揃い(一行)出力されればそれで十分である.しかし,標準では元データと同じ行数のテーブルが出力されるということは,各被験者内で指定した時点数に応じただけの行数分(同じ)パラメータがテーブルに出力されることになり,無駄である.このような場合,FIRSTONLY オプションを指定すると,各被験者の最初の行のみがテーブルに出力されるようになる.すなわち,一人にたいして 1 行分のみ出力される.なお,たとえば,腎機能の推移に応じて経日的にクリアランスが変化することを仮定したモデルの場合,各被験者の[[POSTHOC パラメータ>PosthocParameter]]値は一揃いではないから,この場合は FIRSTONLY オプションは指定してはならない.
----
参照:
-[[$TABLEを二種類作る理由]]
-[[TABLEが出力されない]]
-[[$TABLEに20以上の変数]]
2008-03-23T19:37:40+09:00
1206268660
-
Tips
https://w.atwiki.jp/wiki5_hks/pages/7.html
-[[NMFE5.BATの編集]]
-[[OUTPUTからの情報抽出]]
-[[$TABLEを二種類作る理由]]
-[[TABLEが出力されない]]
-[[$TABLEに20以上の変数]]
-[[$PREDでINFN]]
-[[推定分散共分散行列の出力>CovarianceMatrixEstimate]]
-[[FlipFlopの回避]]
-[[TOLとは]]
-[[$SUPER]]
-[[対数変換モデル>$ERROR]]
-[[変数変換の妥当性]]
-[[被験者背景シミュレーション]]
-[[濃度推移の重ね描き]]
2008-03-23T19:35:40+09:00
1206268540
-
コントロールファイル作成のテクニック
https://w.atwiki.jp/wiki5_hks/pages/67.html
**DATA
**INPUT
**SUB
**INFN
-[[INFN]]
**PK
**ERROR
**PRED
**DES
-[[TOLとは]]
**THETA
**OMEGA
-相関の取り扱い
**SIGMA
**EST
**COV
**TABLE
-[[$TABLE]]
**SIM
**SUPER
-[[$SUPER]]
[[コントロールファイルの書き方(ルール)]]
2008-03-20T13:53:01+09:00
1205988781
-
コントロールファイルの書き方(ルール)
https://w.atwiki.jp/wiki5_hks/pages/17.html
-原則,すべて半角大文字で書く.
--小文字は原則不可.
--Windows で使うならば,ファイル名のみ,大文字,小文字どちらを用いてもよい.
-適宜,改行,半角スペースで区切って,見やすくすることができる.
--全角スペース,および,タブは使用不可.
--全角スペースやタブが入ったコントロールファイルのエラーは'''発見しにくい'''ので要注意.
-セミコロン (;) の後はコメントとして無視される.
--コメント部分には日本語も使用可.
-1 行の文字数は 80 字以内.それ以上書いても無視される.
-最後の行にセミコロン (;) だけの行を入れることを勧める.(決まりではないが,思わぬトラブルを防止するためにも,実行することを強く勧める).
コントロールファイルの例: [[コントロールファイル(例題1)]]
[[コントロールファイル作成のテクニック]]
2008-03-20T13:52:38+09:00
1205988758
-
ガイドライン
https://w.atwiki.jp/wiki5_hks/pages/79.html
*EMEA
**PPK のレポーティングに関するガイドライン
-(GUIDELINE ON REPORTING THE RESULTS OF POPULATION PHARMACOKINETIC ANALYSES)
--[[PDF>http://www.emea.europa.eu/pdfs/human/ewp/18599006enfin.pdf]]
-残差プロットに早速 CWRES が取り入れられている.しかし,「ある気になる点」については触れられていない.
以下,私にとっての要点をまとめておく.
-この GL は regulatory 側の reviewer が解析結果を評価するために,という視点で作られている.
--どの時点でどういう仮定に基づいてどのような決断がなされたのか,が明確になっている必要がある.
-解析計画をつけなさい.ただしもちろん,探索的解析である場合には less detailed になるだろう.
-データ変換をするならその根拠を.また,変換したなら data input checking procedures should be described.
-A run record may be presented in a separate appendix.
-Basic model について
--Simulations can be used for diagnostic purposes and can also be used to support the value of different GOF (goodness-of-fit) plots.
---この文脈で 'simulation' とは何をするのか?
--GOF plots should be presented for key stages during basic model development
--X:PRED vs Y:DV のプロットを作りなさい.(X, Y に注意)
--FOCE なら CWRES を使いなさい.
--(C)WRES のプロットには smooth line もつけるといい.
--(C)WRES のヒストグラムあるいは QQ プロットもいいかも.(正規性,という観点)
--The selection of GOF plots included in the report should be justified.
--The report should include interpretation of the provided GOF plots.
--informs the assessor what the key features in the plot are, and how any trends or lack of trend should be interpreted.
--データセットが大きいときはランダムに抽出してプロットすれば.その方が見やすいし.
--OBJ 最小ではない(コンパートメント)モデルを選択した場合にはその理由を述べること.
-共変量モデルについて
--共変量間の相関を見ることができるようなプロットをつけなさい.
--変数選択の際には統計学的有意性だけでなく,clinical relevance (only effects larger than a certain pre-defined magnitude) も考慮しなさい.
--The values of the affected parameter at the extremes and/or the 5-95 percentiles of the covariate range could also be presented.
--共変量が多いなら,'typical' な人での AUC 等への影響をシミュレーションしてみれば.
---Typical subjects ってどうする?
--グラフだけ示して「影響なし」は駄目.データが sparse な場合は Bayes 推定値は「縮小」されているので,グラフでは影響が認めにくいかもしれない.
-Final model について
--個体間変動分散,個体内変動分散が basic model に対してどの程度小さくなったか?
--ETA を各種共変量に対してプロットしてみなさい.
--適宜,individual plot をしてみよう.
--NONMEM input と output を basic と final モデルについては appendix につけること.
---その二つだけでいいのか,という議論が当然起こる.起こっている.
--実測濃度と 95% 予測区間をグラフ上で比較してみよう.
2008-03-20T13:50:43+09:00
1205988643
-
R/SでODE
https://w.atwiki.jp/wiki5_hks/pages/101.html
*R で ODE
ex1 <-
function(t, y, p) {
dy1 <- -p["ka"] * y[1] # amount
dy2 <- p["ka"] * y[1] / p["V"] - p["CL"] / p["V"] * y[2] # concentration
list(c(dy1, dy2)) # list で返す
}
ka <- 0.7; CL <- 0.1; V <- 1
parms <- c(ka=ka, CL=CL, V=V)
TIME <- seq(0, 24, by=1)
Dose <- 1000
require(odesolve)
my.atol <- c(1e-6, 1e-10)
out <-
lsoda(c(Dose, 0), TIME, ex1, parms, rtol=1e-5, atol=my.atol)
out
*S-PLUS で ODE
ex1 <-
function(x, y, CL, V, ka) {
dy1 <- -ka * y[1] # amount
dy2 <- ka * y[1] / V - CL * y[2] # concentration
c(dy1, dy2)
}
TIME <- seq(1, 24, by=1)
CONC <- double(length(TIME))
CL <- 0.1; V <- 1; ka <- 0.7
Dose <- 1000
out <- ivp.ab(TIME[1], c(0, c(Dose, 0)), ex1, aux=list(CL=CL, V=V, ka=ka))
CONC[1] <- out$values[3]
for (i in seq(2, length(TIME))) {
out <- ivp.ab(TIME[i], restart=out)
CONC[i] <- out$values[3]
}
CONC
2008-03-12T19:25:50+09:00
1205317550
-
Wang2007
https://w.atwiki.jp/wiki5_hks/pages/104.html
*Wang, Y (2007) J.PKPD
[[Derivation of various NONMEM estimation methods>http://www.springerlink.com/content/x513842121054931/]]
NONMEM の目的関数についての解説。
NONMEM が具体的にどういう式で目的関数を計算しているかついて、マニュアルには明瞭に書かれていない。特に、FOCE + INTERACTION 法や Laplace 法の目的関数の式は mystery でさえある。そこでこの論文では Laplace 法、FOCE 法、FO 法の目的関数が明確に示された。
まず、(周辺尤度の)積分を Laplace 近似する方法で目的関数を導く。ただし、個体内誤差は問う誤差モデルを仮定する。この枠組みでは、Laplace、FOCE、FO の違いは、対数尤度の二階微分(ヘッセ行列)をどう評価するかの違いに帰着する。ヘッセ行列をそのまま評価(数値計算)しようとするのが Laplace 法であり、一方、FOCE、FO 法ではヘッセ行列をその期待値で近似する。期待値ならば一階微分のみを用いて計算可能である。なお、FOCE 法と FO 法とでは、個体間変動パ
ラメータηに関する Taylor 展開の際にηの経験ベイズ推定量の周りで行う (FOCE) か、あるいは、期待値 (=0) の周りで行うか、が異なる。
ところで、Laplace 近似に基づく目的関数の式はそのままでは数値計算に使いにくい。それは上記したヘッセ行列(の期待値)の評価が含まれるためである。そこで、論文中では FOCE 法と FO 法について、より直感的な誘導も示される。この場合、いわゆる「モデル式」、すなわち、
Yi = f(θ, ηi) + εi
の f(.) をηi について展開した上で、Yi の周辺期待値および周辺分散を近似によって求める。後は、Yi が(多変量)正規分布に従うとの仮定のもと、尤度を書き下せばよい。
さて、前者の Laplace 近似に基づく方法と後者の周辺分布に基づく方法とで導かれるそれぞれの目的関数は(INTERACTION のない)FOCE 法と FO 法とでは一致する。なお、比例誤差モデルの場合は、εの分散としてσ^2 ではなく、f(θ, η=0)^2 x σ^2 を使えばよい。一方、FOCE + INTERACTION 法では上記二つの方法で導かれる目的関数式は異なってしまう。NONMEM では Laplace 近似に基づく式が用いられている(らしい)。
論文中には、目的関数を数値計算するための簡単なデータ例と、NONMEM コントロールファイルおよび FOCE (+INTERACTION) 法での S-PLUS/R のスクリプトが示されている。このスクリプトは後者の方法での式をそのまま素直に implement している。従って、FOCE での目的関数値について NONMEM とこのスクリプトでの計算値は等誤差、比例誤差いずれの場合であっても一致するが、比例誤差の場合、FOCE + INTERACTION 法での NONMEM とスクリプトの計算値は一致しない。論文の Table 2 を見ると確かに異なっている。ただし、論文中にはこの結果についての直接的な記載はなく、式の誘導を示している箇所に「二つの方法での式は一致しない」と注意されているのみである。なお、言うまでもないことであるが、等誤差モデルの場合の FOCE + INTERACTION 法は考慮する必要がない。
では Laplace 法の場合はどうなっているであろうか。実は本論文中では Laplace 法についてはあまり記載がなく、上述のとおり、積分の Laplace 近似に基づく目的関数式が示されているのみである。S-PLUS/R のスクリプトも、数値計算結果も載っていない。
ところで、NONMEM V までは Laplace 法では INTERACTION 法を用いることができなかった。それは、Ver. V までの NONMEM は比例誤差モデルの場合、まず、
Yi = f(θ, ηi) (1 + εi)
≒ f(θ, ηi) + f(θ, 0)εi
と近似していたからである。すなわち、残差誤差部分には個体間変動パラメータηが含まれないような近似が自動的に行われていたのだ。FOCE + INTERACTION 法の場合のみ、f(θ, η=ηi0)εi という近似をすることができていたというわけである。従って、非線形モデルの近似としては FOCE 法よりも Laplace 法のほうが一般に良い近似であるが、比例誤差モデルを用い、かつ、個体間変動が大きい場合は、Laplace 法では INTERACTION を考慮することができないため、Laplace 法よりも FOCE + INTERACTION 法のほうが良い結果が得られることもありうる。なお、Ver. VI からは Laplace 法においても INTERACTION を考慮した計算ができるようになった。
さて、この論文では他の教科書よりも式の誘導がやや丁寧に書いてある。また、NONMEM の言葉 (notation) で書かれているので、読みやすい。行列計算の部分は若干厄介であるし、一部の式には誤植もあるが、じっくり式の展開を追う価値はある。
まとめます。
FO 法および FOCE 法については等誤差モデル、比例誤差モデル両方の場合の NONMEM 目的関数式が示された。また、S-PLUS/R スクリプトによって NONMEM の計算結果を再現することもできた。一方、FOCE + INTERACTION 法においては NONMEM で用いられている式自体は示されたが、NONMEM での値を数値計算で再現するまでには至っていない。Laplace 法については式が示されただけであり、値を再現するためのスクリプトは提示されなかった。
今後は、まず、FOCE + INTERACTION での NONMEM の目的関数値を再現するスクリプトを作成する必要がある。そのプログラムは FOCE + INTERACTION 用の CWRES-I を確認するためにも重要な役割を果たす。さらに、Laplace 法の値を再現するプログラムも必要であろう。
2008-01-08T19:19:05+09:00
1199787545