46 E. Russek-Cohen et al.
the opportunity to superimpose measurement error to each observation.
Within the regulatory arena, specific recommen- dations have been forwarded with regard to as-
say performance [38]
. For example, the guidance specifies that the error and the CV should not ex-
ceed 15, except at the lower limit of quantifica- tion, where error and CV should not exceed 20.
Based upon these recommendations, the program includes an option to define confidence limits about
the ratio of the true versus observed values. The coding for this is as follows:
1. measerr = 0: this implies that no measurement
error will be added to the simulated drug con- centrations.
2. measerr = 1: this implies that a multiplicative
measurement error is added to each simulated drug concentration.
To have a 99 chance of obtaining ‘‘measured’’ values that fall between 80 and 125 of the true
concentration, the coding would be as follows: 99 chance of being within 80 and 125 of the
true concentration; ptail = 1 − 1 − .992;
zvalue = probitptail; logtop = log1.25;
note ln.8 = −logtop.
To specify greater error e.g., 80 chance of falling within the limits of 70 and 143, the coding
would be modified as follows: 80 chance of being within 70 and 143 of the
true concentration; ptail = 1 − 1 − .802;
zvalue = probitptail; logtop = log1.43;
note ln.7 = −logtop.
Alternatively, the user can modify this portion of the program to describe any type of error model
deemed appropriate. For example, one can employ the more complex error models e.g., quadratic
equations such as those described by Jelliffe et al. for the gentamycin emit assay
[39] . The char-
acteristics of the error pattern become particularly important when simulating the use of sparse blood
samples, as may occur when studying fish or other small animal species. In these cases, where one or
two samples represent the total information ob- tained on a particular subject, ignoring the pres-
ence of a nonlinear error pattern such as that asso- ciated with the emit assay can result in the genera-
tion of drug concentrations that incorrectly suggest the presence of multimodal distributions
[40] .
3.7. Setting the lower limit of quantification
Validated analytical methods specify an LOQ be- low which the quantification of drug concentrations
is deemed unreliable. Generally, CVM recommends that for single dose pharmacokinetic investigations,
the AUC estimate should not extend beyond the last blood sampling time associated with drug concen-
trations at or above the LOQ AUC
0—last
. Therefore, this program is designed to allow the user to spec-
ify an LOQ coded as ‘‘loquant’’ that serves as the boundary at which AUC estimates are truncated
i.e., for generating AUC
0—last
. The use of this trun- cation can be valuable for determining the fre-
quency and duration of blood samples, allowing the investigator to explore the percentage of the popu-
lation that will have quantifiable concentrations out to the specified sampling time. Alternatively, the
program allows for drug concentrations to be fac- tored into the AUC estimate as some specified value
when the simulated concentrations drop below the LOQ. This option is coded as ‘‘lowlim’’. If selected,
all concentrations falling below the ‘‘lowlim’’ are read as the concentration termed ‘‘lowlimv’’. For
example, if the user wishes all concentrations that fall below the limit of 5 gmL to be factored into
the AUC estimate as 1 gmL, the coding would be as follows:
lowlim = 5; lowlimv= 1;
The latter function should not be used when sim- ulating bolus administrations due to the error that
can be introduced into the AUC estimates i.e., profiles may be artificially extended well beyond
the time when concentrations truly approach zero. However, this function may be valuable when sim-
ulating conditions resulting in multiple peaks and troughs e.g., when using the random input func-
tion. By allowing for multiple simulations using the same seeds and parameter estimates, the investiga-
tor can determine ways to optimize blood sampling times and to minimize the bias associated with esti-
mating AUC values when some samples drop below the LOQ.
3.8. Number of replications
No less than three replications can be specified for each set of iterations. The maximum number
of replicates is determined by the period of the random number generator 2
31
and the number of subjects included in each treatment group. SAS
can easily handle over 1,000,000 replications with
A SASIML program for simulating pharmacokinetic data 47
n = 1000 or more per treatment, although computa-
tion time may be prohibitive.
3.9. Subject number
The number of subjects in the test and reference group can be varied independently. The subject
numbers must be specified in the beginning of the program.
3.10. Dosing options
The user can specify the administration of either single or multiple doses, and each dose can be dis-
pensed as either a bolus or as multiple random in- puts. The latter function allows for the simulation
of drug administration in feed and water, or the input characteristics of some growth promoting im-
plants.
The type of dosing method must be defined. If a fixed schedule of dose inputs is to be simulated,
the code is ‘‘dosetype = 1’’. If a random sched- ule of dose inputs is to be simulated, the code is
‘‘dosetype = 2’’. Most importantly, while the selec- tion of a fixed or random dosing schedule covers
both treatments, the actual schedule of input can differ between treatment groups, even when using
a fixed dosing option.
1. Fixed dosing schedule, single bolus: The num-
ber of doses ndose, time of dosing dosetim and amount of each bolus dose amtdose must
be defined for both treatment groups. The num- ber following the term e.g., dosetim1 versus
dosetim2
indicates the treatment for which this dose condition applies. If the profiles be-
ing simulated are single bolus administrations, ‘‘dosetim’’ must include the time of the first
administration called time zero and some time well beyond the last sample. So, for example,
if treatment 1 is to be administered as a single 100 mg bolus dose at time zero, the coding will
read as follow:
ndose1
= 1;
dosetim1
= {0, 1000};
amtdose1
= {100, 0};
lasttime
= 24;
The term lasttime pertains to the random dos- ing rather than fixed dosing schedules. There-
fore, for fixed dosing schedules, lasttime can be specified as any time after the last dose. For a
description of the algorithm using this term, re- fer to Section
4 on random inputs.
Note that the coding includes some dose 0 and timepoint 1000 after the last sampling time.
This is needed to terminate the simulation. 2. Fixed dose, repeat administrations: For multi-
ple administrations e.g., once daily for 3 days, the coding for treatment 1 would be:
ndose1 = 3;
dosetim1 = {0, 24, 48, 1000};
amtdose1 = {100, 100, 100, 0};
lasttime = 72;
3. Fixed dosing schedule simulating sporadic in- put
: An example of when this may be employed is when there is prior information regarding the
diurnal feeding characteristics of a particular species. The fixed schedule option can be mod-
ified to reflect this feeding behavior by varying the times and amount of drug input throughout
the day. For example, let’s say that we want to simulate the profiles resulting from the ad-
ministration of medicated feed to barrows. In this scenario, we will assume that the total daily
dose is 910 mg. Based upon information on swine feeding behavior, we will assume that 75 of
this intake occurs between 07:00 a.m. and 07:00 p.m.
[41,42] , that the dose is equally distributed
between seven bolus inputs 130 mg per dose, and that five of the seven inputs occur between
07:00 a.m. and 07:00 p.m. We will further as- sume that the medicated feed is administered
daily for three consecutive days. In this case considering treatment 1, dosetim1 would be
written as follows:
ndose1 = 21;
dosetim1 = {0, 2, 4, 6, 8, 13, 18, 24, 26, 28,
30, 32, 37, 42, 48, 50, 52, 54, 56, 61, 66, 1000};
amtdose1
= {130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
130, 130, 130, 130, 130, 130, 0}; lasttime
= 72. The program also allows for the assignment
of fewer but unequal doses. For example, the user could assign four fixed doses per day
with amounts varying with each dose [e.g., 07:00 a.m. hour 0 = 400 mg, 12:00 p.m. hour
5 = 300 mg, 04:00 p.m. hour 9 = 150 mg, and 09:00 p.m. hour 14 = 60 mg]. Repeating this pat-
tern across three sequential days, the com- mand codes treatment 2 would be written as
follows:
ndose2 = 12;
dosetim2 = {0, 5, 9, 14, 24, 29, 33, 38, 48,
53, 57, 62, 1000}; amtdose1
= {400, 300, 150, 60, 400, 300, 150, 60, 400, 300, 150, 60, 0};
lasttime
= 72.
Since ndose, dosetim, and amtdose are defined for each treatment, profiles associated with very
different input characteristics e.g., comparing
48 E. Russek-Cohen et al.
drug administered in food versus drinking water can be compared.
4. Random dosing schedule: The random aspect of this input function is that the user can specify
a given number of ‘‘doses’’ or ‘‘hits’’ during a specified time interval, and each ‘‘hit’’ can be
random both in terms of its time of occurrence and the amount administered. This can be useful
for simulating release from growth promoting implants, or drug delivery in feed and water.
For example, let us assume that the total dose totdose is 100.0 mg and that this dose is ad-
ministered once daily for three consecutive days or 33.3 mg per day nfractn = 3 dosing intervals,
dfrac
= totdosenfractn = 1003 = 33.3 mg, last- time
= 72 h, tfrac = lasttimenfractn = 723 = 24.
The dose received over each interval is ran- domly administered five times numimp = 5. A
uniform random number generator determines when during the 24 h dosing interval the five
inputs are administered. These times are then sorted. The amount of dose given at each of
the five times is determined by generating four numimp − 1 = 5 − 1 = 4 random numbers to set
the fraction of the 33.3 mg dose to be given. The fifth or last dose is the remainder of the
33.3 mg amount. In our current scenario, the dosing interval is
72 h lasttime = 72, which is divided into three daily doses nfractn = 3, causing tfrac = 24. The
user then specifies the number of random inputs numimp = 5 that occur within each period. So,
if numimp = 5 and nfractn = 3 then there are 15 total doses numimp × nfractn = 5 × 3 = 15
per animal. The total dose is 100 mg tot- dose
and the dose per period is 33.3 mg
dfrac = totdosenfractn = 1003 = 33.3. This is spelled it out within the routine termed
rantime
.
3.11. Sampling times