Re: [NMusers] Rounding (error=134) or obj. func. is infinite (error=136)

2016-04-25 Thread Mai, Tu [MED]

Dear Leonid and Nick,

Thank you very much for your inputs! We will   work on our model with your 
suggestions.

Thank you!

Tu
Sent from my iOS device


On Apr 22, 2016, at 9:14 PM, Leonid Gibiansky 
> wrote:


 In $DES block I this expression

 DSIZE = LOG(BSL*(EXP(-DEC*TIME) + EXP(GRO*TIME) - 1)+1)

 I would use T rather than TIME

You may also try tol=12 nsig=4 sign=12

Leonid


On Apr 22, 2016, at 1:37 PM, Mai, Tu [MED] 
> wrote:

Dear NMUsers,

Our model keeps having the rounding error (error=134). I tried to fix it using 
the following methods or their combinations, however, sometimes I then got the 
message error=136 instead of error=134. But minimization still unsuccessful. 
Can you please help pointing out how I can solve this problem? I really 
appreciate it!

Thank you



1) Use the estimates for THETA that are ~10% deviated from the estimates 
provided after scm run.
2) Set TOL=9, NSIG=2, SIGL=6

I attached here the code:

$PROBLEMIRM code

$INPUT  ID TIME EX DV DVID ECOG AGE HT WT RACE SITE DIAG=DROP HEM

ALK ALB LAC TES STUDY DRUG PRIORDOC

$DATA   survival.csv

$SUBROUTINE ADVAN13 TOL=9

$MODEL  NCOMP=1 COMP(HAZ)

$PK
;;; DECECOG-DEFINITION START
IF(ECOG.EQ.1) DECECOG = 1  ; Most common
IF(ECOG.EQ.0) DECECOG = ( 1 + THETA(27))
IF(ECOG.EQ.2) DECECOG = ( 1 + THETA(28))
;;; DECECOG-DEFINITION END
;;; GROPRIORDOC-DEFINITION START
IF(PRIORDOC.EQ.0) GROPRIORDOC = 1  ; Most common
IF(PRIORDOC.EQ.1) GROPRIORDOC = ( 1 + THETA(26))
;;; GROPRIORDOC-DEFINITION END
;;; GROECOG-DEFINITION START
IF(ECOG.EQ.1) GROECOG = 1  ; Most common
IF(ECOG.EQ.0) GROECOG = ( 1 + THETA(24))
IF(ECOG.EQ.2) GROECOG = ( 1 + THETA(25))
;;; GROECOG-DEFINITION END
;;; GROALK-DEFINITION START

IF(ALK.EQ.-99) THEN

   GROALK = 1

ELSE

   GROALK = ( 1 + THETA(23)*(ALK - 94.00))

ENDIF

;;; GROALK-DEFINITION END
;;; GRO-RELATION START

GROCOV=GROALK*GROECOG*GROPRIORDOC

;;; GRO-RELATION END

;;; DECDRUG-DEFINITION START

IF(DRUG.EQ.3) DECDRUG = 1  ; Most common

IF(DRUG.EQ.2) DECDRUG = ( 1 + THETA(21))

IF(DRUG.EQ.1) DECDRUG = ( 1 + THETA(22))

;;; DECDRUG-DEFINITION END

;;; DECAGE-DEFINITION START

DECAGE = ( 1 + THETA(20)*(AGE - 64.00))

;;; DECAGE-DEFINITION END
;;; DEC-RELATION START

DECCOV=DECAGE*DECDRUG*DECECOG

;;; DEC-RELATION END
;;; BSLHEM-DEFINITION START

IF(HEM.LE.124.00) BSLHEM = ( 1 + THETA(18)*(HEM - 124.00))

IF(HEM.GT.124.00) BSLHEM = ( 1 + THETA(19)*(HEM - 124.00))

IF(HEM.EQ.-99)   BSLHEM = 1

;;; BSLHEM-DEFINITION END
;;; BSLECOG-DEFINITION START

IF(ECOG.EQ.1) BSLECOG = 1  ; Most common

IF(ECOG.EQ.0) BSLECOG = ( 1 + THETA(16))

IF(ECOG.EQ.2) BSLECOG = ( 1 + THETA(17))

