Tutorials › Multi-Omics Data Integration › Block Contributions to Global Components

Multiple Factor Analysis and Joint PCA · Tutorial 163 of 597

Block Contributions to Global Components

Calculate how much of a global component’s loading direction comes from each omics block, and interpret that contribution without confusing it with variance explained or representation quality.

Advanced 12 min read

What You'll Learn

  • Define a block’s contribution to a global component using its scaled feature loading coefficients.
  • Calculate block and feature contributions and check that they sum to one across all active features.
  • Convert correlation loadings to contributions when the block scaling and global eigenvalue are known.
  • Identify which blocks define an axis and distinguish balanced contributions from dominance.
  • Diagnose misinterpretations involving loading signs, feature counts, and contributions across different components.
  • Compare contribution-based interpretation with separate PCA and unscaled concatenated PCA.

What a Block Contribution Measures

A global component in Multiple Factor Analysis (MFA) is a direction in the joint, block-scaled feature space. Its score for an individual combines information from features in all active blocks. A block contribution summarizes how much of that direction’s feature-loading weight belongs to one block. It helps answer which blocks define this axis? It does not, by itself, say whether the axis explains a large amount of total data variation or whether a particular individual is well represented.

The earlier material on the MFA compromise space established the use of blocks scaled by their first principal inertia before joint PCA. For the formulas here, assume that the active data matrix for each block has been centered, its features have been put on the chosen within-block scale, and the block has been divided by the square root of its first principal inertia. The global PCA is then performed on the concatenated scaled features, using the same individuals in every block and the same active-feature weights throughout. These assumptions matter: the contribution refers to the scaled features actually used in that PCA, not to an arbitrary unscaled representation.

Definition: Let \(Z\) be the centered, concatenated matrix of MFA-scaled active features, and let \(v_k\) be the unit-length eigenvector for global component \(k\). Write \(v_{jk}\) for the coefficient of scaled feature \(j\) in that eigenvector. For a block \(g\) containing feature set \(J_g\), its contribution to component \(k\) is \(C_{gk}=\sum_{j\in J_g}v_{jk}^2\). The feature contribution is \(C_{jk}=v_{jk}^2\). Contributions are proportions; multiply by 100 to report percentages.

Here, “scaled feature loading” means the coefficient in the unit-length global eigenvector of the scaled data. Some software uses “loading” for a feature’s correlation with a component instead. Those quantities are related, but are not interchangeable without accounting for feature scaling and the component eigenvalue. The distinction is especially important in MFA because block scaling generally means that the scaled feature columns do not all have variance one.

$$ \sum_{g=1}^{G} C_{gk} =\sum_{j=1}^{p}v_{jk}^{2} =v_k^\mathsf{T}v_k =1 $$

Thus, each component’s contributions partition 100% of the squared length of its loading direction across the active blocks. A block with a large contribution supplies a large share of the direction’s squared coefficient weight. The calculation squares coefficients, so positive and negative feature coefficients both contribute; their signs do not cancel.

From Correlation Loadings to Contributions

The definition can be used directly when the scaled eigenvector coefficients are available. If a report instead provides correlations, convert them using the actual scaling. Suppose original within-block standardized feature \(x_j\) has variance one, and its block is divided by \(\sqrt{L_g}\), where \(L_g\) is that block’s first principal inertia. The scaled feature is \(z_j=x_j/\sqrt{L_g}\), so its variance is \(1/L_g\). Let \(t_k=Zv_k\) be the global score, with variance \(\lambda_k\), and let \(r_{jk}=\operatorname{Corr}(z_j,t_k)\). From the eigenvector equation, \(\operatorname{Cov}(z_j,t_k)=\lambda_kv_{jk}\). Also, by the definition of correlation, that covariance is \(r_{jk}\sqrt{\lambda_k/L_g}\). Equating the expressions gives:

$$ v_{jk}=\frac{r_{jk}}{\sqrt{L_g\lambda_k}}, \qquad C_{jk}=\frac{r_{jk}^{2}}{L_g\lambda_k}, \qquad C_{gk}=\sum_{j\in J_g}\frac{r_{jk}^{2}}{L_g\lambda_k}. $$

This conversion assumes that the original features were standardized to variance one and that the block’s sole subsequent scaling was division by \(\sqrt{L_g}\). If features have other weights or variances, use the corresponding feature variances in the covariance-to-coefficient conversion, or obtain the eigenvector coefficients from the fitted analysis. Do not apply this correlation formula blindly.

