Tutorials › Multi-Omics Data Integration › Scaling Blocks by Their First Principal Inertia

Multiple Factor Analysis and Joint PCA · Tutorial 157 of 597

Scaling Blocks by Their First Principal Inertia

Learn to calculate each block’s first principal inertia and construct the weighted concatenated matrix used in multiple factor analysis.

Advanced 12 min read

What You'll Learn

  • Define the PCA eigenvalue convention used to calculate first principal inertia.
  • Check the centering, row alignment, and positive-eigenvalue conditions for block scaling.
  • Calculate inverse-square-root scaling factors from block eigenvalues.
  • Construct a weighted concatenated matrix from multiple data blocks.
  • Distinguish first-eigenvalue scaling from standardizing variables or equalizing total block inertia.
  • Recognize diagnostics and common implementation errors.

Why scale blocks before concatenating?

A joint analysis of several omics blocks needs a way to put them into one matrix while accounting for differences in their overall scale. A block with many variables, large numerical units, or strong variation along one direction can otherwise have a large influence on the PCA of the concatenated data. Multiple factor analysis (MFA) addresses this at the block level: it first computes each block’s leading PCA eigenvalue, then divides the whole block by the square root of that eigenvalue before concatenation.

The operation is specific: it rescales every column in a block by the same factor. It does not replace variable-level preprocessing. For quantitative MFA, columns are commonly centered and standardized within each block before the PCA eigenvalues are calculated. The eigenvalue used for scaling must correspond to the data matrix that will actually be scaled.

Definition: Let \(X_k\) be the centered \(n \times p_k\) data matrix for block \(k\), with the same \(n\) individuals in every block. Under the convention that PCA uses the covariance matrix \(X_k^\top X_k/n\), let \(\lambda_{1k}\) be its largest eigenvalue. This is the block’s first principal inertia. If \(\lambda_{1k}>0\), the scaled block is \(X_k^\ast=X_k/\sqrt{\lambda_{1k}}\). For \(K\) blocks, the weighted concatenated matrix is \(X^\ast=[X_1^\ast\;X_2^\ast\;\cdots\;X_K^\ast]\).

The factor is the inverse square root, not the inverse eigenvalue. Because a covariance matrix is quadratic in the entries of \(X_k\), multiplying the data matrix by \(1/\sqrt{\lambda_{1k}}\) divides its covariance eigenvalues by \(\lambda_{1k}\). This convention uses \(1/n\); if software defines PCA eigenvalues using \(1/(n-1)\), its numerical eigenvalues and scaling factors will differ. Use one convention consistently for every block.

Assumptions and construction

Before calculating the factors, check that the blocks refer to the same individuals in the same row order, that each block has been preprocessed as intended, and that each block has at least one nonconstant direction. Centering means each column has mean zero across individuals. A zero first eigenvalue means the entire centered block has no variation, so its scaling factor is undefined; remove or otherwise address such a block rather than attempting to divide by zero.

For a quantitative block whose columns are standardized, the eigenvalue is calculated from that standardized matrix. If variables have instead been retained in their original units, the eigenvalue reflects those units and the resulting scaling reflects them too. The block-scaling step does not decide which preprocessing is scientifically appropriate.

1
Prepare each block.
Align rows to the same individuals, then apply the chosen centering and variable-level scaling. Record the exact matrix used for PCA.
2
Find the first principal inertia.
Calculate the largest eigenvalue \(\lambda_{1k}\) of \(X_k^\top X_k/n\) for every block.
3
Scale and concatenate.
Divide every entry in block \(k\) by \(\sqrt{\lambda_{1k}}\), then place the scaled blocks side by side in the chosen block order.

Worked calculations

Worked Example: Scaling a Single Block

Suppose three hypothetical individuals have the centered, two-variable block \(X=\begin{bmatrix}1&0\\-1&0\\0&0\end{bmatrix}\). Using the \(1/n\) covariance convention, its covariance matrix is

$$ \frac{X^\top X}{3} = \begin{bmatrix} 2/3&0\\ 0&0 \end{bmatrix}. $$

The eigenvalues are \(2/3\) and \(0\), so the first principal inertia is \(\lambda_1=2/3\). The scaling factor is \(1/\sqrt{2/3}=\sqrt{3/2}\approx1.225\). Therefore

$$ X^\ast =\sqrt{\frac{3}{2}}X = \begin{bmatrix} 1.225&0\\ -1.225&0\\ 0&0 \end{bmatrix}. $$

As a check, the leading eigenvalue of \(X^{\ast\top}X^\ast/3\) is \((3/2)(2/3)=1\). The second direction remains zero; block scaling does not create variation that was absent.

Worked Example: Constructing a Two-Block Weighted Matrix

Consider three hypothetical individuals and two centered blocks. Let \(a=(1,-1,0)^\top\) and \(b=(1,1,-2)^\top\), and define \(X_1=[a\;\;2a]\) and \(X_2=[b]\). The two blocks have the same three rows, but different numbers of variables.

For the first block, \(a^\top a=2\), so

$$ \frac{X_1^\top X_1}{3} = \frac{1}{3} \begin{bmatrix} 2&4\\ 4&8 \end{bmatrix}. $$

The matrix inside has eigenvalues \(10\) and \(0\); hence \(\lambda_{11}=10/3\). For the second block, \(b^\top b=6\), giving \(X_2^\top X_2/3=[2]\), so \(\lambda_{12}=2\). The scaling factors are \(\sqrt{3/10}\approx0.5477\) and \(1/\sqrt{2}\approx0.7071\).