;;; BSLECOG-DEFINITION END
;;; BSLALK-DEFINITION START

IF(ALK.EQ.-99) THEN

   BSLALK = 1

ELSE

   BSLALK = ( 1 + THETA(15)*(ALK - 94.00))

ENDIF

;;; BSLALK-DEFINITION END
;;; BSL-RELATION START

BSLCOV=BSLALK*BSLECOG*BSLHEM

;;; BSL-RELATION END
;;; BSHZPRIORDOC-DEFINITION START

IF(PRIORDOC.EQ.0) BSHZPRIORDOC = 1  ; Most common

IF(PRIORDOC.EQ.1) BSHZPRIORDOC = ( 1 + THETA(14))

;;; BSHZPRIORDOC-DEFINITION END
;;; BSHZALK-DEFINITION START

IF(ALK.EQ.-99) THEN

   BSHZALK = 1

ELSE

   BSHZALK = ( 1 + THETA(13)*(ALK - 94.00))

ENDIF

;;; BSHZALK-DEFINITION END
;;; BSHZ-RELATION START

BSHZCOV=BSHZALK*BSHZPRIORDOC

;;; BSHZ-RELATION END
;;; BETAHEM-DEFINITION START

IF(HEM.EQ.-99) THEN

   BETAHEM = 1

ELSE

   BETAHEM = ( 1 + THETA(12)*(HEM - 124.00))

ENDIF

;;; BETAHEM-DEFINITION END
;;; BETAECOG-DEFINITION START

IF(ECOG.EQ.1) BETAECOG = 1  ; Most common

IF(ECOG.EQ.0) BETAECOG = ( 1 + THETA(10))

IF(ECOG.EQ.2) BETAECOG = ( 1 + THETA(11))

;;; BETAECOG-DEFINITION END
;;; BETADRUG-DEFINITION START

IF(DRUG.EQ.3) BETADRUG = 1  ; Most common

IF(DRUG.EQ.2) BETADRUG = ( 1 + THETA(8))

IF(DRUG.EQ.1) BETADRUG = ( 1 + THETA(9))

;;; BETADRUG-DEFINITION END
;;; BETAAGE-DEFINITION START

BETAAGE = ( 1 + THETA(7)*(AGE - 64.00))

;;; BETAAGE-DEFINITION END
;;; BETA-RELATION START

BETACOV=BETAAGE*BETADRUG*BETAECOG*BETAHEM

;;; BETA-RELATION END

IF (NEWIND.LE.1) THEN

   SRVZ=1 ; Survivor function at TIME=0

ENDIF

;---BASELINE PSA--
TVBSL = THETA(1)

TVBSL = BSLCOV*TVBSL

BSL = TVBSL*EXP(ETA(1))

;---PSA PARAMETERS--
TVGRO = THETA(2)

TVGRO = GROCOV*TVGRO

TVDEC = THETA(3)

TVDEC = DECCOV*TVDEC

GRO   = TVGRO*EXP(ETA(2))

DEC   = TVDEC*EXP(ETA(3))

;---SURVIVAl MODEL PARAMETERS--

TVBSHZ = THETA(5) ; Baseline Hazard

TVBSHZ = BSHZCOV*TVBSHZ

BSHZ = TVBSHZ

TVBETA = THETA(6) ; Parameter relating dropout hazard to PSA estimate
TVBETA = BETACOV*TVBETA
BETA = TVBETA

$DES

  DSIZE = LOG(BSL*(EXP(-DEC*TIME) + EXP(GRO*TIME) - 1)+1)

  TEMP = BETA*DSIZE

  DADT(1) = BSHZ*EXP(TEMP)

$ERROR

IF (DVID.EQ.1) THEN

 F_FLAG=0 ; If continuous type data

SIZE  = LOG(BSL*(EXP(-DEC*TIME) + EXP(GRO*TIME) - 1)+1)

 IPRED = SIZE
ADD 

Re: [NMusers] Rounding (error=134) or obj. func. is infinite (error=136)

2016-04-22 Thread Leonid Gibiansky

 In $DES block I this expression

 DSIZE = LOG(BSL*(EXP(-DEC*TIME) + EXP(GRO*TIME) - 1)+1)

 I would use T rather than TIME