Worked Example: Comparing Two Blocks by Their Scaled Loadings

Consider a hypothetical global component from two scaled omics blocks. The fitted unit eigenvector has coefficients \(0.50, 0.40, 0.30\) for the three features in block A and \(0.50, 0.50\) for the two features in block B. First check the required unit-length condition:

$$ 0.50^2+0.40^2+0.30^2+0.50^2+0.50^2 =0.25+0.16+0.09+0.25+0.25 =1.00. $$

The block contributions are the sums of the squared coefficients within each block:

$$ C_{\mathrm{A},k}=0.25+0.16+0.09=0.50, \qquad C_{\mathrm{B},k}=0.25+0.25=0.50. $$

Each block contributes 50% of the squared loading direction. For this component, the axis is balanced by this measure: neither block has more total loading weight than the other. This does not imply that each feature has equal influence, nor that the blocks explain equal amounts of total inertia.

Worked Example: Computing Contributions From Correlations

In another hypothetical analysis, three blocks have first principal inertias \(L_g=1\). A component has eigenvalue \(\lambda_k=1.20\). The reported correlations of the original standardized features with the component are, by block: A, \(0.2191\) and \(0.1095\); B, \(0.3286\) and \(0.4382\); C, \(0.5477\) and \(0.7348\). Under the stated scaling, the feature contribution is \(r_{jk}^2/(L_g\lambda_k)=r_{jk}^2/1.20\).

For block A, the squared correlations sum to \(0.2191^2+0.1095^2\), approximately \(0.0480+0.0120=0.0600\). Dividing by \(1.20\) gives \(C_{\mathrm{A},k}=0.0500\), or 5.00%.

For block B, the squared correlations sum to approximately \(0.1080+0.1920=0.3000\). Thus \(C_{\mathrm{B},k}=0.3000/1.20=0.250\), or 25.0%.

For block C, the squared correlations sum to approximately \(0.3000+0.5400=0.8400\). Thus \(C_{\mathrm{C},k}=0.8400/1.20=0.700\), or 70.0%. The three contributions sum to \(0.0500+0.250+0.700=1.00\). Block C supplies most of this component’s loading weight, while block A supplies little. This conclusion is about the component’s direction, not a claim that block C causes the pattern in the other blocks.

Why the Contribution Formula Works

The derivation is short but clarifies both the interpretation and its limits. Global PCA gives a unit eigenvector for each component. Partition that vector into subvectors \(v_{1k},\ldots,v_{Gk}\), one per block. Since these subvectors occupy disjoint coordinates, the squared length of the full vector is the sum of their squared lengths:

$$ 1=v_k^\mathsf{T}v_k =\sum_{g=1}^{G}v_{gk}^\mathsf{T}v_{gk} =\sum_{g=1}^{G}\sum_{j\in J_g}v_{jk}^{2}. $$

The block contribution is therefore the squared length of that block’s part of the global direction. Nonnegativity follows because every term is a square, and the sum-to-one property follows from the unit length of \(v_k\). This also explains why reversing the sign convention for a component has no effect: replacing \(v_k\) by \(-v_k\) changes every coefficient’s sign but leaves every squared coefficient unchanged.

Contributions do not partition the component eigenvalue into independent block-specific pieces. In the scaled data, features from different blocks can covary. The variance of a global score includes cross-products between feature columns, so it cannot generally be allocated to blocks by simply summing within-block variances. Contribution is a measure of loading direction, not a decomposition of score variance.

Worked Example: A Dominant Block and the Effect of Signs

Suppose a hypothetical component has scaled eigenvector coefficients \(0.20, 0.10\) in block A, \(0.30, 0.40\) in block B, and \(0.50, -\sqrt{0.45}\) in block C. The negative coefficient is allowed; the squared length is:

$$ 0.20^2+0.10^2+0.30^2+0.40^2+0.50^2+ \left(-\sqrt{0.45}\right)^2 =0.05+0.25+0.25+0.45=1. $$

Therefore the block contributions are \(C_{\mathrm{A},k}=0.05\), \(C_{\mathrm{B},k}=0.25\), and \(C_{\mathrm{C},k}=0.25+0.45=0.70\). Block C contributes 70%, so it defines most of the loading direction. The negative sign on its second feature indicates an opposite direction of association within the axis; it does not subtract from block C’s contribution. Reversing all six coefficient signs would leave the three contributions unchanged.

