Dear Pumas Support Team,
I am conducting an individual patient data meta-analysis (IPDMA) pooling PK data from >10 clinical studies. I am intending to partition variability into:
-
Between-subject variability (BSV) - variability between individuals within the same study
-
Between-study variability (ISV) - variability between studies
In NONMEM, this was reported to be implemented using the $LEVEL record with nested random effects:
$LEVEL
STUDYID = (3 [1], 4 [2])
$PK
TVCL = THETA(1)
CL = TVCL * EXP(ETA(1) + ETA(3)) ; ETA(1)=BSV, ETA(3)=ISV nested within BSV
$OMEGA
0.09 ; BSV CL
0.09 ; BSV V
0.09 ; ISV CL (shared by all subjects in same study)
0.09 ; ISV V (shared by all subjects in same study)
The key feature is that subjects within the same study share the same ISV random effect value (e.g., all subjects with STUDYID=1 share the same ETA(3)), while each subject has its own unique BSV random effect. Pharmacokinetic analysis across studies to drive knowledgeâintegration: A tutorial on individual patient data metaâanalysis (IPDMA) - PMC
My questions:
-
Does Pumas currently support nested/hierarchical random effects where random effects can be indexed by a grouping variable (like STUDYID) rather than just by subject ID?
-
Here are two things I have thought of, but I am not sure this would achieve the intended purpose, or be able to tease apart the BSV from ISV:
CL = tvcl * exp(ηCLbsv + ηCLisv)
CL = tvcl * exp(ηCLbsv + ηCLisv[STUDYID])
1 Like
Iâm sorry for the long wait here. I had to look into what NONMEMâs $LEVEL is actually doing and try to understand it before replying. After reading the documentation and the section in the technical appendix of the NONMEM documentation, I think that NONMEM is not doing a proper Laplace approximation (this includes FOCE) of random effects specified with $LEVEL. Hence, while NONMEM allows you to specify a model with random effects with e.g. study as a grouping factor, it is an approximate solution (of the Laplace approximation). My understanding is that users have had mixed success with this approximate solution.
Now to your questions. The short answer is that Pumas only has first-class support for random effects at a more granular level than the subject, i.e. the usual occasion random effect. However, it might be possible to shift the highest level be interpreting the study ID as the subject ID when creating the Pumas population and then have each subject as an occasion. I havenât tried this, but it might work, and I believe people have been doing something similar in NONMEM.
An alternative approach is to use priors on the parameters as a mechanism for defining random effects at a higher level. You would then need a vector of length matching the number of studies and select the element of this vector matching the active study for a specific subject. This approach has the limitation that it would require a Bayesian inference approach such as BayesMCMC.
First-class support for random effects at a higher level than the subject and possibly even random effects that arenât nested is definitely something that weâd like to support. However, it will require a substantial refactoring since the current approach is centered around the evaluation of each subject. If we implement this, it would be based on a proper marginalization of the random effects, either based on the Laplace approximation or an exact method such as MCEM. It is unlikely that weâll implement the approximate solution used by $LEVEL.
1 Like
Thank you for the detailed response. I really appreciate it.
I will try your suggestions.