You may also try tol=12 nsig=4 sign=12

Leonid


> On Apr 22, 2016, at 1:37 PM, Mai, Tu [MED]  
> wrote:
> 
> Dear NMUsers,
>  
> Our model keeps having the rounding error (error=134). I tried to fix it 
> using the following methods or their combinations, however, sometimes I then 
> got the message error=136 instead of error=134. But minimization still 
> unsuccessful. Can you please help pointing out how I can solve this problem? 
> I really appreciate it!
>  
> Thank you
>  
>  
>  
> 1) Use the estimates for THETA that are ~10% deviated from the estimates 
> provided after scm run.
> 2) Set TOL=9, NSIG=2, SIGL=6
>  
> I attached here the code:
>  
> $PROBLEMIRM code
>  
> $INPUT  ID TIME EX DV DVID ECOG AGE HT WT RACE SITE DIAG=DROP HEM
>  
> ALK ALB LAC TES STUDY DRUG PRIORDOC
>  
> $DATA   survival.csv
>  
> $SUBROUTINE ADVAN13 TOL=9
>  
> $MODEL  NCOMP=1 COMP(HAZ)
>  
> $PK
> ;;; DECECOG-DEFINITION START
> IF(ECOG.EQ.1) DECECOG = 1  ; Most common
> IF(ECOG.EQ.0) DECECOG = ( 1 + THETA(27))
> IF(ECOG.EQ.2) DECECOG = ( 1 + THETA(28))
> ;;; DECECOG-DEFINITION END
> ;;; GROPRIORDOC-DEFINITION START
> IF(PRIORDOC.EQ.0) GROPRIORDOC = 1  ; Most common
> IF(PRIORDOC.EQ.1) GROPRIORDOC = ( 1 + THETA(26))
> ;;; GROPRIORDOC-DEFINITION END
> ;;; GROECOG-DEFINITION START
> IF(ECOG.EQ.1) GROECOG = 1  ; Most common
> IF(ECOG.EQ.0) GROECOG = ( 1 + THETA(24))
> IF(ECOG.EQ.2) GROECOG = ( 1 + THETA(25))
> ;;; GROECOG-DEFINITION END
> ;;; GROALK-DEFINITION START
>  
> IF(ALK.EQ.-99) THEN
>  
>GROALK = 1
>  
> ELSE
>  
>GROALK = ( 1 + THETA(23)*(ALK - 94.00))
>  
> ENDIF
>  
> ;;; GROALK-DEFINITION END
> ;;; GRO-RELATION START
>  
> GROCOV=GROALK*GROECOG*GROPRIORDOC
>  
> ;;; GRO-RELATION END
>  
> ;;; DECDRUG-DEFINITION START
>  
> IF(DRUG.EQ.3) DECDRUG = 1  ; Most common
>  
> IF(DRUG.EQ.2) DECDRUG = ( 1 + THETA(21))
>  
> IF(DRUG.EQ.1) DECDRUG = ( 1 + THETA(22))
>  
> ;;; DECDRUG-DEFINITION END
>  
> ;;; DECAGE-DEFINITION START
>  
> DECAGE = ( 1 + THETA(20)*(AGE - 64.00))
>  
> ;;; DECAGE-DEFINITION END
> ;;; DEC-RELATION START
>  
> DECCOV=DECAGE*DECDRUG*DECECOG
>  
> ;;; DEC-RELATION END
> ;;; BSLHEM-DEFINITION START
>  
> IF(HEM.LE.124.00) BSLHEM = ( 1 + THETA(18)*(HEM - 124.00))
>  
> IF(HEM.GT.124.00) BSLHEM = ( 1 + THETA(19)*(HEM - 124.00))
>  
> IF(HEM.EQ.-99)   BSLHEM = 1
>  
> ;;; BSLHEM-DEFINITION END
> ;;; BSLECOG-DEFINITION START
>  
> IF(ECOG.EQ.1) BSLECOG = 1  ; Most common
>  
> IF(ECOG.EQ.0) BSLECOG = ( 1 + THETA(16))
>  
> IF(ECOG.EQ.2) BSLECOG = ( 1 + THETA(17))
>  
> ;;; BSLECOG-DEFINITION END
> ;;; BSLALK-DEFINITION START
>  
> IF(ALK.EQ.-99) THEN
>  
>BSLALK = 1
>  
> ELSE
>  
>BSLALK = ( 1 + THETA(15)*(ALK - 94.00))
>  
> ENDIF
>  
> ;;; BSLALK-DEFINITION END
> ;;; BSL-RELATION START
>  
> BSLCOV=BSLALK*BSLECOG*BSLHEM
>  
> ;;; BSL-RELATION END
> ;;; BSHZPRIORDOC-DEFINITION START
>  
> IF(PRIORDOC.EQ.0) BSHZPRIORDOC = 1  ; Most common
>  
> IF(PRIORDOC.EQ.1) BSHZPRIORDOC = ( 1 + THETA(14))
>  
> ;;; BSHZPRIORDOC-DEFINITION END
> ;;; BSHZALK-DEFINITION START
>  
> IF(ALK.EQ.-99) THEN
>  
>BSHZALK = 1
>  
> ELSE
>  
>BSHZALK = ( 1 + THETA(13)*(ALK - 94.00))
>  
> ENDIF
>  
> ;;; BSHZALK-DEFINITION END
> ;;; BSHZ-RELATION START
>  
> BSHZCOV=BSHZALK*BSHZPRIORDOC
>  
> ;;; BSHZ-RELATION END
> ;;; BETAHEM-DEFINITION START
>  
> IF(HEM.EQ.-99) THEN
>  
>BETAHEM = 1
>  
> ELSE
>  
>BETAHEM = ( 1 + THETA(12)*(HEM - 124.00))
>  
> ENDIF
>  
> ;;; BETAHEM-DEFINITION END
> ;;; BETAECOG-DEFINITION START
>  
> IF(ECOG.EQ.1) BETAECOG = 1  ; Most common
>  
> IF(ECOG.EQ.0) BETAECOG = ( 1 + THETA(10))
>  
> IF(ECOG.EQ.2) BETAECOG = ( 1 + THETA(11))
>  
> ;;; BETAECOG-DEFINITION END
> ;;; BETADRUG-DEFINITION START
>  
> IF(DRUG.EQ.3) BETADRUG = 1  ; Most common
>  
> IF(DRUG.EQ.2) BETADRUG = ( 1 + THETA(8))
>  
> IF(DRUG.EQ.1) BETADRUG = ( 1 + THETA(9))
>  
> ;;; BETADRUG-DEFINITION END
> ;;; BETAAGE-DEFINITION START
>  
> BETAAGE = ( 1 + THETA(7)*(AGE - 64.00))
>  
> ;;; BETAAGE-DEFINITION END
> ;;; BETA-RELATION START
>  
> BETACOV=BETAAGE*BETADRUG*BETAECOG*BETAHEM
>  
> ;;; BETA-RELATION END
>  
> IF (NEWIND.LE.1) THEN
>  
>SRVZ=1 ; Survivor function at TIME=0 
>  
> ENDIF
>  
> ;---BASELINE PSA--
> TVBSL = THETA(1) 
>  
> TVBSL = BSLCOV*TVBSL
>  
> BSL = TVBSL*EXP(ETA(1))
>  
> ;---PSA PARAMETERS--
> TVGRO = THETA(2)
>  
> TVGRO = GROCOV*TVGRO
>  
> TVDEC = THETA(3)
>  
> TVDEC = DECCOV*TVDEC
>  
> GRO   = TVGRO*EXP(ETA(2))
>  
> DEC   = TVDEC*EXP(ETA(3))
>  
> ;---SURVIVAl MODEL PARAMETERS--
>  
> TVBSHZ = THETA(5) ; Baseline Hazard
>  
> TVBSHZ = BSHZCOV*TVBSHZ
>  
> BSHZ = TVBSHZ
>  
> TVBETA = THETA(6) ; Parameter relating dropout hazard to PSA estimate  
> TVBETA = BETACOV*TVBETA
> BETA = TVBETA
>  
> $DES   
>  
>   

