Re: [R] bootstrap data from groups

From: Ulrich Keller <uhkeller_at_web.de>
Date: Thu 08 Jun 2006 - 04:55:11 EST

I am not sure I understand what you want to do, but maybe some of this will be helpful. I first generate some data that should resemble yours:

dat<-expand.grid(Region=1:3, Species=1:4, Sex=c("M","F")) dat<-do.call("rbind",lapply(1:10,function(x) dat)) dat$Bodysize<-rnorm(nrow(dat),10,2)

Now what the following piece of code does is this: it samples 4 of the 10 individuals in each of the 24 subsets (region*species*sex) and creates a new data frame with 96 cases. It then computes the mean of bodysize in each of the subsets. The whole thing is done 100 times, the results are put in a data frame. We end up with 100 bootstrapped means for the 24 subsets.

groupmeans<-sapply(1:100, function(z) {
  dat.rs<-do.call("rbind",
    lapply(split(dat,list(dat$Region,dat$Species,dat$Sex)),       function(x) x[sample(10, 4, replace=TRUE),]))   aggregate(dat.rs$Bodysize,
    list(dat.rs$Region,dat.rs$Species,dat.rs$Sex),     mean)$x
  }
)
tmp<-aggregate(dat$Bodysize,
  list(dat$Region,dat$Species,dat$Sex),mean) rownames(groupmeans)<-apply(tmp[,1:3],1,paste,collapse="")

Now we can compute the mean and sd of the means by group:

 > apply(groupmeans,1,mean)

      11M       21M       31M       12M       22M       32M       
13M       23M

 9.353095 9.267570 9.907933 10.992796 9.575841 10.412816 9.646964 9.433724
      33M       14M       24M       34M       11F       21F       
31F       12F

10.750797 9.083630 10.573421 9.615743 10.267587 10.231126 9.329375 10.799071
      22F       32F       13F       23F       33F       14F       
24F       34F

 9.355510 10.555705 9.919161 10.277103 9.335649 9.339544 10.023688 9.755115
 > apply(groupmeans,1,sd)
      11M       21M       31M       12M       22M       32M       
13M       23M

0.7720758 1.5301540 1.0973516 0.8970237 1.0492995 0.9460970 0.5362957 1.1106675
      33M       14M       24M       34M       11F       21F       
31F       12F

0.5333081 0.9259341 0.8198624 0.8061832 0.8466780 0.7052473 0.9857680 1.1057607
      22F       32F       13F       23F       33F       14F       
24F       34F

0.8272433 1.2614559 1.2377154 1.0958545 0.9213648 0.9985215 1.1131870 1.0572494

Milton Cezar schrieb:
> Hi R-friends.
>
> I have a mammal´s dataset looking like:
>
> Region Species Sex Bodysize
> 1 Sp1 M 10.2
> 1 Sp1 M 12.1
> 1 Sp1 M 9.1
> ...
>
> I have three regions, four species and the body size of 10 individual. I´d like to do a bootstrap resample (100 resamples) of 4 of 10 individuals for each Region, Species and Sex and compute de means and S.D. for the combinations Regions-Species-Sex.
>
> How can I do that?
>
> Thanks a lot,
>
> Miltinho

>

> __________________________________________________
> >
> [[alternative HTML version deleted]]
>

>
> ------------------------------------------------------------------------
>

> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html


R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Thu Jun 08 04:58:56 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Thu 08 Jun 2006 - 06:10:55 EST.

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