Re: if-the-statement for 3 class categorical covariate

From: Nick Holford Date: July 25, 2013 technical Source: mail-archive.com
Hi, NM-TRAN has some restrictions on its language so that it can do the really tricky stuff behind the scenes that is needed to create the FORTRAN that NONMEM uses. These restrictions apply tocoding conditional statements. First of all you cannot have nested IF-THEN-ELSE blocks with NM-TRAN if they include random variables. The NM-TRAN error message states this if you try this. 326 RANDOM VARIABLE IS DEFINED IN A NESTED IF STRUCTURE. The example provided by Bernard is a nested structure containing random effects (ETA variables). As coded by Bernard it is not legal. ENDIF statements are always required for every IF-THEN. So the 'crash' experienced by Bernard was caused by not following the rules. I have re-coded it below to show the nested structure. However, this will fail in NM-TRAN because of the use of ETA variables in the expressions. IF (GENE.EQ.3) THEN ;GG CL = THETA(1)* EXP(ETA(1)) ELSE IF (GENE.EQ.2)THEN ;GT CL = THETA(6)* EXP(ETA(3)) IF (GENE.EQ.1) THEN ;TT CL = THETA(7)* EXP(ETA(4)) IF (GENE.EQ.4) THEN ;MISSING CL = THETA(7)* EXP(ETA(4)) ENDIF ENDIF ENDIF ENDIF The second rule is that one line IF statements cannot include THEN so the suggestion from Bill won't work. It needs to be written like this: IF (GENE.EQ.3) CL = THETA(1)* EXP(ETA(1)) ;GG IF (GENE.EQ.2) CL = THETA(6)* EXP(ETA(3)) ;GT IF (GENE.EQ.1) CL = THETA(7)* EXP(ETA(4)) ;TT IF (GENE.EQ.4) CL = THETA(7)* EXP(ETA(4)) ;MISSING Best wishes, Nick
Quoted reply history
On 25/07/2013 4:54 p.m., Denney, William S. wrote: > Hi Bernard, > > Try using just IF statements instead of including the ELSE IF and END IF like > this: > > IF (GENE.EQ.3) THEN CL = THETA(1)* EXP(ETA(1)) ;GG > IF (GENE.EQ.2) THEN CL = THETA(6)* EXP(ETA(3)) ;GT > IF (GENE.EQ.1) THEN CL = THETA(7)* EXP(ETA(4)) ;TT > IF (GENE.EQ.4) THEN CL = THETA(7)* EXP(ETA(4)) ;MISSING > > It's also worth verifying that GENE is always 1 to 4. The crash could be > happening because you have a value other than 1 to 4. A way around this is to > have a default value and then only apply changes like: > > CL = THETA(7)* EXP(ETA(4)) ; for TT or MISSING > IF (GENE.EQ.3) THEN CL = THETA(1)* EXP(ETA(1)) ;GG > IF (GENE.EQ.2) THEN CL = THETA(6)* EXP(ETA(3)) ;GT > > That will ensure that it works for all cases and will generally be more robust > code. > > Thanks, > > Bill > > -----Original Message----- > From: [email protected] [mailto:[email protected]] On > Behalf Of Bernard Ngara > Sent: Thursday, July 25, 2013 10:09 AM > To: nmusers > Subject: [NMusers] if-the-statement for 3 class categorical covariate > > Dear all > > I am shoked because NONMEM sents a crash message when i factor in covariate > modeling using a 4 class categorical variable genotype: > IF (GENE.EQ.3) THEN ;GG > CL = THETA(1)* EXP(ETA(1)) > ELSE IF (GENE.EQ.2)THEN ;GT > CL = THETA(6)* EXP(ETA(3)) > IF (GENE.EQ.1) THEN ;TT > CL = THETA(7)* EXP(ETA(4)) > IF (GENE.EQ.4) THEN ;MISSING > CL = THETA(7)* EXP(ETA(4)) > END IF > However if i binarize the code, nonmem runs successfully IF (GENE.EQ.3) THEN > CL = THETA(1)* EXP(ETA(1)) > ELSE > CL = THETA(6)* EXP(ETA(3)) > > END IF > > Thanks in advance > -- > Bernard Ngara > Trainee Biostatistician > Africa Institute of Biomedical Science and Technology P. O Box 2294 Harare > Zimbabwe > +263 772 160 896 -- Nick Holford, Professor Clinical Pharmacology Dept Pharmacology & Clinical Pharmacology, Bldg 503 Room 302A University of Auckland,85 Park Rd,Private Bag 92019,Auckland,New Zealand office:+64(9)923-6730 mobile:NZ +64(21)46 23 53 FR +33(7)85 36 84 99 email: [email protected] http://holford.fmhs.auckland.ac.nz/ Holford NHG. Disease progression and neuroscience. Journal of Pharmacokinetics and Pharmacodynamics. 2013;40:369-76 http://link.springer.com/article/10.1007/s10928-013-9316-2 Holford N, Heo Y-A, Anderson B. A pharmacokinetic standard for babies and adults. J Pharm Sci. 2013: http://onlinelibrary.wiley.com/doi/10.1002/jps.23574/abstract Holford N. A time to event tutorial for pharmacometricians. CPT:PSP. 2013;2: http://www.nature.com/psp/journal/v2/n5/full/psp201318a.html Holford NHG. Clinical pharmacology = disease progression + drug action. British Journal of Clinical Pharmacology. 2013: http://onlinelibrary.wiley.com/doi/10.1111/bcp.12170/abstract
Jul 25, 2013 Bernard Ngara if-the-statement for 3 class categorical covariate
Jul 25, 2013 Bill Denney RE: if-the-statement for 3 class categorical covariate
Jul 25, 2013 Nick Holford Re: if-the-statement for 3 class categorical covariate
Jul 25, 2013 Mukul Minocha Re: if-the-statement for 3 class categorical covariate
Jul 25, 2013 Leonid Gibiansky Re: if-the-statement for 3 class categorical covariate
Jul 25, 2013 Mario Gonzalez RE: if-the-statement for 3 class categorical covariate