[NMusers] Rounding (error=134) or obj. func. is infinite (error=136)

2016-04-22 Thread Mai, Tu [MED]
Dear NMUsers,

Our model keeps having the rounding error (error=134). I tried to fix it using 
the following methods or their combinations, however, sometimes I then got the 
message error=136 instead of error=134. But minimization still unsuccessful. 
Can you please help pointing out how I can solve this problem? I really 
appreciate it!

Thank you



1) Use the estimates for THETA that are ~10% deviated from the estimates 
provided after scm run.
2) Set TOL=9, NSIG=2, SIGL=6

I attached here the code:

$PROBLEMIRM code

$INPUT  ID TIME EX DV DVID ECOG AGE HT WT RACE SITE DIAG=DROP HEM

ALK ALB LAC TES STUDY DRUG PRIORDOC

$DATA   survival.csv

$SUBROUTINE ADVAN13 TOL=9

$MODEL  NCOMP=1 COMP(HAZ)

$PK
;;; DECECOG-DEFINITION START
IF(ECOG.EQ.1) DECECOG = 1  ; Most common
IF(ECOG.EQ.0) DECECOG = ( 1 + THETA(27))
IF(ECOG.EQ.2) DECECOG = ( 1 + THETA(28))
;;; DECECOG-DEFINITION END
;;; GROPRIORDOC-DEFINITION START
IF(PRIORDOC.EQ.0) GROPRIORDOC = 1  ; Most common
IF(PRIORDOC.EQ.1) GROPRIORDOC = ( 1 + THETA(26))
;;; GROPRIORDOC-DEFINITION END
;;; GROECOG-DEFINITION START
IF(ECOG.EQ.1) GROECOG = 1  ; Most common
IF(ECOG.EQ.0) GROECOG = ( 1 + THETA(24))
IF(ECOG.EQ.2) GROECOG = ( 1 + THETA(25))
;;; GROECOG-DEFINITION END
;;; GROALK-DEFINITION START

