[R] drc results differ for different versions

Hans Vermeiren Hans.Vermeiren at glpg.com
Fri May 22 12:15:46 CEST 2009

Yes, thanks that's very useful
Apart from checking the fit with nls() as you suggested, I've also used Prism, which gave the following results

Equation 1	
Best-fit values	
     BOTTOM	10.96
     TOP	106.4
     LOGEC50	-5.897
     HILLSLOPE	0.9501
     EC50	1.2670e-006
Std. Error	
     BOTTOM	2.196
     TOP	9.337
     LOGEC50	0.1439
     HILLSLOPE	0.2270
95% Confidence Intervals	
     BOTTOM	6.301 to 15.61
     TOP	86.62 to 126.2
     LOGEC50	-6.202 to -5.592
     HILLSLOPE	0.4689 to 1.431
     EC50	6.2750e-007 to 2.5560e-006
Goodness of Fit	
     Degrees of Freedom	16
     R²	0.9622
     Absolute Sum of Squares	787.5
     Sy.x	7.015
     Number of X values	20
     Number of Y replicates	1
     Total number of values	20
     Number of missing values	0

In other words: also in line with the drc 1.6-3 and nls() results
As for the scaling: yes this is useful because I can't predict whether concentrations are in molar, micromolar,..., right now I indeed scaled dose-values "manually", it's better/ more robust when the drm-function takes care of that
I suppose this also means I don't have to do the log transformation anymore?
Thanks (both of you) for your swift feedback


-----Original Message-----
From: Christian Ritz [mailto:ritz at life.ku.dk] 
Sent: vrijdag 22 mei 2009 11:30
To: Hans Vermeiren
Cc: r-help at r-project.org; marc_schwartz at me.com
Subject: Re: [R] drc results differ for different versions

Hi Hans,

I hope I can resolve your problems below (Marc, thank you very much for cc'ing me on your
initial response!).

Have a look at the following R lines:

## Fitting the model using drm() (from the latest version)
m1<- drm(response ~ dose, data = d, fct = LL.4())

## Checking the fit by using nls()
## (we have very good guesses for the parameter estimates)
m2 <- nls(response ~ c + (d - c)/(1 + (dose/e)^b), data=d, start=list(b=-0.95, c=10,
d=106, e=1.2745e-06))

The standard errors agree quite well. The minor discrepancies between to two fits are
attributable to different numerical approximations of the variance-covariance matrix being
used in drm() and nls().

So I would use the latest version of 'drc', especially for datasets with really small
doses. One recent change to drm() was to incorporate several layers of scaling prior to
estimation (as well as subsequent back scaling after estimation):

1) scaling of parameters with the same scale as the x axis
2) scaling of parameters with the same scale as the y axis
3) scaling of parameters in optim()

The effect of scaling is to temporarily "convert" the dataset (and the model) to scales
that are more convenient for the estimation procedure. Any feedback on this would be much

Therefore it should also not be necessary to manually do any scaling prior to using drm()
(like what you did). Compare, for instance, your specification of drm() to mine above.

Is this explanation useful?!


This e-mail and its attachment(s) (if any) may contain confidential and/or proprietary information and is intended for its addressee(s) only. Any unauthorized use of the information contained herein (including, but not limited to, alteration, reproduction, communication, distribution or any other form of dissemination) is strictly prohibited. If you are not the intended addressee, please notify the orginator promptly and delete this e-mail and its attachment(s) (if any) subsequently. 

Galapagos nor any of its affiliates shall be liable for direct, special, indirect or consequential damages arising from alteration of the contents of this message (by a third party) or as a result of a virus being passed on.

More information about the R-help mailing list