Date: Fri, 27 Feb 1998 11:14:11 -0600 (CST) From: Bill Simpson <wsimpson@uwinnipeg.ca> To: r-help <r-help@stat.math.ethz.ch> Subject: R-beta: is there a way to get rid of loop? Here is a programming question. The code I am using is quite slow and I was wondering if there is a way to get rid of the for loop. I am dealing with "interaction" in 2x2 table, and am using Edwards's G_I (Likelihood, p. 194). I label the cells in the table as follows stim response "y" "n" total -------------------------------- y hit miss nsignal -------------------------------- n false correct nnoise alarm rejection --------------------------------- Gsens<-function(nhit,nmiss,nfa,ncr) { # Edwards's G_I, measure of interaction, is measure of sensitivity (xlogx(nhit)+xlogx(nmiss)+xlogx(nfa)+xlogx(ncr))-(xlogx(nhit+nmiss)+xlogx(nfa+ncr))-(xlogx(nhit+nfa)+xlogx(nmiss+ncr))+xlogx(nhit+nmiss+nfa+ncr) } BTW I can't figure out how to break the line at 80 cols. I tried \ but it didn't work (error message). The question is about this function. It calculates 95% CI based on Monte Carlo simulation. [Edwards gives no ref on the sampling distrib of G_I] The number of signal trials is binomial random variable with p=.5, so it is simulated that way. This is fine, I can get a vector of 2000 ns numbers that way. However, for each ns I want an associated binomial variate with p=phit. Is there a better way to do this than by looping? Gsens.ci.mc<-function(nhit,nmiss,nfa,ncr) { #monte carlo simulated 95% CI nsignal<-nhit+nmiss nnoise<-nfa+ncr phit<-nhit/nsignal pfa<-nfa/nnoise ns<-rbinom(2000,nsignal,.5) nn<-nsignal+nnoise-ns nh<-NULL nf<-NULL for(i in 1:2000) { nh<-c(nh,rbinom(1,ns[i],phit)) nf<-c(nf,rbinom(1,nn[i],pfa)) } g<-Gsens(nh,ns-nh,nf,nn-nf) quantile(g,c(.025,.975), na.rm=TRUE) } Thanks very much for any help! Bill Simpson -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-help-request@stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._