How to create a (total) Ghrelin calibration curve?

Computing Ghrelin calibration curve using R

This article describes creating calibration curve, and measuring the total-ghrelin concentration

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:


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.


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