10.4 Analytical Example: Pharmacokinetics
See “Analytical Solution of Linear Multi-compartment Models with Non-zero Initial Condition and Its Implementation with R”
\[\frac{d\vec{X}}{dt} = A \vec{X} + \vec{f(t)}\] with the initial conditin \(\vec{X_0}\)
\[\vec{X(t)} = \vec{X_H(t)} + \vec{X_P(t)}\] \[\vec{X(t)} = exp(At) \vec{X_0} + exp(At)*\vec{f(t)}\] \[\vec{X(t)} = exp(At) \vec{X_0} + \int_0^t exp[A(t-\tau)]f(\tau)d\tau\]
10.4.1 Data Preparation
= c(1, 2, 4, 8, 12)
TIME0 = c(TIME0, TIME0 + 24, TIME0 + 48)
TIME = rep(NA, length(TIME))
DV = cbind(TIME, DV)
Obs
= c(0, 24, 48)
TIME = c(100, 150, 100)
AMT = c(0, 50, 0)
RATE = c(2, 2, 1)
CMT = cbind(TIME, AMT, RATE, CMT)
DoseHist
= merge(Obs, DoseHist, all=TRUE) ; DAT DAT
## TIME DV AMT RATE CMT
## 1 0 NA 100 0 2
## 2 1 NA NA NA NA
## 3 2 NA NA NA NA
## 4 4 NA NA NA NA
## 5 8 NA NA NA NA
## 6 12 NA NA NA NA
## 7 24 NA 150 50 2
## 8 25 NA NA NA NA
## 9 26 NA NA NA NA
## 10 28 NA NA NA NA
## 11 32 NA NA NA NA
## 12 36 NA NA NA NA
## 13 48 NA 100 0 1
## 14 49 NA NA NA NA
## 15 50 NA NA NA NA
## 16 52 NA NA NA NA
## 17 56 NA NA NA NA
## 18 60 NA NA NA NA
10.4.2 Solution using R Package ‘wnl’
= ExpandDH(DAT) ; DAT2 DAT2
## TIME DV AMT RATE CMT BOLUS RATE2
## 1 0 0 100 0 2 100 0
## 2 1 0 0 0 0 0 0
## 3 2 0 0 0 0 0 0
## 4 4 0 0 0 0 0 0
## 5 8 0 0 0 0 0 0
## 6 12 0 0 0 0 0 0
## 7 24 0 150 50 2 0 50
## 8 25 0 0 0 2 0 50
## 9 26 0 0 0 2 0 50
## 19 27 0 0 0 0 0 0
## 10 28 0 0 0 0 0 0
## 11 32 0 0 0 0 0 0
## 12 36 0 0 0 0 0 0
## 13 48 0 100 0 1 100 0
## 14 49 0 0 0 0 0 0
## 15 50 0 0 0 0 0 0
## 16 52 0 0 0 0 0 0
## 17 56 0 0 0 0 0 0
## 18 60 0 0 0 0 0 0
# 1 Comp
= Comp1(Ke=0.1, Ka=1, DAT2) ; X1 X1
## [,1] [,2]
## [1,] 0.000e+00 0.000
## [2,] 0.000e+00 90.484
## [3,] 0.000e+00 81.873
## [4,] 0.000e+00 67.032
## [5,] 0.000e+00 44.933
## [6,] 0.000e+00 30.119
## [7,] 0.000e+00 9.072
## [8,] 0.000e+00 55.790
## [9,] 0.000e+00 98.062
## [10,] 0.000e+00 136.311
## [11,] 0.000e+00 123.340
## [12,] 0.000e+00 82.677
## [13,] 0.000e+00 55.420
## [14,] 0.000e+00 16.692
## [15,] 3.679e+01 74.766
## [16,] 1.353e+01 89.599
## [17,] 1.832e+00 83.634
## [18,] 3.355e-02 57.388
## [19,] 6.144e-04 38.493
matplot(DAT2[, "TIME"], X1, type="l")
# 2 Comp
= SolComp2(K10=0.1, K12=3, K21=1)
Sol = nComp(Sol, Ka=1, DAT2) ; X2 X2
## [,1] [,2] [,3]
## [1,] 0.000e+00 0.00 0.00
## [2,] 0.000e+00 24.79 71.00
## [3,] 0.000e+00 22.95 70.49
## [4,] 0.000e+00 21.83 67.13
## [5,] 0.000e+00 19.79 60.86
## [6,] 0.000e+00 17.94 55.17
## [7,] 0.000e+00 13.36 41.10
## [8,] 0.000e+00 34.09 67.75
## [9,] 0.000e+00 45.53 102.32
## [10,] 0.000e+00 56.55 136.19
## [11,] 0.000e+00 46.25 141.60
## [12,] 0.000e+00 41.78 128.50
## [13,] 0.000e+00 37.88 116.49
## [14,] 0.000e+00 28.22 86.78
## [15,] 3.679e+01 51.20 122.38
## [16,] 1.353e+01 50.36 141.38
## [17,] 1.832e+00 47.96 145.66
## [18,] 3.355e-02 43.47 133.67
## [19,] 6.144e-04 39.41 121.20
matplot(DAT2[, "TIME"], X2, type="l")
# 3 Comp
= SolComp3(K10=0.1, K12=3, K21=1, K13=2, K31=0.5)
Sol = nComp(Sol, Ka=1, DAT2) ; X3 X3
## [,1] [,2] [,3] [,4]
## [1,] 0.000e+00 0.000 0.00 0.00
## [2,] 0.000e+00 13.005 44.19 40.02
## [3,] 0.000e+00 12.206 39.86 43.91
## [4,] 0.000e+00 11.605 35.95 46.04
## [5,] 0.000e+00 10.954 33.32 44.82
## [6,] 0.000e+00 10.423 31.66 42.74
## [7,] 0.000e+00 8.994 27.32 36.88
## [8,] 0.000e+00 22.781 46.58 52.00
## [9,] 0.000e+00 28.924 67.17 72.67
## [10,] 0.000e+00 34.825 86.10 94.65
## [11,] 0.000e+00 26.683 84.49 101.58
## [12,] 0.000e+00 24.913 75.89 101.67
## [13,] 0.000e+00 23.688 71.96 97.11
## [14,] 0.000e+00 20.439 62.08 83.81
## [15,] 3.679e+01 34.920 87.37 103.92
## [16,] 1.353e+01 33.228 96.38 116.45
## [17,] 1.832e+00 31.441 95.93 123.95
## [18,] 3.355e-02 29.631 90.11 121.19
## [19,] 6.144e-04 28.190 85.63 115.58
matplot(DAT2[, "TIME"], X3, type="l")