Documentation Example 1 for PROC NLMIXED

/****************************************************************/
/*          S A S   S A M P L E   L I B R A R Y                 */
/*                                                              */
/*    NAME: nlmex1                                              */
/*   TITLE: Documentation Example 1 for PROC NLMIXED            */
/*          One-Compartment Model with Pharmacokinetic Data     */
/* PRODUCT: STAT                                                */
/*  SYSTEM: ALL                                                 */
/*    KEYS: Continuous, normal response                         */
/*          Correlated random effects                           */
/*   PROCS: NLMIXED                                             */
/*    DATA: Theophylline data, Pinheiro and Bates (1995)        */
/*                                                              */
/* SUPPORT: Oliver Schabenberger                                */
/*     REF:                                                     */
/*    MISC:                                                     */
/****************************************************************/

data theoph;
  input subject time conc dose wt;
  datalines;
 1  0.00  0.74 4.02 79.6
 1  0.25  2.84 4.02 79.6
 1  0.57  6.57 4.02 79.6
 1  1.12 10.50 4.02 79.6
 1  2.02  9.66 4.02 79.6
 1  3.82  8.58 4.02 79.6
 1  5.10  8.36 4.02 79.6
 1  7.03  7.47 4.02 79.6
 1  9.05  6.89 4.02 79.6
 1 12.12  5.94 4.02 79.6
 1 24.37  3.28 4.02 79.6
 2  0.00  0.00 4.40 72.4
 2  0.27  1.72 4.40 72.4
 2  0.52  7.91 4.40 72.4
 2  1.00  8.31 4.40 72.4
 2  1.92  8.33 4.40 72.4
 2  3.50  6.85 4.40 72.4
 2  5.02  6.08 4.40 72.4
 2  7.03  5.40 4.40 72.4
 2  9.00  4.55 4.40 72.4
 2 12.00  3.01 4.40 72.4
 2 24.30  0.90 4.40 72.4
 3  0.00  0.00 4.53 70.5
 3  0.27  4.40 4.53 70.5
 3  0.58  6.90 4.53 70.5
 3  1.02  8.20 4.53 70.5
 3  2.02  7.80 4.53 70.5
 3  3.62  7.50 4.53 70.5
 3  5.08  6.20 4.53 70.5
 3  7.07  5.30 4.53 70.5
 3  9.00  4.90 4.53 70.5
 3 12.15  3.70 4.53 70.5
 3 24.17  1.05 4.53 70.5
 4  0.00  0.00 4.40 72.7
 4  0.35  1.89 4.40 72.7
 4  0.60  4.60 4.40 72.7
 4  1.07  8.60 4.40 72.7
 4  2.13  8.38 4.40 72.7
 4  3.50  7.54 4.40 72.7
 4  5.02  6.88 4.40 72.7
 4  7.02  5.78 4.40 72.7
 4  9.02  5.33 4.40 72.7
 4 11.98  4.19 4.40 72.7
 4 24.65  1.15 4.40 72.7
 5  0.00  0.00 5.86 54.6
 5  0.30  2.02 5.86 54.6
 5  0.52  5.63 5.86 54.6
 5  1.00 11.40 5.86 54.6
 5  2.02  9.33 5.86 54.6
 5  3.50  8.74 5.86 54.6
 5  5.02  7.56 5.86 54.6
 5  7.02  7.09 5.86 54.6
 5  9.10  5.90 5.86 54.6
 5 12.00  4.37 5.86 54.6
 5 24.35  1.57 5.86 54.6
 6  0.00  0.00 4.00 80.0
 6  0.27  1.29 4.00 80.0
 6  0.58  3.08 4.00 80.0
 6  1.15  6.44 4.00 80.0
 6  2.03  6.32 4.00 80.0
 6  3.57  5.53 4.00 80.0
 6  5.00  4.94 4.00 80.0
 6  7.00  4.02 4.00 80.0
 6  9.22  3.46 4.00 80.0
 6 12.10  2.78 4.00 80.0
 6 23.85  0.92 4.00 80.0
 7  0.00  0.15 4.95 64.6
 7  0.25  0.85 4.95 64.6
 7  0.50  2.35 4.95 64.6
 7  1.02  5.02 4.95 64.6
 7  2.02  6.58 4.95 64.6
 7  3.48  7.09 4.95 64.6
 7  5.00  6.66 4.95 64.6
 7  6.98  5.25 4.95 64.6
 7  9.00  4.39 4.95 64.6
 7 12.05  3.53 4.95 64.6
 7 24.22  1.15 4.95 64.6
 8  0.00  0.00 4.53 70.5
 8  0.25  3.05 4.53 70.5
 8  0.52  3.05 4.53 70.5
 8  0.98  7.31 4.53 70.5
 8  2.02  7.56 4.53 70.5
 8  3.53  6.59 4.53 70.5
 8  5.05  5.88 4.53 70.5
 8  7.15  4.73 4.53 70.5
 8  9.07  4.57 4.53 70.5
 8 12.10  3.00 4.53 70.5
 8 24.12  1.25 4.53 70.5
 9  0.00  0.00 3.10 86.4
 9  0.30  7.37 3.10 86.4
 9  0.63  9.03 3.10 86.4
 9  1.05  7.14 3.10 86.4
 9  2.02  6.33 3.10 86.4
 9  3.53  5.66 3.10 86.4
 9  5.02  5.67 3.10 86.4
 9  7.17  4.24 3.10 86.4
 9  8.80  4.11 3.10 86.4
 9 11.60  3.16 3.10 86.4
 9 24.43  1.12 3.10 86.4
