Thanks Bernd, this was very useful!
I ended up with a similar dissolution-PK model by taking the derivative of the Weibull function and using an open form approach.
(I had to dig deep to recall how this was done. I found this web applet to be useful, if your math skills are a bit rusty...: https://www.derivative-calculator.net/)
I still did not get it to work properly until I changed the deriv-statement multiplyers from "Aa" to "AaDose", inspired by your input above... (Do you know what the difference is between "Aa" and "AaDose"? I thought they were the same...)
I arrived at this model:
test(){
deriv(A1 = (Aa * Ka)- (Cl2 * (C - C2))- (Cl * C))
deriv(Aa = - (Aa * Ka) + (DisCptERDose * KdissER))
deriv(A2 = (Cl2 * (C - C2)))
deriv(DisCptER = - (DisCptERDose * KdissER))
C = A1 / V
error(CEps = 1)
observe(CObs = C + CEps)
C2 = A2 / V2
dosepoint(DisCptER, idosevar = DisCptERDose, infdosevar = DisCptERInfDose, infratevar = DisCptERInfRate)
stparm(V = tvV)
stparm(Ka = tvKa)
stparm(V2 = tvV2)
stparm(Cl2 = tvCl2)
stparm(Cl = tvCl)
stparm(KdissER = ((t==0) ? 1:((Phi3*((t)/Phi2)^Phi3 * exp(-((t)/Phi2)^Phi3))/(t))))
stparm(Phi2 = tvPhi2)
stparm(Phi3 = tvPhi3)
fixef(tvV = c(, 1, ))
fixef(tvKa = c(, 1, ))
fixef(tvV2 = c(, 1, ))
fixef(tvCl2 = c(, 1, ))
fixef(tvCl = c(, 1, ))
fixef(tvPhi2 = c(, 1, ))
fixef(tvPhi3 = c(, 1, ))
}
I tested the dissolution model in isolation on a simpler 1-compartment model without elimination to see if I could replicate dissolution results using the derivative form (using Phi1 from the closed form model as the dose...):
test(){
deriv(A1 = (AaDose * Ka))
deriv(Aa = - (AaDose * Ka))
V = 1
C = A1 / V
dosepoint(Aa, idosevar = AaDose, infdosevar = AaInfDose, infratevar = AaInfRate)
error(CEps = 1)
observe(CObs = C + CEps)
#stparm(V = tvV)
#stparm(Ka = ((Phi3/Phi2)^Phi3 * t^(Phi3-1)* exp(-(t/Phi2)^Phi3)))
stparm(Ka = ((t==0) ? 1:((Phi3*((t)/Phi2)^(Phi3) * exp(-((t)/Phi2)^Phi3))/(t))))
stparm(Phi2 = tvPhi2)
stparm(Phi3 = tvPhi3)
#fixef(tvV = c(, 1, ))
fixef(tvPhi2 = c(, 1, ))
fixef(tvPhi3 = c(, 1, ))
}
A peculiar issue I have not figured out yet, was that, although the derivative model was able to simulate the dissolution curve well using the model parameters from the closed form model (i.e. the "Simulation" data output), fitting to this model produced different estimates of constants. When making a simulation using the closed form parameters, the DV, IPRED vs IVAR plot is off (a bit too high), although the resulting Simulation output was spot on! I.e. it seems that I cannot use the open form to make a correct model fit. However, it still appears to work for simulating dissolution (using constants obtained from the closed form model...).
Not sure I get everything in your code, but I interpret it that you are scaling the sigmoidicity factor ("b") to estimate IVIVC but that you keep the slope factor ("MDT") from the in vitro testing constant... Is this correctly interpreted? In your experience, could I make some kind of educated estimation of the sigmoidicity IVIVC scaling factor somehow before going into clinic? (E.g. does it normally tend to be in a specific interval?)
I guess until I have figured out the discrepancies between the models, It will be difficult to use the model for IVIVC...
Edited by mjons, 12 June 2020 - 11:57 AM.