The weighted concatenation has three columns, with the first two from \(X_1\) and the third from \(X_2\):

$$ X^\ast = \begin{bmatrix} 0.5477&1.095&0.7071\\ -0.5477&-1.095&0.7071\\ 0&0&-1.414 \end{bmatrix}. $$

For example, the first row of the first block is \(1\) times \(0.5477\) in column one and \(2\) times \(0.5477\) in column two; the second block’s first entry is \(1\) times \(0.7071\). The corresponding leading covariance eigenvalue of each separately scaled block is \(1\), by the calculation in the next section.

Why the square-root factor is used

The scaling has a direct eigenvalue justification. For any positive constant \(c\), the covariance matrix of \(cX_k\) is \(c^2X_k^\top X_k/n\). Thus all its eigenvalues are multiplied by \(c^2\). Setting \(c=1/\sqrt{\lambda_{1k}}\) gives

$$ \frac{X_k^{\ast\top}X_k^\ast}{n} = \frac{1}{\lambda_{1k}}\frac{X_k^\top X_k}{n}. $$

The eigenvectors are unchanged, and every eigenvalue is divided by \(\lambda_{1k}\). In particular, the largest eigenvalue of the scaled block is \(\lambda_{1k}/\lambda_{1k}=1\). This is the defining calculation behind first-principal-inertia scaling.

Worked Example: Checking the Scaling and Its Dependence on Units

Return to \(a=(1,-1,0)^\top\) and \(b=(1,1,-2)^\top\). The block \(C=[a\;\;b]\) has orthogonal columns, and

$$ \frac{C^\top C}{3} = \begin{bmatrix} 2/3&0\\ 0&2 \end{bmatrix}. $$

Its first eigenvalue is \(2\), so \(C^\ast=C/\sqrt{2}\). Now express the same block in units three times as large: \(D=3C\). Then \(D^\top D/3=9C^\top C/3\), and its first eigenvalue is \(18\). Scaling gives

$$ D^\ast=\frac{3C}{\sqrt{18}}=\frac{C}{\sqrt{2}}=C^\ast. $$

Thus a common positive change of units for the entire block cancels in the scaling factor. This calculation does not mean that arbitrary variable-by-variable changes or different preprocessing choices cancel; those can change the block’s PCA and its scaled matrix.

Diagnostics, alternatives, and limitations

Several simple checks can catch construction errors. Confirm that every scaled block still has \(n\) rows, that its columns remain in their original order, and that the largest eigenvalue of \(X_k^{\ast\top}X_k^\ast/n\) is approximately \(1\). Small numerical differences are expected from rounding; a result far from \(1\) often signals that the wrong eigenvalue, scaling factor, or covariance convention was used. Also check for non-finite entries, zero-variance columns, and duplicated or misordered individuals before interpreting a joint analysis.

The main alternative at this construction stage is to concatenate the preprocessed blocks without block-level scaling. That leaves the block PCA eigenvalues unchanged and may make the scale of a block consequential in the joint PCA. Another possible choice is to normalize a block by its total inertia, the sum of all its eigenvalues. That is a different weighting rule: it targets total variation rather than the leading eigenvalue. These alternatives answer different design questions, so the choice should be reported rather than hidden in preprocessing.

First-eigenvalue scaling sets each block’s largest individual eigenvalue to one; it does not set every block’s total inertia to one, nor guarantee that all blocks contribute equally to every direction of a later joint analysis. Those are distinct properties. A block may have a different number of variables or a different distribution of variation across its directions even after the leading eigenvalue has been normalized.

A common mistake is to divide \(X_k\) by \(\lambda_{1k}\) and reason that this makes its first eigenvalue one. In fact, this divides covariance eigenvalues by \(\lambda_{1k}^2\), because covariance scales quadratically: \((X_k/\lambda_{1k})^\top(X_k/\lambda_{1k})/n=(X_k^\top X_k/n)/\lambda_{1k}^2\). The correction is to divide the data matrix by \(\sqrt{\lambda_{1k}}\). Another mistake is to calculate eigenvalues before the chosen variable-level standardization and then scale a differently preprocessed matrix. The eigenvalue and matrix being scaled must refer to the same preprocessing pipeline.

Key takeaway: For each centered, aligned block, compute its first PCA eigenvalue using a stated convention, divide the entire block by the square root of that eigenvalue, and then concatenate the resulting matrices. Verify that each scaled block’s leading eigenvalue is one.

Check Your Understanding

Answer each question, then compare with the solutions below.

  1. A block has first eigenvalue \(4\). What is its scaling factor, and what is the first eigenvalue after scaling?
  2. Why is dividing the data matrix by \(\lambda_{1k}\) generally not the correct scaling?
  3. Two blocks contain the same individuals but are ordered differently by row. Can they be concatenated directly? Explain.
  4. A centered block has all eigenvalues zero. What prevents the usual scaling, and what should be checked?

Solutions. (1) The factor is \(1/\sqrt{4}=0.5\). Covariance eigenvalues are divided by \(0.5^{-2}=4\), so the first becomes \(4/4=1\). (2) Dividing the data by \(\lambda_{1k}\) divides covariance eigenvalues by \(\lambda_{1k}^2\), not by \(\lambda_{1k}\); use \(1/\sqrt{\lambda_{1k}}\). (3) No. Rows must refer to the same individuals in the same order, or the resulting joint observations would pair measurements from different individuals. (4) The required factor divides by zero. Check whether the block is constant after centering, whether it was read or preprocessed incorrectly, and whether it should be excluded or handled separately.

Clinical Biostats