No censored data possible in user model?

Hi, the subject lines tells it already. Or did I miss something?

Helmut, are you talking about the BQL function that would give you the code; observe(C1Obs = C1 * (1 + C1Eps), bql) and require you to map a column of data containing the flag of whether it was BQL or not to C1ObsBQL? bql.jpg

Hi Simon, exactly. I have coded Cobs and CObsBQL (which works both with a genuine PHX model as well as a WNL model within PHX), but with any user model I can’t map the CObsBQL column. See also here:

I think we would have to see the project- I am sure this is possible.

Hello, In graphical mode when select the green observation box you tick the BQL box or In textual mode : observe(CObs = C + CEps, bql) In both cases you will automatically get to map a CObsBQL in Main Samer

Hi Samer, THX – this was it! Case closed. :wink:

Does this treat the BQLs as per the Beal M3 approach? if so are there any limitations you are aware of (i.e. patterns in the data where this approach might provide unreliable estimates, e.g. when the number of BLQs are >x% of the data; when the distribution of BQLs are concentrated in on part of the curve)? Thanks, Elliot

Elliot, The way PML handles BQL is identical to NONMEM’s M3 method. If the error model is log-additive, or if the error model is additive on log-transformed data, then it is identical to the M4 method. Many PK data sets are fit better with the log-additive error model, or with log-transformed data. The overall effect BQL has is to penalize parameters for predicting too high. Simon.

Thanks, So if I understand correctly (and correct me if that’s an incorrect assumption): -add a column in the input dataset -create a flag for data which is to be censored -the DV=0 if not to be censored -the DV= 1 (or some other numberic non-zero values) if the value is to be censored -select the BQL radio box if censoring is to be performed onthe BQL value Where does the actual LLOQ go? or is it unecessary to specify this value the objective is to estimate this value regardless of what the LLOQ is?

Elliot, Actually we provide a tool under the Data called BQL that will create the flag column CObsBQL for you. (leave the conditional substitutions all blank if you choose this option BQL.jpgyou can use either a static value for LLoQ, or if it is already present in the dataset you can map it in (perhaps different assays used) then it will set the the column CObsBQL to 1 and the new column for concentration created to the value of the LLOQ when if finds the BQL value in the original conc column/or flag column. for non BQL observations the original conc will be passed through; take a look at the modelling sub workflow in the attached project. Simon. [file name=ex8_BQL.phxproj size=265885]Certara | Drug Development Solutions BQLres.jpg

ex8_BQL.phxproj (260 KB)

Hi, firstly - thanks for this useful thread, as I was just trying to work out how to apply the Beal M3 rule in my Phoenix population model. My question - does it matter what value you put in the observation data column for these BLQ values? I see that in Simon’s example he has the LLOQ value (2) but I have a colleague who used LLOQ/2 - I think I’m right in thinking that the M3 model doesn’t care what value you put, but I just wanted to check! Kathryn

Hi, Question - does it matter what value you put in the observation data column for these BLQ values? Yes whenever you have your BQL Flag =1 Phoenix will use the value in the CObs (DV) as the lloq value. M3 method will need to know what was your LOQ value. Note that the the BQL flag is a convenience that is available in Phoenix however you can also right your own likelihood function and code if you want to try alternative methods. Many publication exist that will go through the theory and simulation to evaluate these methods performance : 1: Bergstrand M, Karlsson MO. Handling data below the limit of quantification in mixed effect models. AAPS J. 2009 Jun;11(2):371-80. doi: 10.1208/s12248-009-9112-5. Epub 2009 May 19. PubMed PMID: 19452283; PubMed Central PMCID: PMC2691472. 2: Ahn JE, Karlsson MO, Dunne A, Ludden TM. Likelihood based approaches to handling data below the quantification limit using NONMEM VI. J Pharmacokinet Pharmacodyn. 2008 Aug;35(4):401-21. doi: 10.1007/s10928-008-9094-4. Epub 2008 Aug 7. Erratum in: J Pharmacokinet Pharmacodyn. 2010 Jun;37(3):305-8. PubMed PMID: 18686017. 3: Beal SL. Ways to fit a PK model with some data below the quantification limit. J Pharmacokinet Pharmacodyn. 2001 Oct;28(5):481-504. Erratum in: J Pharmacokinet Pharmacodyn 2002 Jun;29(3):309. PubMed PMID: 11768292. 4: Byon W, Fletcher CV, Brundage RC. Impact of censoring data below an arbitrary quantification limit on structural model misspecification. J Pharmacokinet Pharmacodyn. 2008 Feb;35(1):101-16. Epub 2007 Oct 26. PubMed PMID: 17963024. 5: Xu XS, Dunne A, Kimko H, Nandy P, Vermeulen A. Impact of low percentage of data below the quantification limit on parameter estimates of pharmacokinetic models. J Pharmacokinet Pharmacodyn. 2011 Aug;38(4):423-32. doi: 10.1007/s10928-011-9201-9. Epub 2011 May 31. PubMed PMID: 21626437. Samer Mouksassi Pharsight Consulting Services

Hi, I am running a model with BQL, I was reading this thread and I would like to clarify something. Under the LLOQ column you add the actual value? Thanks, Georgia

Dear Georgia When you click on bql option in the residual error part of the model, you need to map CObsBQl with the censor column you have ion your data. The censor column has the value 1 when an observation is BQL. In the CObs column (your response column), you put the LOQ value when an observation is BQL. Therefore, you have 1 in the censor column and the LOQ value in the response column. This applies to NLME. Best Serge

Georgia, to add to Serge’s comment; most labs supply values below LoQ (Level of Quantification) in a censored format e.g. < 10 so the value you would use is 10 with the CObsBQl flag of 1 as Serge indicated. If you have actual values below LoQ from your lab then I believe you could use them with this flag too. Simon