How to create a (total) Ghrelin calibration curve?

Computing Ghrelin calibration curve using R

The calibration curve can be created using R, and libracy “drc”. Optionally, one can use library “sfmisc” for formatting of the labels on plot axis.

We will assume a 4-parameter log-logistic model: LL4.png

The R code is attached below.

The example assumes the data to be available in file “ghrelin_conc std_a std_b avg.csv”

The measured data:

Ghrelin (ng/ml) Standard a Standard b
1000000 -0.040596823 -0.052699697
100000 0.136105144 0.119766263
10000 0.61356354 0.606906959
1000 0.846543873 0.839887292
100 0.887693646 0.88345764
0 0.896770802 0.896165658

##### Install libraries

##### Read the data <- read.csv("ghrelin_conc std_a std_b avg.csv") <-[,1:3]
colnames([1:3] <- c("Concentration","Response_1", "Response_2")

##### Reorganize the data <- reshape(, varying=c("Response_1","Response_2"),  direction="long",  v.names=c("Response")) <-[,c("Concentration", "Response")]

##### Fitting the model (4-parameter log-logistic function) <- drm(Response ~ Concentration, data =, fct =  LL.4())

The resultant parameters of a log-logistic equation are:

Model fitted: Log-logistic (ED50 as parameter) (4 parms)
Parameter estimates:
                 Estimate  Std. Error     t-value p-value
b:(Intercept)  9.5057e-01  2.2294e-02  4.2638e+01       0
c:(Intercept) -7.6010e-02  6.9075e-03 -1.1004e+01       0
d:(Intercept)  8.9163e-01  3.3216e-03  2.6843e+02       0
e:(Intercept)  2.5221e+04  7.7727e+02  3.2448e+01       0

The calibration curve can be plotted using the commands below:

##### Plotting a nice plot
par(pty="s", mar=c(5,5,1,1))
plot(, type="confidence", cex.lab=2, axes=F, xlim=c(-10,10^6))
axis(side=1,[1:6,1], labels=pretty10exp([1:6,1]), cex.axis=1.2)
axis(side=2, at=seq(0,1,0.2), labels=seq(0,1,0.2))
plot(, type="all", add=T, pch=21, col="red", lwd=1, cex=2, bg="green")


The parameters of the eqution can be plugged into the formula below (an inverse of the model), and used in Excel, or other spreadsheet program. LL4-inv.png

However, the concentration can be also easily estimated in R using “ED” function of the “drc” library. The code below demonstrates the concentration estimated from the response of 0.1, assuming alpha=0.05. The code returns the estimation, the error, and the condfidence interval.

##### Computing the concentration from the response, for instance for a response=0.1, and alpha=1-0.95
ED(, respLev=0.1, interval="delta", type="absolute", level=0.95)

Created on , Last modified on