[R] Simulating Case Control Data

Thomas Lumley tlumley at u.washington.edu
Tue Dec 11 16:57:10 CET 2007

On Mon, 10 Dec 2007, R. W. wrote:

> Dear R-Help-List,
> I was wondering if anyone had experience simulating
> case-control data in R?

I think the only simple method that allows you to specify any arbitrary 
population distribution of predictors and does not rely on the logistic 
regression model being true is to simulate cohorts and then take a 
case-control sample from each one

Eg for a case-control sample of 500 cases and 1000 controls where there is 
about a 1% cumulative incidence
1. Generate all your predictor variables for a cohort of 50,000 people, 
from any distributions you want
2. Specify the disease model. This could be logistic
     logit(p(Y=1))=eta = b0+b1x1+b2x2+...
     p = exp(eta)/(1+exp(eta))
   or it could be anything else.
3. Now sum(p) gives the expected number of cases. Adjust b0 so that this 
is a bit bigger than your desired number, eg 550.
4. Generate Y for the population by rbinom(50000,1,p)
5. Choose 500 cases and 1000 controls using sample().


More information about the R-help mailing list