Cross Validated is a question and answer site for people interested in statistics, machine learning, data analysis, data mining, and data visualization. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm using R to provide bootstrap (percentile and t methods) of estimated population totals, using data from a complex survey. It is a stratified survey of tourists expenditure that is weighted to population (the known number of tourists from customs information). I want a confidence interval for total expenditure of various combinations of tourist types (eg "Australian business travellers"). Those tourist characteristics are part of the poststratification weighting scheme, but not the original stratification. Stratification is by departing flight where the interview took place. The weights are very complex and definitely not independent of the variable of interest.

My procedure is to produce a stratified resample; take the cases in this sample's weights from the original sample and scale them up/down so they add again to the correct population totals; and calculate my statistic. Repeat r times. If I don't do the reweighting procedure in the middle my bootstrapped estimates are on average significantly higher than the estimates from the original sample and hence useless. My reweighting procedure does not exactly duplicate the original poststratification weighting (it is a simpler version) but is callibrated to produce the same marginal population totals for combinations of tourists' country of residence, purpose of visit, and age.

I have written code in R to do this but am interested in if there is an existing function I can compare my results with. I've looked at both the boot and survey packages and can't find anything. While boot allows bootstrapping from a stratified sample, I can't see a way to perform the reweighting to population of each replicate resample. My first question is - any pointers to a prebuilt function in R that does this reweighting to population as part of its bootstrap?

I also haven't found anything on exactly this problem in my cursory examination of the literature. However, it must be a common challenge for surveys that have been weighted to populations. My second question is - any pointers to discussion in the literature (not just on R) about the merits or otherwise of this reweighting procedure in the middle of a bootstrap?

share|improve this question
Don't know about bootstrap, but the Australian Buruea of Statistics uses a jacknife method for variance estimation that sounds very similar to what your bootstrap is doing. The algorithm is called GREGWT (generalised regression weighting), and the jacknife replicates are also "benchmarked" same as the original weights. This may be useful to compare. Implementation is in SAS though... – probabilityislogic Mar 14 '12 at 20:20
Thanks. In the end Lumley's survey package did what I wanted once I got rid of the idea of doing a bootstrap in a loop myself and instead generated replicate weights and raked them to the original marginal total weights. It also does a variety of jacknife replicate weights. I also found the EVER library immensely useful - it has an implementation of Kott's delete-a-group jacknife which is a method trialled by Statistics New Zealand (in SAS) and in fact used in our own surveys (again in SAS). I might look into ABS' GREGWT. – Peter Ellis Mar 14 '12 at 22:00
up vote 4 down vote accepted

In R i would tell you to see if the functions related with "bootweights" in the survey package suit you in any way. But since you have already gone over that package I don't think you will find many alternatives ... I also looked for a similiar thing a couple of weeks ago and ended up implementing my own code.

For the discussion of bootstrapping and survey weights in general you can find some references in this presentation which also contains references to an implementation of a bootstrapping procedure for complex survey designs in STATA.

share|improve this answer
See also this paper for a more extended discussion: – StasK Apr 13 '12 at 13:16

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.