IF(ALK.EQ.-99) THEN

   GROALK = 1

ELSE

   GROALK = ( 1 + THETA(23)*(ALK - 94.00))

ENDIF

;;; GROALK-DEFINITION END
;;; GRO-RELATION START

GROCOV=GROALK*GROECOG*GROPRIORDOC

;;; GRO-RELATION END

;;; DECDRUG-DEFINITION START

IF(DRUG.EQ.3) DECDRUG = 1  ; Most common

IF(DRUG.EQ.2) DECDRUG = ( 1 + THETA(21))

IF(DRUG.EQ.1) DECDRUG = ( 1 + THETA(22))

;;; DECDRUG-DEFINITION END

;;; DECAGE-DEFINITION START

DECAGE = ( 1 + THETA(20)*(AGE - 64.00))

;;; DECAGE-DEFINITION END
;;; DEC-RELATION START

DECCOV=DECAGE*DECDRUG*DECECOG

;;; DEC-RELATION END
;;; BSLHEM-DEFINITION START

IF(HEM.LE.124.00) BSLHEM = ( 1 + THETA(18)*(HEM - 124.00))

IF(HEM.GT.124.00) BSLHEM = ( 1 + THETA(19)*(HEM - 124.00))

IF(HEM.EQ.-99)   BSLHEM = 1

;;; BSLHEM-DEFINITION END
;;; BSLECOG-DEFINITION START

IF(ECOG.EQ.1) BSLECOG = 1  ; Most common

IF(ECOG.EQ.0) BSLECOG = ( 1 + THETA(16))

IF(ECOG.EQ.2) BSLECOG = ( 1 + THETA(17))

;;; BSLECOG-DEFINITION END
;;; BSLALK-DEFINITION START

IF(ALK.EQ.-99) THEN

   BSLALK = 1

ELSE

   BSLALK = ( 1 + THETA(15)*(ALK - 94.00))

ENDIF

;;; BSLALK-DEFINITION END
;;; BSL-RELATION START

BSLCOV=BSLALK*BSLECOG*BSLHEM

;;; BSL-RELATION END
;;; BSHZPRIORDOC-DEFINITION START

IF(PRIORDOC.EQ.0) BSHZPRIORDOC = 1  ; Most common

IF(PRIORDOC.EQ.1) BSHZPRIORDOC = ( 1 + THETA(14))

;;; BSHZPRIORDOC-DEFINITION END
;;; BSHZALK-DEFINITION START

