NONMEM Users Network Archive

Hosted by Cognigen

RE: Confidence interval calculations

From: Denney, William S. <William.S.Denney>
Date: Thu, 10 Dec 2015 17:33:21 +0000

Hi Dennis,

For this, I’d bootstrap it, apply the function to the bootstrapped results, and use that as your CI.

For more specific steps:

Assuming that:
THETA(1) = intercept
THETA(2) = slope
THETA(3) = value at saturation

LOW = THETA(1) + THETA(2)*Cp

Then upon bootstrapping, you will have many values for the thetas. Those theta values can be used to calculate the critical Cp where the switch from low to high occurs:
Cpcritical = (THETA(3) - THETA(1))/THETA(2)

And, you can generate the Cpcritical values for all bootstrapped runs (Cpcritical_i for bootstrap run i).

Finally, for each of the bootstrap runs, determine the point estimate at Cp = 0, Cp= all Cpcritical_i, and some very high value for Cp (likely max observed Cp). With that, you can summarize the CI at each concentration by determining the quantiles of interest within the simulated values.

R code to do all of this from a bootstrapped data set could look like the following (not tested):

Cpmax <- 5 ## Replace with the maximum observed Cp or whatever maximum you want to have in your figure
d.bootstrap <- read.csv(“bootstrap.results.csv”) ## Assuming that there is one row per bootstrap run and that the columns are named TH1, TH2, and TH3
Cpcritical <- with(d.bootstrap, (TH3-TH1)/TH2)
allconc <- c(0, Cpcritical, Cpmax)
simdata <- data.frame()
for (i in seq_along(d.bootstrap)) {
  tmpsim <- data.frame(index=i, conc=allconc,
     result=pmin(d.bootstrap$TH3[i], d.bootstrap$TH1[i] + d.bootstrap$TH2[i]*allconc)
  simdata <- rbind(simdata, tmpsim)

## For a 90% CI; for other CIs, alter the probs
summaryBy(result~conc, data=simdata, FUN=quantile, probs=c(0.05, 0.5, 0.95))



From: owner-nmusers [mailto:owner-nmusers
Sent: Thursday, December 10, 2015 11:24 AM
To: nmusers
Subject: [NMusers] Confidence interval calculations


I have fit an exposure response model using NONMEM — the optimal model is a segmented two-part regression with Cp on the x-axis and response on the y-axis. The two regression lines intercept at the cutpoint.
The parameters are:
            slope of the left regression
            cutpoint between regressions
            “intercept” — y value at the cutpoint
            slope of the right regression (fixed at zero; models in which the value was estimated yielded similar values for the objective function)

I have been asked to calculate the confidence interval for the response at various Cp values.

Above the cutpoint, this seems straightforward:
            a. if NONMEM yielded standard errors, the only relevant parameter is the y value at the cutpoint and its standard error
            b. if NONMEM did not yield standard errors, the confidence interval could come from either likelihood profiles or bootstrap

My concern is calculating at Cp values below the cutpoint, for which both slope and intercept come into play. Any thoughts as to how to do this in the presence or absence of NONMEM standard errors?
The reason that I mention with / without presence of SE’s is that this model was fit to two different datasets, one of which yielded SE’s, the other not.

Any thoughts on this would be appreciated.


Dennis Fisher MD
P < (The "P Less Than" Company)
Phone: 1-866-PLessThan (1-866-753-7784)
Fax: 1-866-PLessThan (1-866-753-7784)<>

Received on Thu Dec 10 2015 - 12:33:21 EST

The NONMEM Users Network is maintained by ICON plc. Requests to subscribe to the network should be sent to:

Once subscribed, you may contribute to the discussion by emailing: