Disease X has an prevalence of approximately 1% of a very large population. I need to calculate the sample size for a 2-arm RCT for the patients with X.

power: 80%, significance level=0.05, expected proportion of success in treatment arm 10% and expected proportion of success in placebo arm 5%. From nQuery I get approximately 430 per arm.

However, recruiting almost 900 people with X will be almost impossible given how small the prevalence is. How would you go about calculating the sample size that takes the small population into account?


2 Answers 2


If you genuinely have a small population and you manage to sample more than 5% of it, you can apply the finite population correction, where you multiply your standard error by: $FPC=\sqrt{\frac{N-n}{N-1}}$, where N is your population size and n is your sample size.

However, I would urge caution on a few points, as I'm not convinced that you will meet the assumptions required to use the finite population correction:

  1. You need a random sample of your population, will you achieve that?

  2. 1% of a large population is still a large number.

  3. You presumably want to make inferences about people with the condition in future, e.g. those who have not been born yet. So your population may actually be larger than you think. Even though that doesn't help you with recruitment for your study!

The difference you are trying to detect is quite small (and potentially very small relative to the expected population variance, which you don't give) which is probably why the software estimates that you need a large sample size.

Others may have helpful suggestions for how to mitigate the effects of your small sample size.

  • $\begingroup$ Thanks Izy. I will check the usefulness of the FPC in this case. I do not have any population variances because the trial only aims to detect a difference in proportion of those who have success/recover in the treatment arm and placebo. It is believed that 10% of those on treatment will recover vs 5% of those on placebo. No other information has been given. I would assume that the variance will just be n*p*(1-p) as per the binomial distribution $\endgroup$
    – EskCargo
    Commented Apr 8, 2019 at 10:39

Adaptive test

If the treatment allows this then you might develop a test in which you increase the treatment group during time. How fast you do this depends on the recovery rate.

In the simplest case you can work as normal with a 430/430 split and after some regular trial period you use the 430 minuse recovered from the placebo group to repeat the experiment (of the treatment works then you should expect some new additional recovery and possibly with a better ratio than 5% versus 10%).

What you need to be careful about and take into account is the stopping time and you need to make sure that you compute the p-value correctly.

Different group sizes

Instead of equal split of 430/430 group sizes you can use a different ratio. With for instance 360/490 for the 10%/5% groups you also get 80% power.

test = function(n1,n2) {
  x = rbinom(1,n1,0.1)
  y = rbinom(1,n2,0.05)
  p1 = x/n1
  p2 = y/n2
  p_est = (x+y)/(n1+n2)
  sig = sqrt(p_est*(1-p_est)*(1/n1+1/n2))
  pv = 2*pnorm(-1*abs(p1-p2)/sig)

### result is 0.8027

One sided test

If you are expecting that the treatment group is gonna have more recovery then you can use a one-sided test. This will increase the power a lot and allows you to use much smaller groups.


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.