Interpreting, Comparing, and Diagnosing Contributions

Contribution is most useful when reported for a specified component and interpreted alongside the feature coefficients and the component’s overall context. A high value identifies a block whose features collectively receive substantial squared coefficient weight. A low value means the block contributes little to that direction under the fitted scaling. Neither result alone tells whether the component is substantively important, how well individuals are represented on it, or whether the pattern is stable under resampling.

This measure is distinct from two common alternatives. Separate PCA finds directions within each block independently; it can describe block-specific variation but does not give that block’s loading share in the global component. Concatenated PCA without MFA block scaling uses a different feature geometry, so a block with many or high-variance features can dominate more readily. MFA’s contribution calculation is based on its scaled global eigenvector. These approaches answer different questions and their numerical contributions should not be treated as interchangeable.

Several checks make the interpretation more reliable:

  • Check the total. Contributions across all active blocks for a component should sum to one, apart from rounding. A substantial discrepancy can indicate that some active features were omitted, the wrong loading quantities were squared, or the reported values are not the eigenvector coefficients.
  • Check the scaling. Verify that coefficients correspond to the MFA-scaled active matrix, rather than the original unscaled feature matrix or a supplementary projection.
  • Inspect within-block concentration. A high block contribution may be spread over many features or concentrated in one feature. The block total alone does not reveal which situation holds.
  • Compare components separately. The contributions sum to one separately for each component. A block’s contribution can be high on one axis and low on another; percentages should not be added across axes as though they were one partition.
  • Consider uncertainty and stability. If small data perturbations materially change the loadings or contributions, avoid presenting the block ranking as robust. Contribution calculations describe a fitted solution; they do not provide a sampling uncertainty interval by themselves.

Feature count deserves particular care. A block’s contribution is a sum over its features, so it can be high because several features each contribute moderately, or because a few carry large coefficients. MFA scaling limits the dominance associated with a block’s overall first principal inertia, but it does not force equal contribution on every global component. Nor does a contribution automatically adjust for interpretive redundancy among correlated features within a block.

Common mistake: “Block A has a negative loading, so its contribution is negative,” or “block A contributes 40%, so it explains 40% of the component’s variance.” Both conclusions are incorrect. Contributions square the scaled eigenvector coefficients and therefore cannot be negative; they partition the squared length of the loading direction, not the component eigenvalue or total data inertia.

Check Your Understanding

Answer each question using the definition of contribution. Worked solutions follow the questions.

  1. A component has coefficients \(0.60, 0.30\) in block A and \(0.50, \sqrt{0.30}\) in block B. Calculate each block contribution and verify the total.
  2. A block has two scaled feature coefficients, \(-0.40\) and \(0.20\). What is its contribution, and what does the negative sign imply?
  3. With \(L_g=1\), \(\lambda_k=2\), and two feature correlations \(0.40\) and \(0.20\), calculate the block contribution using the correlation formula.
  4. Why is a block contribution of 60% not the same as saying that the block explains 60% of the component eigenvalue?
  5. A reported set of block contributions for one component sums to 0.72. Name one check to make before interpreting the ranking.

Solutions. (1) Block A contributes \(0.60^2+0.30^2=0.36+0.09=0.45\). Block B contributes \(0.50^2+(\sqrt{0.30})^2=0.25+0.30=0.55\). The total is \(0.45+0.55=1.00\). (2) Its contribution is \((-0.40)^2+0.20^2=0.16+0.04=0.20\), or 20%. The negative sign indicates an opposite signed coefficient relative to the chosen axis orientation; it does not make the contribution negative. (3) The contribution is \((0.40^2+0.20^2)/(1\cdot2)=(0.16+0.04)/2=0.10\), or 10%. (4) Contributions partition the squared length of the global eigenvector across blocks. The eigenvalue also depends on the covariance structure, including cross-block covariation, so contribution is not a partition of that eigenvalue. (5) Check that all active blocks and features are included, that the values are from the MFA-scaled global eigenvector, and that the reported quantities are coefficients rather than unconverted correlation loadings. A total of 0.72 is inconsistent with a complete contribution partition except for a substantial reporting or calculation issue.

Clinical Biostats