290 likes | 307 Views
WinBugs with some PK examples. Peter Blood CP-Bios Novartis Horsham Research Centre. Examples. IV dose Cadralazine Oral 1 compartment Theophylline. A Simple Hierarchical Structure. IV - Cadralazine. Taken IV by patients for cardiac failure Data consisted of 10 patients on 30mg
E N D
WinBugs with some PK examples Peter Blood CP-Bios Novartis Horsham Research Centre
Examples • IV dose • Cadralazine • Oral 1 compartment • Theophylline
IV - Cadralazine • Taken IV by patients for cardiac failure • Data consisted of 10 patients on 30mg • Original Bayesian analysis by Wakefield, Racine-Poon et al • (Applied Statistics 43,No 1, pp201-221,1994) • Analysed in BUGS with a linearised model • See version 0.6 manual addendum • Can now be analysed with nonlinear Model in PkBUGS • Will consider a non-linear model with winBUGS
Cadralazine Models • Analysed in BUGS v0.6 as product formulation of the bivariate nomal • Log V ~ N(ua, a) I (La,Ua) • Log Cl | log V ~ N(k0+k1(Log V - c), b) I(Lb,Ub) • Could now analyse in winBUGS 1.3 as multivariate • muab [1:2] ~ dmnorm(mean[1:2], prec[1:2,1:2]) • tauab[1:2,1:2] ~ dwish(R[1:2], 1:2],2) • Could now use PKBUGS (see David Lunn’s example)
Theophylline Example • Bronchodilator (methyl xanthine) • Kinetics of drug’s anti-asthmatic properties • 12 Subjects measured 11 times over 25 hours • Oral first order one compartment model • First Analysed by Sheiner and Beal with NONMEM • Also by Pinherio and Bates in S+ using NLME • And in SAS using proc NLMIXED
References on Theophylline • Davidian & Giltinan 1995 • “Non linear Models for Repeated • Measurement Data”, pub Chapman & Hall. • Pinheiro & Bates (1995) • Analysed in SAS (Proc Nlmixed) • Reanalysed in SPLUS (NLME) • Boeckman, Sheiner & Beal 1992 • (Nonmem User’s Guide Part V) • Created with Body weight as a Cl covariate • Absorption assumed same for all subjects • 1 Compartment model • Volume in L/kg, Clearance in L/hr/kg
Theophylline Central Code • for(i in 1:nSUBJ){ • for(j in 1:nTIME){ • mu[i,j] <- Dose[i]*exp(logka)* • (exp((-Time[i,j])*exp(lgcl[i]-lgvol[i])) • - exp((-Time[i,j])*exp(logka))) • /(exp(lgvol[i]+logka)-exp(lgcl[i])) • Conc[i,j] ~ dnorm(mu[i,j], epsilon) • }# end of j time loop • }# end of i subject loop • Conc[i,j] ~ dt(mu[i,j],epsilon,4)
Prior Information • phi ~ dnorm(-3.5, 500) # log(Cl) • theta ~ dnorm(-1,100000) # log(V) • logka ~ dnorm( 0.5, 150) • eta1 ~ dgamma(40, 1) # inter • eta2 ~ dgamma(12, 3) # inter • epsilon ~ dgamma(0.001,0.001) # intra • for(i in 1:nSUBJ){ • lgcl[i] ~ dnorm(phi,eta1) • lgvol[i] ~ dnorm(theta,eta2)
Initial Conditions (1st) • # 1st set of initial start conditions • list(phi = -4.0, • theta = -1.5, • logka = 0.3, • eta1 = 24, • eta2 = 2, • epsilon= 0.7, • lgcl = c(-4.0,-4.0,-4.0,-4.0,-4.0,-4.0, • -4.0,-4.0,-4.0,-4.0,-4.0,-4.0), • lgvol = c(-1.5,-1.5,-1.5,-1.5,-1.5,-1.5, • -1.5,-1.5,-1.5,-1.5,-1.5,-1.5) • )
Data Collection & Posterior Statistics • for(i in 1:nSUBJ){ • Dose[i] <- Z[i,1,4] • for(j in 1:nTIME){ • Time[i,j] <- Z[i,j,5] • Conc[i,j] <- Z[i,j,6] • lgcl.mn <- mean(lgcl[]) • lgvol.mn <- mean(lgvol[]) • mnCl <- exp(lgcl.mn) • mnVol <- exp(lgvol.mn) • Sigma <- 1.0/sqrt(epsilon) • for(i in 1:nSUBJ){ • Cl[i] <- exp(lgcl[i]) • Vol[i] <- exp(lgvol[i])
Theophylline Data-1st Subject • list(nSUBJ = 12, nTIME = 11, • Z = structure( • .Data=c( • 1, 1, 79.60, 4.02, 0.00, 0.74, • 2, 1, 79.60, 4.02, 0.25, 2.84, • 3, 1, 79.60, 4.02, 0.57, 6.57, • 4, 1, 79.60, 4.02, 1.12,10.50, • 5, 1, 79.60, 4.02, 2.02, 9.66, • 6, 1, 79.60, 4.02, 3.82, 8.58, • 7, 1, 79.60, 4.02, 5.10, 8.36, • 8, 1, 79.60, 4.02, 7.03, 7.47, • 9, 1, 79.60, 4.02, 9.05, 6.89, • 10, 1, 79.60, 4.02,12.12, 5.94, • 11, 1, 79.60, 4.02,24.37, 3.28, • ............ • 132,12, 60.50, 5.30,24.15, 1.17), .Dim=c(12,11,6)))
Results for Theophylline • node mean sd MC err start sample • epsilon 0.891 0.124 0.0016 4001 20000 • eta1 36.34 6.035 0.0672 4001 20000 • eta2 4.734 1.124 0.0085 4001 20000 • Lgcl.mn -3.352 0.045 0.0011 4001 20000 • Lgvol.mn -0.719 0.028 0.0007 4001 20000 • Logka 0.483 0.056 0.0013 4001 20000 • Phi -3.432 0.039 0.0006 4001 20000 • Theta -0.999 0.003 0.00002 4001 20000 • sigma 1.067 0.075 0.0009 4001 20000
Multivariate Theophylline • # vague prior information • muab[1:2] ~ dmnorm(mean[1:2],precn[1:2,1:2]) • tauab[1:2,1:2] ~ dwish(omega[1:2,1:2],2) • # extra initial conditions • list( • mean = c(0,0), • precn = structure(.Data=c(1.0E-6,0,0,1.0E-.Dim=c(2,2)), • omega = structure(.Data=c(0.1,0,0,0.01), .Dim=c(2,2)))
Results from Multi-variate Model(Theophylline) • node mean sd MC err start sample • epsilon 0.937 0.130 0.0018 4001 20000 • Logka 0.463 0.058 0.0014 4001 20000 • muab[1] -3.259 0.102 0.0015 4001 20000 • muab[2] -0.738 0.072 0.0009 4001 20000 • Sigma 1.041 0.073 0.0010 4001 20000 • tauab[1,1] 17.740 11.30 0.2633 4001 20000 • tauab[1,2] -5.524 11.50 0.2628 4001 20000 • tauab[2,1] -5.524 11.50 0.2628 4001 20000 • tauab[2,2] 32.080 21.60 0.4639 4001 20000
Conclusions • Run some examples of PK models in winBUGS. • IV and Oral One compartment examples. • Cadralazine and Theophylline • Compared with results from other sources • Looked at convergence issues in CODA • Perhaps you should now try PKBUGS (28models)! • Plea for further development of PKBUGS
The End • Any • Questions • ?