10  0.00  0.24 5.50 58.2
10  0.37  2.89 5.50 58.2
10  0.77  5.22 5.50 58.2
10  1.02  6.41 5.50 58.2
10  2.05  7.83 5.50 58.2
10  3.55 10.21 5.50 58.2
10  5.05  9.18 5.50 58.2
10  7.08  8.02 5.50 58.2
10  9.38  7.14 5.50 58.2
10 12.10  5.68 5.50 58.2
10 23.70  2.42 5.50 58.2
11  0.00  0.00 4.92 65.0
11  0.25  4.86 4.92 65.0
11  0.50  7.24 4.92 65.0
11  0.98  8.00 4.92 65.0
11  1.98  6.81 4.92 65.0
11  3.60  5.87 4.92 65.0
11  5.02  5.22 4.92 65.0
11  7.03  4.45 4.92 65.0
11  9.03  3.62 4.92 65.0
11 12.12  2.69 4.92 65.0
11 24.08  0.86 4.92 65.0
12  0.00  0.00 5.30 60.5
12  0.25  1.25 5.30 60.5
12  0.50  3.96 5.30 60.5
12  1.00  7.82 5.30 60.5
12  2.00  9.72 5.30 60.5
12  3.52  9.75 5.30 60.5
12  5.07  8.57 5.30 60.5
12  7.07  6.59 5.30 60.5
12  9.03  6.11 5.30 60.5
12 12.05  4.57 5.30 60.5
12 24.15  1.17 5.30 60.5
;

proc nlmixed data=theoph;
   parms beta1=-3.22 beta2=0.47 beta3=-2.45
         s2b1 =0.03  cb12 =0    s2b2 =0.4 s2=0.5;
   cl   = exp(beta1 + b1);
   ka   = exp(beta2 + b2);
   ke   = exp(beta3);
   pred = dose*ke*ka*(exp(-ke*time)-exp(-ka*time))/cl/(ka-ke);
   model conc ~ normal(pred,s2);
   random b1 b2 ~ normal([0,0],[s2b1,cb12,s2b2]) subject=subject;
run;

/* Cholesky-root parameterization as in Pinheiro and Bates (1995) */

proc nlmixed data=theoph;
   parms ll1=-1.5 l2=0 ll3=-0.1 beta1=-3 beta2=0.5 beta3=-2.5 ls2=-0.7;
   s2   = exp(ls2);
   l1   = exp(ll1);
   l3   = exp(ll3);
   s2b1 = l1*l1*s2;
   cb12 = l2*l1*s2;
   s2b2 = (l2*l2 + l3*l3)*s2;
   cl   = exp(beta1 + b1);
   ka   = exp(beta2 + b2);
   ke   = exp(beta3);
   pred = dose*ke*ka*(exp(-ke*time)-exp(-ka*time))/cl/(ka-ke);
   model conc   ~ normal(pred,s2);
   random b1 b2 ~ normal([0,0],[s2b1,cb12,s2b2]) subject=subject;
run;