IF(ALK.EQ.-99) THEN

   BSHZALK = 1

ELSE

   BSHZALK = ( 1 + THETA(13)*(ALK - 94.00))

ENDIF

;;; BSHZALK-DEFINITION END
;;; BSHZ-RELATION START

BSHZCOV=BSHZALK*BSHZPRIORDOC

;;; BSHZ-RELATION END
;;; BETAHEM-DEFINITION START

IF(HEM.EQ.-99) THEN

   BETAHEM = 1

ELSE

   BETAHEM = ( 1 + THETA(12)*(HEM - 124.00))

ENDIF

;;; BETAHEM-DEFINITION END
;;; BETAECOG-DEFINITION START

IF(ECOG.EQ.1) BETAECOG = 1  ; Most common

IF(ECOG.EQ.0) BETAECOG = ( 1 + THETA(10))

IF(ECOG.EQ.2) BETAECOG = ( 1 + THETA(11))

;;; BETAECOG-DEFINITION END
;;; BETADRUG-DEFINITION START

IF(DRUG.EQ.3) BETADRUG = 1  ; Most common

IF(DRUG.EQ.2) BETADRUG = ( 1 + THETA(8))

IF(DRUG.EQ.1) BETADRUG = ( 1 + THETA(9))

;;; BETADRUG-DEFINITION END
;;; BETAAGE-DEFINITION START

BETAAGE = ( 1 + THETA(7)*(AGE - 64.00))

;;; BETAAGE-DEFINITION END
;;; BETA-RELATION START

BETACOV=BETAAGE*BETADRUG*BETAECOG*BETAHEM

;;; BETA-RELATION END

IF (NEWIND.LE.1) THEN

   SRVZ=1 ; Survivor function at TIME=0

ENDIF

;---BASELINE PSA--
TVBSL = THETA(1)

TVBSL = BSLCOV*TVBSL

BSL = TVBSL*EXP(ETA(1))

;---PSA PARAMETERS--
TVGRO = THETA(2)

TVGRO = GROCOV*TVGRO

TVDEC = THETA(3)

TVDEC = DECCOV*TVDEC

GRO   = TVGRO*EXP(ETA(2))

DEC   = TVDEC*EXP(ETA(3))

;---SURVIVAl MODEL PARAMETERS--

TVBSHZ = THETA(5) ; Baseline Hazard

TVBSHZ = BSHZCOV*TVBSHZ

BSHZ = TVBSHZ

TVBETA = THETA(6) ; Parameter relating dropout hazard to PSA estimate
TVBETA = BETACOV*TVBETA
BETA = TVBETA

$DES

  DSIZE = LOG(BSL*(EXP(-DEC*TIME) + EXP(GRO*TIME) - 1)+1)

  TEMP = BETA*DSIZE

  DADT(1) = BSHZ*EXP(TEMP)

$ERROR

IF (DVID.EQ.1) THEN

 F_FLAG=0 ; If continuous type data

SIZE  = LOG(BSL*(EXP(-DEC*TIME) + EXP(GRO*TIME) - 1)+1)

 IPRED = SIZE
ADD = THETA(4)

SDSIZE = SQRT(ADD*ADD)

 Y = SIZE + SDSIZE*EPS(1)
 W = Y

 IRES = DV-IPRED

 IWRES = IRES/(W)

ENDIF

;---HAZARD PREDICTION--
CMHZ = A(1)

SRVT = EXP(-CMHZ)

IF (DVID.EQ.2.AND.DV.EQ.0) THEN

  F_FLAG=1

  Y = SRVT

ENDIF

IF (DVID.EQ.2.AND.DV.EQ.1) THEN

  F_FLAG=1

  Y = SRVZ-SRVT

ENDIF

$THETA  (50,85,150) ; POP_BSL

 (0,0.0004,0.1) ; POP_GRO

 (0,0.02,0.1) ; POP_DEC

 (0,0.3,0.35) ; ADD_SD

 (0,0.0009,0.0014) ; BSHZ

 (0.1,0.3,0.7) ; BETA

$THETA  (-0.038,-0.003,0.016) ; BETAAGE1

$THETA  (-1,0.3,5) ; BETADRUG1