From: Frank Harrell <f.harrell_at_vanderbilt.edu>

Date: Thu, 17 Mar 2011 19:06:57 -0700 (PDT)

*>
*

> In general, this is right. The middle 95% excludes the 2.5% on the

*> ends, so for 1000 samples that is excluding the 25 most extreme values.
*

*>
*

*>
*

> I don't know why you would necessarily expect the variance to be

*> minimal. It is what it is. Also, I don't know why you took 20 of each
*

*> rather than just a random sub-sample.
*

*>
*

*>
*

> Maybe pull out 10 of your bootstrap samples and look at the ROC curves

*> themselves and their associated AUC. That might give you a sense as to
*

*> the variability that is possible (which is reflected in the confidence
*

*> interval).
*

*>
*

*> As a final note, you are reinventing the wheel. There are several
*

*> packages that deal with ROC curves. Two I like in particular are ROCR
*

*> and pROC. The latter even has built in routines for computing
*

*> confidence intervals for the AUC using bootstrap replication.
*

*>
*

*>
*

*> --
*

> Brian S. Diggs, PhD

*> Senior Research Associate, Department of Surgery
*

*> Oregon Health & Science University
*

*>
*

*> ______________________________________________
*

*> R-help_at_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.
*

*>
*

Frank Harrell

Department of Biostatistics, Vanderbilt University

Date: Thu, 17 Mar 2011 19:06:57 -0700 (PDT)

Taby,

At the end of your note are you referring to the bootstrap confidence intervals in the "external validation" case, i.e., not corrrected for overfitting? If so you can get that without the bootstrap (e.g., Hmisc package rcorr.cens function).

You can get bootstrap overfitting-corrected ROC areas ("C-index") easily using the rms package's validate function, though not confidence intervals.

Frank

Brian Diggs wrote:

*>
*

> Taby,

*>
**> First, it is better to reply to the whole list (which I have included on
**> this reply); there is a better chance of someone helping you. Just
**> because I could help with one aspect does not mean I necessarily can (or
**> have the time to) help with more.
**>
**> Further comments are inline below.
**>
**> On 3/16/2011 10:45 PM, taby gathoni wrote:
*

>> Hi Brian, >> >> Thanks for this comment I will action on this. Thanks also for the >> comment, Andrija also advised the same thing and it worked like magic. >> >> My next cause of action was to get the confidence intervals with the >> AUC values. >> >> For the confidence intervals i did them manually. for 99% i cut out >> first 5 and last 5 after ranking the ACs while for 95% CI i cut out >> first 25 and last 25

> In general, this is right. The middle 95% excludes the 2.5% on the

>> and this is my output >> >> >> Upper bound Lower Bound >> >> at 99% CI 0.8175 0.50125 >> >> at 95% CI 0.7775 0.50375 >> >> from my understanding because there are small samples of 20 GOOD and >> 20 BAD the variations in the upper and lower bound should be minimal in >> the 1000 samples.

> I don't know why you would necessarily expect the variance to be

>> If you get time, Would you be in a position to assist me find out >> why i have such huge variations? Thank you for taking time to respond.

> Maybe pull out 10 of your bootstrap samples and look at the ROC curves

>> Kind regards, >> Taby >> >> >> --- On Wed, 3/16/11, Brian Diggs<diggsb_at_ohsu.edu> wrote: >> >> From: Brian Diggs<diggsb_at_ohsu.edu> >> Subject: Re: calculating AUCs for each of the 1000 boot strap samples >> To: tabieg_at_yahoo.com >> Cc: "R help"<r-help_at_r-project.org> >> Date: Wednesday, March 16, 2011, 10:42 PM >> >> On 3/16/2011 8:04 AM, taby gathoni wrote: >>>> data<-data.frame(id=1:(165+42),main_samp$SCORE, >>>> x=rep(c("BAD","GOOD"),c(42,165))) >>>>> f<-function(x) { >>> + str.sample<-list() >>> + for (i in 1:length(levels(x$x))) >>> + { >>> + str.sample[[i]]<-x[x$x==levels(x$x)[i] >>> ,][sample(tapply(x$x,x$x,length)[i],20,rep=T),] >>> + } >>> + strat.sample<-do.call("rbind",str.sample) >>> + return(strat.sample$main_samp.SCORE) >>> + } >>>>> f(data) >>> [1] >>> 706 633 443 843 756 743 730 843 706 730 606 743 768 768 743 763 608 >>> 730 >>> 743 743 530 813 813 831 793 900 793 693 900 738 706 831 >>> [33] 818 758 718 831 768 638 770 738 >>>>> repl<-list() >>>>> auc<-list() >>>>> for(i in 1:1000) >>> + { >>> + repl[[i]]<-f(data) >>> + >>> auc[[i]]<-colAUC(repl[[i]],rep(c("BAD","GOOD")),plotROC=FALSE,alg="ROC") >>> + } >>> Error in >>> colAUC(repl[[i]], rep(c("BAD", "GOOD")), plotROC = FALSE, alg = >>> "ROC") : >>> colAUC: length(y) and nrow(X) must be the same Thanks alotTaby >> >> I think (though I can't check because the example is not reproducible >> without main_samp$SCORE), that the problem is that the second argument to >> colAUC should be >> rep(c("BAD", "GOOD"), c(20,20)) >> The error is that repl[[i]] is length 40 while rep(c("BAD", "GOOD")) is >> length 2. >> >> P.S. When giving an example, it is better to not include the prompts and >> continuation prompts. Copy it from the script rather than the output. >> Relevant output can then be included as script comments (prefixed with >> #). That makes cutting-and-pasting to test easier. >> >> -- Brian S. Diggs, PhD >> Senior Research Associate, Department of Surgery >> Oregon Health& Science University >>

> Brian S. Diggs, PhD

Frank Harrell

Department of Biostatistics, Vanderbilt University

-- View this message in context: http://r.789695.n4.nabble.com/calculating-AUCs-for-each-of-the-1000-boot-strap-samples-tp3382039p3386107.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ R-help_at_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.Received on Fri 18 Mar 2011 - 02:16:41 GMT

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.2.0, at Fri 18 Mar 2011 - 02:20:23 GMT.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*