Tutorials › Multi-Omics Data Integration › Posterior Predictive Checks for Multi-Omics Clusters

Bayesian Integrative Clustering · Tutorial 282 of 597

Posterior Predictive Checks for Multi-Omics Clusters

Use posterior simulations to assess whether a fitted multi-omics clustering model can reproduce important features of the observed data.

Advanced 12 min read

What You'll Learn

  • Define posterior predictive replicates for a multi-block clustering model.
  • Generate replicated data using posterior draws of cluster assignments and model parameters.
  • Compare observed and replicated within-cluster distributions using discrepancy statistics.
  • Assess whether cross-block patterns are reproduced under the shared-cluster model.
  • Interpret posterior predictive tail proportions without treating them as calibrated hypothesis tests.
  • Identify failures caused by inappropriate discrepancies, label switching, or model-data mismatches.

Why Check Replicated Multi-Omics Data?

A fitted clustering model summarizes a complicated joint data set using cluster assignments and cluster-specific profiles. A useful question is whether data generated by that fitted model would resemble the data actually observed. Posterior predictive checks answer this by repeatedly generating replicated data from the model, with uncertainty in its parameters and latent cluster assignments carried through the simulation.

For multi-omics data, resemblance must be assessed across blocks, not only feature by feature. A model may reproduce the distribution of RNA measurements within each cluster while failing to reproduce a cross-block pattern, such as the relationship between an RNA feature and a protein feature. A check is only informative when the summaries are chosen to reflect features that matter for the scientific and modeling goals.

Definition: Let \(Y=(Y^{(1)},\ldots,Y^{(B)})\) denote the observed data for \(n\) samples across \(B\) omics blocks. Let \(z_i\) be the cluster assignment for sample \(i\), and let \(\theta\) collect model parameters, including cluster-specific profiles and any mixing proportions. A posterior predictive replicate \(Y^{\mathrm{rep}}\) is generated by first drawing \((z,\theta)\) from the posterior distribution given \(Y\), then drawing replicated blocks from the fitted sampling model conditional on that draw. For an existing-sample check, replicated sample \(i\) uses the sampled assignment \(z_i\); the replicate is new data, not a new posterior estimate of the assignment.

In a shared-partition model, the same \(z_i\) informs the distribution of sample \(i\)'s measurements in every block. Conditional on \(z\) and the model parameters, the blocks may be modeled as independent, or the likelihood may specify additional dependence. The replication step must use the likelihood actually fitted; it should not impose a dependence structure simply because the observed blocks are correlated.

Generating Replicates and Choosing Discrepancies

Write \(T(Y,z)\) for a discrepancy statistic: a numerical summary of a feature to be checked. It may describe a within-cluster distribution, a cross-block pattern, or another feature implied by the model. For posterior draw \(m\), draw \((z^{(m)},\theta^{(m)})\) from the posterior and then draw \(Y^{\mathrm{rep},(m)}\) from the model conditional on that draw. Compare \(T(Y,z^{(m)})\) with \(T(Y^{\mathrm{rep},(m)},z^{(m)})\), using the same sampled assignments for both summaries when the check is conditional on the existing partition.

$$ p_{\mathrm{ppc}} \approx \frac{1}{M}\sum_{m=1}^{M} I\!\left\{T\!\left(Y^{\mathrm{rep},(m)},z^{(m)}\right) \geq T\!\left(Y,z^{(m)}\right)\right\}. $$

Here \(M\) is the number of posterior predictive replicates and \(I\{\cdot\}\) equals 1 when the stated comparison holds and 0 otherwise. This tail proportion describes how often the replicated discrepancy is at least as large as the observed discrepancy, under the chosen statistic and fitted model. It is a diagnostic summary, not a classical p-value with a uniform null distribution. Posterior predictive checks reuse the data to estimate the posterior and to calculate the observed discrepancy, so their tail proportions are often conservative and should not be read as calibrated tests of a null hypothesis.

The comparison can be two-sided in spirit when unusually small as well as unusually large values would reveal misfit. For example, inspect a replicated distribution or compare both tails rather than relying on the upper-tail proportion alone. The discrepancy should be selected before interpreting the result and should have a direct interpretation in the units or structure of interest.

1
Specify the feature.
Choose a within-block or cross-block summary that could reveal a meaningful failure of the fitted model.
2
Draw from the posterior.
For each replicate, use one posterior draw of assignments and all relevant parameters, preserving their joint uncertainty.
3
Generate every block.
Simulate each block from its fitted likelihood using the same draw of sample assignments and the corresponding block-specific parameters.
4
Compare and diagnose.
Calculate the same discrepancy on observed and replicated data, then inspect the tail proportion and the full spread of replicated values.

