I want to "blow up" a sample, taken with replacement, for which I know the overall sampling probability $\pi_i$ for each item $i$. Is it valid to use bootstrapping and apply inverse probability weighting during the selection (as in the Horvitz-Thompson estimator: weight each item with $1/\pi_i$), or are there any pitfalls? A quick search on Google suggests that this hasn't been fully investigated yet, and the boot package in R allows weights but does not comment on where they are supposed to come from.

The purpose of "blowing up" is, among others, to be able to resample with uniform probability from the blown-up population.

  • 1
    $\begingroup$ (1) Was your sample obtained with or without replacement? (2) Selecting items "with probability $1/\pi_i$" won't work (and is not part of the H-T estimator anyway), because obviously--since $\pi_i \le 1$--these reciprocals exceed unity. $\endgroup$ – whuber Apr 18 '12 at 12:55
  • $\begingroup$ @whuber: Thank you. (1) For now, let's assume it's sampling without replacement. (How does the concept of an overall sampling probability apply to sampling with replacement anyway? Wouldn't it be something like expected sampling count?) (2) Thanks, edited. $\endgroup$ – krlmlr Apr 18 '12 at 14:51
  • $\begingroup$ I suspect what you may mean by "inverse probability weighting during the selection" is to use probability weighting for the bootstrap according to the relative sizes of the $\pi_i$. $\endgroup$ – whuber Apr 18 '12 at 15:48
  • $\begingroup$ @whuber: I am not familiar with terminology, and I only have a very rough imagination about what bootstrapping is: Repeated random selection from a sample (with replacement), and appending the selected items to a "new" dataset. If my sample is weighted, then weighted sampling is applied during the bootstrap. And if the weights are derived from selection probabilities, it's inverse probability weighting. At least that's my understanding, please do correct me if I'm wrong here. -- Does the term "weighted bootstrap" apply for my case? $\endgroup$ – krlmlr Apr 18 '12 at 15:58

Did you find a satisfactory answer for this question?

I recently found this reference:


but I am pretty sure that the issue must have been investigated before. While it is easy to justify the use of observation weights (in practice, by weighting observations, you are hoping to use a better estimate of the unknown distribution function F), I would like to find the relevant background.

| cite | improve this answer | |
  • $\begingroup$ Welcome to CrossValidated. Thank you for attempting to help answer a question. A small point: your answer could be much improved by briefly summarising the contents of the link as relevant to this question. This is also important for the longevity of the answers, since if that link ever dies, your answer is useless. $\endgroup$ – Korone Dec 4 '13 at 11:46

You can verify that the "weights" parameter in the boot package is operating as importance weights with a simple simulation.

example <- data.frame(

Unweighted mean:

# output = 5

Weighted mean:

sum(example$meas * example$wts) / sum(example$wts)
# output = 2.346154

Now doing this with bootstrapping:

my.avg <- function(data, indices) {
   d <- data[indices,]

Unweighted bootstrapped mean:

mean(boot(example, my.avg, 1000)$t)
# output = 4.8908

Weighted bootstrapped mean:

mean(boot(example, my.avg, 1000, weights=example$wts)$t)
# output = 2.3712
| cite | improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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