Dear R-experts, Here below my R code working but really really slowly ! I need 2 hours with my computer to finally get an answer ! Is there a way to improve my R code to speed it up ? At least to win 1 hour ;=) Many thanks ######################################################## library(boot) s<- sample(178:798, 100000, replace=TRUE) mean(s) N <- 1000 out <- replicate(N, { a<- sample(s,size=5) mean(a) dat<-data.frame(a) med<-function(d,i) { temp<-d[i,] f<-mean(temp) g<-var(replicate(50,mean(sample(temp,replace=T)))) return(c(f,g)) } ? boot.out <- boot(data = dat, statistic = med, R = 10000) ? boot.ci(boot.out, type = "stud")$stud[, 4:5] }) mean(out[1,] < mean(s) & mean(s) < out[2,]) ########################################################
I?m wondering if this is an X-Y problem. (A request to do X when the real problem should be doing Y. ) You haven?t explained the goals in natural or mathematical language which is leaving me to wonder why you are doing either sampling or replication (much less doing both within each iteration in the the function given to boot. ) ? David Sent from my iPhone> On Dec 19, 2021, at 3:50 AM, varin sacha via R-help <r-help at r-project.org> wrote: > > ?Dear R-experts, > > Here below my R code working but really really slowly ! I need 2 hours with my computer to finally get an answer ! Is there a way to improve my R code to speed it up ? At least to win 1 hour ;=) > > Many thanks > > ######################################################## > library(boot) > > s<- sample(178:798, 100000, replace=TRUE) > mean(s) > > N <- 1000 > out <- replicate(N, { > a<- sample(s,size=5) > mean(a) > dat<-data.frame(a) > > med<-function(d,i) { > temp<-d[i,] > f<-mean(temp) > g<-var(replicate(50,mean(sample(temp,replace=T)))) > return(c(f,g)) > > } > > boot.out <- boot(data = dat, statistic = med, R = 10000) > boot.ci(boot.out, type = "stud")$stud[, 4:5] > }) > mean(out[1,] < mean(s) & mean(s) < out[2,]) > ######################################################## > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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.
Hello, The code is running very slowly because you are recreating the function in the replicate() loop and because you are creating a data.frame also in the loop. And because in the bootstrap statistic function med() you are computing the variance of yet another loop. This is probably statistically wrong but like David says, without a problem description it's hard to say. Also, why compute variances if they are never used? Here is complete code executing in much less than 2:00 hours. Note that it passes the vector a directly to med(), not a df with just one column. library(boot) set.seed(2021) s <- sample(178:798, 100000, replace = TRUE) mean(s) med <- function(d, i) { temp <- d[i] f <- mean(temp) g <- var(temp) c(Mean = f, Var = g) } N <- 1000 out <- replicate(N, { a <- sample(s, size = 5) boot.out <- boot(data = a, statistic = med, R = 10000) boot.ci(boot.out, type = "stud")$stud[, 4:5] }) mean(out[1, ] < mean(s) & mean(s) < out[2, ]) #[1] 0.952 Hope this helps, Rui Barradas ?s 11:45 de 19/12/21, varin sacha via R-help escreveu:> Dear R-experts, > > Here below my R code working but really really slowly ! I need 2 hours with my computer to finally get an answer ! Is there a way to improve my R code to speed it up ? At least to win 1 hour ;=) > > Many thanks > > ######################################################## > library(boot) > > s<- sample(178:798, 100000, replace=TRUE) > mean(s) > > N <- 1000 > out <- replicate(N, { > a<- sample(s,size=5) > mean(a) > dat<-data.frame(a) > > med<-function(d,i) { > temp<-d[i,] > f<-mean(temp) > g<-var(replicate(50,mean(sample(temp,replace=T)))) > return(c(f,g)) > > } > > ? boot.out <- boot(data = dat, statistic = med, R = 10000) > ? boot.ci(boot.out, type = "stud")$stud[, 4:5] > }) > mean(out[1,] < mean(s) & mean(s) < out[2,]) > ######################################################## > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. >