[NMusers] Generating random numbers within a range

From: Paul Hutson <paul.hutson_at_wisc.edu>
Date: Sun, 06 Nov 2016 21:54:37 +0000

I have read the RANDOM page in guide VIII and LuAnn's suggestions from 2011, and still have questions on how to generate random numbers within a range.
I'd like to simulate the effect of erratic, random (not Markov chain) lapses in adherence. I'm using the model of Kim for simvastatin (also used by Wright, et al).
The control stream and a bit of the input file are below. As you will note, I resorted to using the RANDBETWEEN function in EXCEL to generate random numbers (RNUM) between 1-10, and to use the test to turn off F1 for missed doses:

FF=0
IF(RNUM.LE.4) FF = 1 ;40% ADHERENCE if RNUM is random number between 1-10
F1 = F1A * FF

The problem with this approach is that when I use $SIMULATE and nsubproblems >1, the sequence of the missed doses in the input file doesn't change with each subproblem as I would like.
How can I use the CALL RANDOM (or other) command to generate a random number series for each dosing event, and then a test to use this random number to turn off F1 to simulate a missed dose?
Many thanks,
Paul

$PROB SIMVASTATIN 40PCNT
$INPUT NOTE ID TIME AMT DV LDL0 CMT EVID RNUM
$DATA Simvastatin.CSV
$SUBROUTINES ADVAN6 TOL=3
$MODEL NCOMP=4 NPAR=9
COMP=(GUT DEFDOSE)
COMP=(CENTRAL)
COMP=(ACID)
COMP=(EFFECT, DEFOBS)

$PK
CALLFL=-2
KA = THETA(1)
K20 = THETA(2)
K23 = THETA(3)
K30 = THETA(4)
Kin = THETA(5)*EXP(ETA(1))
Imax = THETA(6)
IC50 = THETA(7)
F1A = THETA(8)
ALAG1 = THETA(9)
FF=0
IF(RNUM.LE.4) FF = 1 ;40% ADHERENCE if RNUM is random number between 1-10
F1 = F1A * FF

$DES
       DADT(1) = - KA * A(1)
       DADT(2) = KA * A(1) - A(2) * (K20 + K23)
       DADT(3) = K23 * A(1) - K30 * A(3)
                   DADT(4) = Kin * (1 - (Imax * A(3))/(IC50 + A(3))) - (Kin/LDL0) * A(4)

                   A1 = A(1)
                   A2 = A(2)
                   A3 = A(3)
                   A4 = A(4)
PCNT = 100*(A4-LDL0)/LDL0 ; Percent change in LDL from baseline

$THETA
  (2.76) ; KA
  (0.136) ; K20
  (0.058) ; K23
  (0.322) ; K30
  (1.14) ; Kin
  (0.489) ; Imax
  (0.0868) ; IC50
  1 FIX; F1
  0.212; ALAG1

$OMEGA 0.2 ; iiv_Kin

$ERROR
IPRED = F
   IRES = IPRED-DV
   Y=IPRED * EPS(1)
   $SIGMA 1 FIX ;VARIATION DUE TO RANDOM ERROR

$SIM (123456) ONLYSIMULATION
$TABLE ID TIME AMT DV LDL0 A1 A2 A3 A4 PCNT RNUM EVID NOPRINT ONEHEADER FILE=output.fit

#NOTE ID TIME AMT DV LDL0 CMT EVID RANDNUM
. 1 0 92 . 92 4 1 10
. 1 0 100 . 92 1 1 1
. 1 24 . 0 92 3 0 5
. 1 24 100 . 92 1 1 10
. 1 48 . 0 92 3 0 8

(the 92 in the first line sets the baseline LDL concentration, the other inputs are the daily simvastatin dose)


Paul Hutson, PharmD, BCOP
Professor
UWisc School of Pharmacy
T: 608.263.2496
F: 608.265.5421


Received on Sun Nov 06 2016 - 16:54:37 EST

This archive was generated by hypermail 2.3.0 : Fri Sep 27 2019 - 16:52:27 EDT