Two-compartment model as a linear ODE model for single patient
Using pmx_solve_linode
, the following example fits a two-compartment model
with first order absorption. We omit data
and
model
block as they are identical to Two-compartment model for single patient Example.
transformed data{
row_vector[nObs] logCObs = log(cObs);
int nCmt = 3;
real biovar[nCmt];
real tlag[nCmt];
for (i in 1:nCmt) {
biovar[i] = 1;
tlag[i] = 0;
}
}
parameters{
real<lower = 0> CL;
real<lower = 0> Q;
real<lower = 0> V1;
real<lower = 0> V2;
real<lower = 0> ka;
real<lower = 0> sigma;
}
transformed parameters{
matrix[3, 3] K;
real k10 = CL / V1;
real k12 = Q / V1;
real k21 = Q / V2;
row_vector<lower = 0>[nt] cHat;
row_vector<lower = 0>[nObs] cHatObs;
matrix<lower = 0>[3, nt] x;
K = rep_matrix(0, 3, 3);
K[1, 1] = -ka;
K[2, 1] = ka;
K[2, 2] = -(k10 + k12);
K[2, 3] = k21;
K[3, 2] = k12;
K[3, 3] = -k21;
x = pmx_solve_linode(time, amt, rate, ii, evid, cmt, addl, ss, K, biovar, tlag);
cHat = row(x, 2) ./ V1;
for(i in 1:nObs){
cHatObs[i] = cHat[iObs[i]]; // predictions for observed data records
}
}