Sample size for rare diseases 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?
 A: 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:

*

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


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


*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.
A: 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)
  pv
}

set.seed(1)
sum(replicate(10^4,test(360,490))<0.05)/10^4
### 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.
