Search code examples
rcurve-fittingvariancepoissondrc

Bioassay dose response fitting with heteroscedastic data


I am using the drc package in R to fit dose response curves (4-param logistic: LL.4) for biological assays. The data I collect is typically heteroscedastic (example image below). I am looking for ways to account for this when calling drm. I have found three possibilities that seem promising:

  1. Use the type="Poisson" parameter to drm. However, over- and under-dispersion are probable for many assays so this isn't likely to be a general solution
  2. Follow drm with a call to drc.boxcox. This seems to be more general and could work.
  3. Use the "varPower" tranform that used to be implemented in drc.multdrc and in drc.drm before it was commented out (search for "varPower" in the drm source). I could un-comment those sections to restore the varPower functionality.

My questions are, what is the most accepted way to handle this? Also, does anyone know why varPower variance handling was removed from the drc package?

Example code:

# Naive method 
a <- drm(y~x,data=subs, fct=LL.4(),control=ctl, start=params)
#Poisson Method
a <- drm(y~x,data=subs, fct=LL.4(),control=ctl, start=params, type="Poisson")
#BOXCOX method
a <- drm(y~x,data=subs, fct=LL.4(),control=ctl, start=params)
a2 <- boxcox(a)

Example Data:

enter image description here


Solution

  • I found the answer to this question in this paper by the authors of the drc package. In the paper they comment:

    Weights may be used for addressing variance heterogeneity in the response. However, the transform-both-sides approach should be preferred over using often very imprecisely determined weights

    The "transform-both-sides" approach refers to using the drc.boxcox function (code in the original question).

    Further advice was provided in a personal communication with one of the authors of the drc package. He advised that presently, the medrc R package is better suited for dose response analysis in R.