The posterior predictive distribution is obtained by averaging the sampling distribution over the posterior:

$$ p(Y^{\mathrm{rep}}\mid Y) = \sum_z \int p(Y^{\mathrm{rep}}\mid z,\theta)\, p(z,\theta\mid Y)\,d\theta. $$

This identity follows from the law of total probability: conditional on \(z,\theta\), the replicate has distribution \(p(Y^{\mathrm{rep}}\mid z,\theta)\); averaging that conditional distribution over the posterior gives the unconditional predictive distribution given the observed data. In computation, posterior draws approximate this average. Each replicate must use a coherent joint draw: independently combining a cluster assignment from one draw with parameters from another generally does not represent the fitted posterior.

Worked Examples

Worked Example: A Within-Cluster Detection Rate

Suppose a hypothetical two-block model includes a binary RNA detection feature. For one sampled posterior draw, four samples are assigned to cluster 1. In the observed data, three of their four values indicate detection, so the observed cluster-specific detection rate is \(3/4=0.75\). Across four posterior predictive draws, the corresponding replicated rates are 0.60, 0.70, 0.80, and 0.90. For illustration, take the observed rate as 0.75 for each comparison.

Using the upper-tail statistic \(T\) equal to the detection rate, the Monte Carlo tail proportion is

$$ \widehat p_{\mathrm{ppc}} = \frac{I(0.60\geq0.75)+I(0.70\geq0.75)+I(0.80\geq0.75)+I(0.90\geq0.75)}{4} = \frac{0+0+1+1}{4} = 0.50. $$

In this small illustrative simulation, half of the replicated rates are at least as large as the observed rate. That alone does not establish adequate fit: four replicates give a coarse estimate, and the lower tail and other features may also matter. In a real check, the observed rate should be calculated under each corresponding sampled assignment \(z^{(m)}\), particularly when assignments are uncertain, rather than held fixed as it was for this simplified arithmetic example.

Worked Example: A Cross-Block Association Within a Cluster

Consider four hypothetical samples assigned to the same cluster in one posterior draw. A continuous RNA summary has values \(x=(0,1,2,3)\), and a protein summary has values \(y=(0,1,1,2)\). To check a within-cluster cross-block pattern, use their Pearson correlation. The sample means are \(\bar{x}=1.5\) and \(\bar{y}=1\); the sums of squared deviations are \(5\) and \(2\), and the sum of cross-products is \(3\). Thus,

$$ r_{\mathrm{obs}} = \frac{\sum_i(x_i-\bar{x})(y_i-\bar{y})} {\sqrt{\sum_i(x_i-\bar{x})^2\sum_i(y_i-\bar{y})^2}} = \frac{3}{\sqrt{5\cdot2}} \approx 0.9487. $$

Suppose four replicated correlations from the same model draw structure are 0.25, 0.60, 0.75, and 0.90. For an upper-tail check, none is at least 0.9487, giving \(\widehat p_{\mathrm{ppc}}=0/4=0\). This suggests that such a strong positive within-cluster association is unusual among these particular replicates. It does not prove that the model has no cross-block association: this is a tiny simulation, and the result depends on the fitted likelihood, posterior uncertainty, and chosen statistic. If the model is intended to capture association only through shared cluster membership, a within-cluster correlation is especially useful for detecting residual dependence that the shared partition alone may not reproduce.

Worked Example: Replicated Cluster-Size Imbalance

A different check concerns whether the fitted mixing proportions can generate the observed imbalance in cluster sizes. Suppose a hypothetical data set has six samples and three available components, with observed cluster sizes \(4,2,0\). Use the largest cluster size as the discrepancy, so \(T_{\mathrm{obs}}=4\). For a new-cohort style replication, draw new assignments from the mixing proportions in each posterior draw and then generate the data; compare the largest replicated occupancy with 4. Suppose five such replicated maximum sizes are \(3,4,2,3,5\). This check is about new assignments, unlike the existing-sample replication used for the previous examples.

The upper-tail proportion is

$$ \widehat p_{\mathrm{ppc}} = \frac{I(3\geq4)+I(4\geq4)+I(2\geq4)+I(3\geq4)+I(5\geq4)}{5} = \frac{2}{5} = 0.40. $$

