Skip to main content
Back to Blog
Methodology

Building virtual patient distributions from aggregate cohort data

Individual patient records are rarely available at the modeling stage. Most of what exists is cohort-level statistics: summary tables from disease registries, age-stratified incidence figures from published epidemiology, marginal distributions of biomarker values from Phase II readout datasets. The challenge is that you need joint distributions, not marginal ones, to generate synthetic patients that behave realistically in simulation.

This post describes the statistical approach we use, where it works, what assumptions it requires, and what it cannot do.

Why marginal statistics fail for simulation

When a registry reports the mean and standard deviation of a biomarker, it is reporting a marginal distribution. It tells you nothing about how that biomarker co-varies with age, comorbidity burden, or prior treatment exposure. If you sample each dimension independently from its marginal, you will generate implausible combinations: a patient aged 72 with the functional performance profile of a patient aged 38, or a comorbidity pattern that contradicts the established natural history of the indication.

This matters because the subgroup signal is almost always in the joint distribution. A candidate that performs in patients who are younger than 55, have low baseline inflammatory load, and have not received prior immunotherapy cannot be detected by looking at each dimension in isolation. The correct question is: what is the probability that a patient drawn from this cohort simultaneously satisfies all three of those conditions? That question requires a joint distribution model, not three marginals.

Simpson's paradox gives a clean example of why this matters. A treatment that appears to have modest aggregate efficacy in a published cohort study may have strong efficacy in the low-comorbidity subgroup but negative efficacy in the high-comorbidity subgroup. The aggregate marginals show the mixture. The joint distribution shows the separation. You cannot recover the subgroup signal from the marginals alone once you have lost the individual records.

The copula approach

A copula separates two problems that are usually conflated: the marginal behavior of each variable and the dependence structure among them. Sklar's theorem guarantees that any multivariate distribution can be decomposed into its marginals and a copula that encodes the rank-correlation structure. This separation is practically useful because marginal distributions are often available from published cohort statistics, while the dependence structure must be estimated or elicited separately.

In practice, we fit marginal distributions from whatever cohort statistics are available: parametric fits where the variable type supports them (beta distributions for proportions, gamma distributions for right-skewed continuous biomarkers, ordinal logistic for staging variables) or empirical cumulative distributions when the source data permits. The copula then captures the dependencies: if age and comorbidity burden are positively correlated in the source cohort, that correlation is preserved in the virtual patients we generate.

We use Gaussian copulas as the default because they are parameterized by a correlation matrix that the development team can interrogate and challenge. When the dependence structure of a variable pair is known to have heavy tail behavior (certain oncology biomarker combinations do), we use vine copulas, specifically C-vine or D-vine structures, to accommodate more complex dependence patterns. The practical constraint is that vine copula parameterization requires more data to estimate reliably. For small source cohorts, we fall back to Gaussian copulas with explicit uncertainty inflation on the correlation parameters.

A concrete example

Consider a development team working on a CNS target for an indication where the available summary statistics come from a 40-patient early-access cohort at a Boston-area academic medical center, early 2025. Shared statistics are: age distribution (mean 52, SD 11), disease severity score (mean MMSE 18, SD 4), ApoE4 carrier rate (38%), and prior treatment exposure rate (68% had received at least one failed treatment). No individual records are shared; only these four marginal statistics plus one cross-tabulation of ApoE4 status by prior treatment exposure.

From this, we construct a four-variable joint distribution using a Gaussian copula with the correlation matrix partially informed by the cross-tab and partially by published epidemiology on the co-occurrence of these variables in the indication. We generate 2,000 virtual patients and compare the marginal distributions of the synthetic cohort back to the reported source summaries to validate the fit. Marginal residuals are small. The uncertainty comes from the correlation structure assumptions on the three variable pairs not covered by the cross-tab, which we propagate through simulation as a sensitivity analysis with explicit labeling.

Bayesian priors for sparse data

When cohort-level data is genuinely sparse, fewer than 30 reported subjects or only single-center experience, marginal statistics cannot adequately constrain the joint distribution. Here we introduce Bayesian priors on the copula parameters.

The priors are typically drawn from published epidemiology in the same indication or closely related indications, scaled by a likelihood weighting that reflects the team's judgment about how comparable the prior population is to the target population. This is an expert elicitation step, not a data-free assumption. We work with the development team to define a plausibility range for each correlation parameter, then encode that range as a prior distribution over the copula's correlation matrix.

The posterior distribution, after conditioning on the observed cohort statistics, is a distribution over possible joint structures, not a single correlation matrix. We propagate the entire posterior through simulation, rather than selecting a point estimate. The output is therefore an ensemble of simulation runs, each consistent with a different plausible dependence structure. This is slower to compute than a point-estimate approach but more honest about the state of knowledge.

Validating the synthetic cohort

Before using a synthetic cohort for simulation, we run a validation protocol against the source statistics:

  • Compare marginal distributions of the synthetic cohort against the source statistics that defined them. The marginal fit should be tight; large residuals indicate a fitting problem, not genuine population uncertainty.
  • Compare cross-tabulation frequencies between key variable pairs in the synthetic cohort against any available cross-tabs in the source data. Where cross-tabs exist, the synthetic cohort should reproduce them within sampling error.
  • Run the synthetic cohort through any published clinical scoring model for the indication and check that the output distribution is consistent with published registry data for that score in the target population.

This validation is internal consistency checking, not external validation. It confirms that the synthesis process reproduced the inputs accurately. It cannot confirm that the inputs were representative of the real target population. That is a separate judgment that requires external data or expert clinical review.

What the output looks like and how to use it

The output of the synthesis is not a single cohort. It is a distribution over cohort compositions. For any trial design question, such as what proportion of enrolled patients will meet subgroup criteria X under eligibility criterion Y, the answer is an interval, not a point estimate.

That interval represents genuine epistemic uncertainty given the available input data. Narrowing it requires more data, not more sophisticated modeling. We are explicit with development teams about the distinction: you cannot compute your way to a tighter interval. You can acquire a more representative or larger source cohort, or you can accept the wider interval and make decisions under uncertainty.

The output format is a posterior distribution over subgroup proportions. For a two-subgroup simulation, that is a beta distribution over the responder fraction. For a multi-subgroup analysis, it is a Dirichlet distribution over the subgroup composition vector. These distributions can be used directly in expected value calculations for go/no-go decisions, or summarized as credible intervals for reporting to program leadership.

What this approach cannot do

Copula-based synthesis assumes the source cohort is representative of the target population. If the available summary statistics come from a single European registry and the development program targets a North American population with a different genetic background and different prior treatment history, the joint distribution assumptions are wrong at the source, not at the modeling layer.

We handle representativeness risk as a separate uncertainty axis, not as a correction to the main model. Teams can define multiple source cohorts, each with their own weight reflecting estimated representativeness, and let the simulation reflect the uncertainty between them. But if no source data from a representative population exists at all, the simulation output is prior-dominated. We do not conceal that: outputs from prior-dominated simulations carry explicit flags in our reports, and we recommend against using them as primary decision inputs until more representative cohort data is obtained.

There is also a ceiling on how much the joint distribution approach can tell you about causal mechanism. A copula model captures observed correlation structure in a particular cohort. It does not tell you whether those correlations are causal, confounded, or population-specific. Mechanism inference requires either experimental data or explicit causal modeling approaches, neither of which is what copula-based synthesis provides.

Explore the platform

The science described here is the basis for the platform's inference architecture. If you are working on a Phase I-II decision, request early access.

Request access Learn how it works