1
$\begingroup$

I am wondering whether in R, there is a possibility to draw a stratified sample with replacement of participants. Often, in surveys, we need each group to have certain size. Hence if one respondent in group is not reachable, there are few other "replacements" to reach while keeping the "stratification" in mind.

So for example, if we need 10 people with attribute X and we know that the response rate is ~50%, we'd need another 5 respondents with attribute X as a backup.

EDIT

To clarify, by replacement of participants I mean to have large enough sample in each stratum when non responses are taken into account.

NOT the usual meaning of sampling with/without replacement.

$\endgroup$
3
  • $\begingroup$ Could you clarify your language a bit? Are you interested in sampling with replacement as opposed to sampling without replacement, or in drawing large enough of an initial sample to end up with enough respondents in each stratum taking into account nonresponse rate? These are different things. "Sampling with replacement" has a very specific meaning, and it does not mean "backup." It means roughly that after you select your first element, you replace it (put it back in the sampling frame), so that it has the same probability of being selected again. $\endgroup$
    – gRRRR
    Commented Dec 9, 2016 at 12:09
  • $\begingroup$ I modified my question. Hope its clear now. I know it is somewhat confusing, but I don't know the official term used for this kind of sampling. $\endgroup$
    – HonzaB
    Commented Dec 9, 2016 at 12:38
  • $\begingroup$ Great, now it's clear. I'm not sure it's a question about R per se, or at least that it's a different question from just "how to take a stratified sample." I also don't know of an "official term" for this kind of sampling, but I think that's because it's not a different kind of sampling. I'm pretty sure it's just a matter of taking some things into account. I'll add an answer with what I think your best option is. $\endgroup$
    – gRRRR
    Commented Dec 10, 2016 at 13:16

1 Answer 1

1
$\begingroup$

I don't think this is a different kind of sampling, so when you ask how to do it in R, I don't have a different answer for you than "same as you would take a stratified sample if there were no nonresponse." Taking nonresponse into account is a practical question, and it's independent of its implementation in statistical software. And, because survey methodology is not an exact science, you'll have to make some decisions that are inevitably subjective and based on what you as the author of a survey believe is the best choice.

You're interested in preserving stratification while taking into account the nonresponse rate. This may be possible only through sampling, but likely you may need to combine sampling design with some method of poststratification in order to preserve strata sizes. This depends on how close your expected response rate (prior to actually doing the survey) is to your actual response rate once you've finished the survey. Due to the nature of sampling, even if you know from previously sampling the same population that on average 50% of people respond, in any particular survey you can get a lower or higher number, like 48% or 55%. So if you really want to preserve exact strata sizes, you will probably need to adjust this in post-stratification.

In the planning stage, I don't think you have any better choice than contacting a larger sample than you need (backup, as you suggest). Survey Monkey mentions this approach. The total number of elements you need to contact (call it $c$) in order to obtain a desired number of respondents ($n$) is inversely proportional to your expected response rate expressed as a fraction ($r$): $c = (1/r)*n$. To take your example, if you need 10 respondents and the response rate is 50%, you need to contact $(1/0.5)*10=20$ people. This makes sense intuitively, too. If you are targeting 10 people and expect only 5 of them to respond, you need another 10 people as a backup because, if they are drawn from the same population, the backup people ALSO have a response rate of 50%.

Combining this with stratification, you have two choices. If you believe the non-response rate is the same across all strata (i.e. it's uncorrelated with the stratification variable), you would simply double all allocated strata sizes. Say, if you need a sample of 100 allocated across four strata (let's label them A, B, C, D) thus: A = 10, B = 20, C = 30, D = 40, and the response rate in all strata is 50%, you would draw a sample of A = 20, B = 40, C = 60, D = 80, for a total of 200 people to contact. If you think the response rates are different across strata (A = 50%, B = 75%, C = 90%, D = 60%), then you would draw: A = 20, B = ~27, C = ~33, D = ~67 for a total of 147 people to contact.

In R, you can do this with the stratsample() function in the 'survey' package, or with the strata() function in the 'sampling' package (make sure to read the details section to order your data correctly).

How you treat these larger strata sizes then is a matter of choice. You can contact all and see what you get. You can contact them in some order (or no particular order) until you get the desired sample size. You can split your larger sample into a "primary" and "backup" sub-sample in each stratum (for example by drawing a sub-sample of primary elements, and treating the remainder as backup), contact the primary sub-sample first, and then draw from the backup sub-sample; you could even match elements in the primary and backup sub-samples by some variables you think matter, so that when person i from the primary sub-sample does not respond, you have an exact person i-backup (or a couple of them) in the backup sub-sample to contact instead (I've done this in a survey of farm households: I had four strata of size 30 each, but I drew 40 from the sampling frame. When a cattle farmer with less than 10 cows would fail to respond, I would replace them with another cattle farmer with less than 10 cows).

So much for sampling. You can deal with nonresponse further in post-stratification. In R, you can use the nonresponse() function from the 'survey' package to adjust weights for nonresponse across strata.

I hope this helps you.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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