Two of these five replicates have a largest cluster at least as large as the observed cluster. This is only an illustration of the calculation, not a precise estimate from five simulations. For a model with a random number of components, the discrepancy should be defined in a way that remains meaningful as that number changes; sorted occupancies or the largest occupancy avoid relying on arbitrary component labels.

Assumptions, Diagnostics, and Alternatives

A posterior predictive check is meaningful only if replication follows the fitted data-generating specification. In particular, the likelihood must suit the measurement type and support in each block; the replicated data must use the same relevant design, offsets, and exposure structure as the observed data; and missingness or preprocessing must be handled consistently with the model. If a block was normalized or transformed before fitting, the check should be performed on that modeled scale, or the simulation should be transformed back appropriately before comparing with raw-scale summaries.

For a within-cluster check, the assignment used to identify a cluster must be drawn from the posterior and applied consistently to the observed and replicated summaries. Mixture labels are arbitrary: cluster 1 in one draw need not correspond to cluster 1 in another. Use label-invariant summaries, such as the collection of cluster-specific rates, or compare within each draw using its own assignments. Do not average parameters by raw component label across draws unless labels have been aligned appropriately.

Useful diagnostics include replicated histograms or empirical distributions for continuous features, replicated category proportions for categorical features, and summaries of cross-block associations. Inspect spread and shape, not only a single tail proportion. A systematic shift, excess tail mass, too little dispersion, or failure to reproduce cross-block patterns can point to model misspecification. Conversely, a reasonable check does not prove that the model is correct: the chosen summaries may simply fail to detect its shortcomings.

A common mistake is to generate each omics block using an independently sampled cluster assignment. That breaks the shared-partition structure and answers a different question: the fitted model says a sample’s blocks share its assignment. The correction is to draw one \(z_i\) per sample for each replicate and use it across all blocks, while drawing block-specific measurements according to their own likelihoods. Another mistake is to treat a tail proportion near 0.5 as proof of fit, or a value near 0 or 1 as a formal rejection. These values are descriptive evidence conditional on the chosen statistic and model, not calibrated decision thresholds.

Posterior predictive checks differ from prior predictive checks, which simulate from the prior before conditioning on the observed data. They also differ from a held-out predictive assessment, which evaluates prediction on data not used to fit the model. A residual-style diagnostic can focus on a particular discrepancy, while a posterior predictive check provides a model-based reference distribution for that discrepancy. These approaches are complementary; none removes the need to choose relevant features and interpret them in context.

A further limitation is that the data influence both the posterior and the observed discrepancy, which can make a model look less discrepant than it would under an independent test. Checks are also sensitive to sample size, feature selection, and the number of replicates: with \(M\) simulations, the estimated tail proportion changes in increments of \(1/M\). Use enough replicates for the resolution needed, and report the statistic, replication scheme, and number of simulations so the diagnostic can be interpreted.

Key takeaway: A posterior predictive check asks whether data simulated from the fitted posterior reproduce a prespecified feature of the observed multi-omics data. Keep the joint posterior draw and shared assignments coherent across blocks, and interpret discrepancies as targeted diagnostic evidence rather than a universal pass-or-fail test.

Check Your Understanding

Answer each question, then compare with the solutions.

  1. A posterior predictive check uses 20 replicates, and 15 replicated values of a discrepancy are at least as large as the observed value. What is the estimated upper-tail proportion, and what does it mean?
  2. Why should the same sampled assignment \(z_i\) be used for all blocks in a replicate under a shared-partition model?
  3. In a mixture model, why can a comparison of “cluster 1” across posterior draws be misleading?
  4. What is one reason a posterior predictive tail proportion should not be interpreted as a classical p-value?
  5. A model reproduces each block’s marginal feature distributions but not a within-cluster RNA–protein association. What does that suggest, and what does it not prove?

Solutions. (1) The estimate is \(15/20=0.75\). For this statistic and fitted model, 75% of the simulated discrepancies were at least as large as the observed one; this is a diagnostic summary, not a probability that the model is true. (2) The shared-partition model assigns one latent cluster to each sample across blocks. Independent assignments would simulate from a different structure. (3) Mixture labels are arbitrary and can switch between draws, so the label “1” may refer to different profiles. Use label-invariant summaries or compare within each draw. (4) The observed data are used both to form the posterior and to calculate the discrepancy, so the resulting tail proportion is not generally calibrated like a classical test p-value. (5) The chosen model may capture the block-wise marginals but fail to represent residual cross-block dependence within clusters. This points to a targeted potential mismatch; it does not prove the model is wrong in every respect, nor does it identify the cause without further checks.

Clinical Biostats