On Aug 14, 2014, at 7:17 AM, Jan Stanstrup wrote:

> Thank you very much for this snippet!
> 
> I used it on my data and indeed it does give intervals which appear quite 
> realistic (script and data here 
> https://github.com/stanstrup/retpred_shiny/blob/master/retdb_admin/make_predictions_CI_tests.R).
> I also tried getting the intervals with predict.cobs but the methods 
> available there gave very narrow bands.
> The only problem I can see is that the fit tend to be a bit on the smooth 
> side. See for example the upper interval limits at x = 2 to 3 and x =1.2. If 
> then I set lambda to something low like 0.05 the band narrows to nearly 
> nothing when there are few points. For example at x = 2.5. Is there some 
> other parameter I would be adjusting?
> 
Try specifying the number and location of the knots (using my example data):

> Rbs.9 <- cobs(age,analyte,constraint="increase",tau=0.9, nknots=6, 
> knots=seq(60,85,by=5))
> plot(age,analyte, ylim=c(0,2000))
>  lines(predict(Rbs.9), col = 2, lwd = 1.5)



-- 
David.

> 
> 
> ---------------------- 
> Jan Stanstrup 
> Postdoc 
> 
> Metabolomics 
> Food Quality and Nutrition 
> Fondazione Edmund Mach 
> 
> 
> 
> On 08/14/2014 02:02 AM, David Winsemius wrote:
>> 
>> On Aug 12, 2014, at 8:40 AM, Bert Gunter wrote:
>> 
>>> PI's of what? -- future individual values or mean values?
>>> 
>>> I assume quantreg provides quantiles for the latter, not the former.
>>> (See ?predict.lm for a terse explanation of the difference).
>> 
>> I probably should have questioned the poster about what was meant by a 
>> "prediction interval for a monotonic loess curve". I was suggesting quantile 
>> regression for estimation of a chosen quantile, say the 90th percentile. I 
>> was thinking it could produce the analogue of a 90th percentile value (with 
>> no         reference to a mean value or use of presumed distribution within 
>> adjacent windows of say 100-150 points. I had experience using the cobs 
>> function (in the package of the same name) as Koenker illustrates:
>> 
>> age <- runif(1000,min=60,max=85)
>>  
>>  analyte <- rlnorm(1000,4*(age/60),age/60)
>>  plot(age,analyte)
>> 
>>  library(cobs)
>>  library(quantreg)
>>  Rbs.9 <- cobs(age,analyte, constraint="increase",tau=0.9) 
>> Rbs.median <- cobs(age,analyte,constraint="increase",tau=0.5)
>> 
>> png("cobs.png"); plot(age,analyte, ylim=c(0,2000))
>>  lines(predict(Rbs.9), col = "red", lwd = 1.5)
>> lines(predict(Rbs.median), col = "blue", lwd = 1.5)
>>  dev.off()
>> <Mail Attachment.png>
>> 
>> -- David
>> 
>> 
>>> obtainable from bootstrapping but the details depend on what you are
>>> prepared to assume. Consult references or your local statistician for
>>> help if needed.
>>> 
>>> -- Bert
>>> 
>>> Bert Gunter
>>> Genentech Nonclinical Biostatistics
>>> (650) 467-7374
>>> 
>>> "Data is not information. Information is not knowledge. And knowledge
>>> is certainly not wisdom."
>>> Clifford Stoll
>>> 
>>> 
>>> 
>>> 
>>> On Tue, Aug 12, 2014 at 8:20 AM, David Winsemius <dwinsem...@comcast.net> 
>>> wrote:
>>>> 
>>>> On Aug 12, 2014, at 12:23 AM, Jan Stanstrup wrote:
>>>> 
>>>>> Hi,
>>>>> 
>>>>> I am trying to find a way to estimate prediction intervals (PI) for a 
>>>>> monotonic loess curve using bootstrapping.
>>>>> 
>>>>> At the moment my approach is to use the boot function from the boot 
>>>>> package to bootstrap my loess model, which consist of loess + monoproc 
>>>>> from the monoproc package (to force the fit to be monotonic which gives 
>>>>> me much improved results with my particular data). The output from the 
>>>>> monoproc package is simply the fitted y values at each x-value.
>>>>> I then use boot.ci (again from the boot package) to get confidence 
>>>>> intervals. The problem is that this gives me confidence intervals (CI) 
>>>>> for the "fit" (is there a proper way to specify this?) and not a 
>>>>> prediction interval. The interval is thus way too optimistic to give me 
>>>>> an idea of the confidence interval of a predicted value.
>>>>> 
>>>>> For linear models predict.lm can give PI instead of CI by setting 
>>>>> interval = "prediction". Further discussion of that here:
>>>>> http://stats.stackexchange.com/questions/82603/understanding-the-confidence-band-from-a-polynomial-regression
>>>>> http://stats.stackexchange.com/questions/44860/how-to-prediction-intervals-for-linear-regression-via-bootstrapping.
>>>>> 
>>>>> However I don't see a way to do that for boot.ci. Does there exist a way 
>>>>> to get PIs after bootstrapping? If some sample code is required I am more 
>>>>> than happy to supply it but I thought the question was general enough to 
>>>>> be understandable without it.
>>>>> 
>>>> 
>>>> Why not use the quantreg package to estimate the quantiles of interest to 
>>>> you? That way you would not be depending on Normal theory assumptions 
>>>> which you apparently don't trust. I've used it with the `cobs` function 
>>>> from the package of the same name to implement the monotonic constraint. I 
>>>> think there is a worked example in the quantreg package, but since I 
>>>> bought Koenker's book, I may be remembering from there.
>>>> --
>>>> 
>>>> David Winsemius
>>>> Alameda, CA, USA
>>>> 
>>>> ______________________________________________
>>>> R-help@r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>> PLEASE do read the posting guide 
>>>> http://www.R-project.org/posting-guide.html
>>>> and provide commented, minimal, self-contained, reproducible code.
>> 
>> David Winsemius
>> Alameda, CA, USA
>> 
> 
> <boot2ci_PI.png><cobs.png>

David Winsemius
Alameda, CA, USA

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to