[R] predict.drm not generating confidence intervals
Peter Ehlers
ehlers at ucalgary.ca
Sun Nov 28 23:19:34 CET 2010
Brant,
See below.
On 2010-11-28 12:25, David Winsemius wrote:
> Puzzled. Why are the data you offer to predict() for the independent
> variable, conc, all NA's? Is there something reversed or inverted
> about how drc functions handle formulas.
>
> -- David. On Nov 28, 2010, at 2:33 PM, Brant Inman wrote:
>> > R-helpers,
>> >
>> > I recently submitted a help request for the predict.drm function
>> > found in the drc package. I am still having issues with the
>> > function and I am submitting reproducible code hoping that somebody
>> > can help me figure out what is going on.
>> >
>> > --------
>> > library(drc)
>> >
>> > # Fit a 4 parameter logistic model to ryegrass dataset
>> > fit<- drm(rootl ~ conc, data = ryegrass, fct = LL.4())
>> > summary(fit)
>> >
>> > # Generate a fake dataset for prediction
>> > newdt<- data.frame( matrix(c(seq(0.2, 9, 0.01), rep(NA,881)),
>> > ncol=2))
>> > colnames(newdt)<- c('rootl', 'conc')
>> >
>> > # Generate prediction intervals and confidence intervals
>> > prd.p<- predict(fit, newdata=newdt, interval='prediction')
>> > prd.c<- predict(fit, newdata=newdt, interval='confidence')
>> >
>> > # Check output
>>> >> head(prd.p)
>> > Prediction Lower Upper
>> > [1,] 7.790812 NA NA
>> > [2,] 7.790476 NA NA
>> > [3,] 7.790106 NA NA
>> > [4,] 7.789702 NA NA
>> > [5,] 7.789262 NA NA
>> > [6,] 7.788784 NA NA
>> >
>>> >> head(prd.c)
>> > Prediction Lower Upper
>> > [1,] 7.790812 NA NA
>> > [2,] 7.790476 NA NA
>> > [3,] 7.790106 NA NA
>> > [4,] 7.789702 NA NA
>> > [5,] 7.789262 NA NA
>> > [6,] 7.788784 NA NA
>> >
>> > --------
>> >
>> > There appears to be a problem with the predict.drc function. This
>> > code previous generated confidence and prediction intervals in
>> > columns 2 and 3 of the prediction matrices but now fails for reasons
>> > unknown to me. Anyone have an idea of what is going on and how I
>> > can remedy the situation?
As David points out, you seem to have your dose and response
mixed up. But even assuming that you mean to predict rootl
from conc, the predict.drc function needs to be used in a
certain way (and that is not clear in the documentation).
Try this:
fit <- drm(rootl ~ conc, data = ryegrass, fct = LL.4())
newdat <- data.frame(conc = seq(0, 30, len=101), apples=1)
ypred <- predict(fit, newdata=newdat, interval="confidence")
head(ypred, 3)
Prediction Lower Upper
[1,] 7.792958 7.399614 8.186303
[2,] 7.785771 7.400046 8.171495
[3,] 7.736545 7.380584 8.092505
Wondering about the 'apples'? That's just to show that
predict.drc doesn't care what you call your second column.
It seems that predict.drc requires either *no* newdata
or a *two*-variable data.frame in which the first column
(it, too, can have *any* name) contains the dose at which
to predict and the second column contains the 'curveid',
aka the grouping variable (if you have one). In your
case, the grouping reduces to a single group, i.e. a
vector of all '1's.
This could all be made considerably clearer in the documentation.
Peter Ehlers
>> >
>> > Brant Inman
>> >
More information about the R-help
mailing list