Why Normalize Across Arrays?
Microarray arrays can differ in their overall intensity distributions even when they measure the same probes. Quantile normalization is a between-array procedure: it replaces the sorted intensities in each array with a common set of rank-specific values. A probe’s normalized value depends on its rank within its array, not on its original intensity alone.
The procedure is useful when the arrays have the same comparable probes and it is appropriate to put their empirical intensity distributions on a common scale. It does not determine whether observed differences are technical or biological. The normalization target is constructed from the arrays being processed, so the array set and the expression scale are part of the analysis choice.
The earlier material on normalization targets and expression scale distinguishes choosing an analysis scale from choosing a normalization target. Here, assume that the intensity values have already been prepared on the scale intended for analysis. Averaging on the original intensity scale and averaging on a log scale generally produce different targets.
Definition and Rank-Wise Algorithm
Suppose there are \(J\) arrays and \(m\) common probes measured on every array. Let \(x_{ij}\) be the intensity for probe \(i\) in array \(j\). For each array, sort its \(m\) intensities from smallest to largest. Write \(x_{(r)j}\) for the value at rank \(r\) in array \(j\), where \(r=1,\ldots,m\).
The rank is calculated separately within each array. Consequently, the same probe can receive different ranks in different arrays, and the same rank can refer to different probes across arrays. Quantile normalization aligns the rank distributions; it does not align probes by their identity when calculating \(q_r\).
Use arrays with the same set of comparable probes, with one intensity per probe per array and no unhandled missing values. Work on the chosen expression scale.
For every array, order its probe intensities from lowest to highest and retain the probe identity associated with each rank.
For each rank \(r\), calculate \(q_r\) from the \(J\) values occupying that rank.
Replace each ranked value by its rank target, then return the assigned values to their original probe positions.
A Complete Calculation
Worked Example: Normalizing Three Arrays With Distinct Intensities
Consider four probes, \(P1\) through \(P4\), measured on three hypothetical arrays. The entries are intensities on the selected analysis scale.
| Probe | Array A | Array B | Array C |
|---|---|---|---|
| P1 | 2 | 1 | 3 |
| P2 | 4 | 5 | 4 |
| P3 | 6 | 7 | 8 |
| P4 | 8 | 9 | 10 |
Sort each array and record the probe order. Array A has \((2,4,6,8)\) in the order \(P1,P2,P3,P4\); Array B has \((1,5,7,9)\) in the order \(P1,P2,P3,P4\); and Array C has \((3,4,8,10)\) in the order \(P1,P2,P3,P4\). The rank targets are:
For example, \(P2\) in Array B is at rank 2, so its normalized value is \(q_2=4.333\), not the value assigned to \(P2\) in another array simply because it is the same probe. Applying the targets by rank and restoring probe order gives:
| Probe | Normalized Array A | Normalized Array B | Normalized Array C |
|---|---|---|---|
| P1 | 2 | 2 | 2 |
| P2 | 4.333 | 4.333 | 4.333 |
| P3 | 7 | 7 | 7 |
| P4 | 9 | 9 | 9 |
In this particular data set, all three arrays have the same probe order, so their normalized probe values happen to match. In general, probe order can differ, and the normalized values in a given probe row need not be identical.
Why the Target Is an Average
At any fixed rank, quantile normalization chooses one common value to represent the \(J\) observed intensities at that rank. The arithmetic mean is the value that minimizes their total squared distance. This gives a direct justification for the rank-wise averaging step.
The minimization is performed separately at each rank. It therefore minimizes the sum of squared discrepancies between the observed rank values and the common target, under the constraint that each rank has one shared target. It does not minimize discrepancies between the same probe across arrays.
Ties and the Assigned Values
If an array has tied intensities, a tied value occupies more than one position in the sorted list. A consistent tie rule is needed because equal original values should remain equal after normalization. Use the average of the target values for all ranks occupied by the tie.
Worked Example: Assigning a Target to a Tied Value
Suppose three hypothetical arrays each have three probes. Their sorted intensities are Array A: \((1,1,4)\), Array B: \((2,3,5)\), and Array C: \((1,4,6)\). The rank targets are:
In Array A, the value 1 occupies ranks 1 and 2. Assign it the average of those two rank targets:
Thus Array A’s normalized sorted values are \((2,2,5)\). Array B’s are \((4/3,8/3,5)\), and Array C’s are also \((4/3,8/3,5)\), since their sorted values have no ties. The tie rule preserves equality within Array A. Because of the tie, that array’s normalized sorted values do not exactly equal the rank-target sequence.
Implementations can differ in how they handle ties, so the method used should be stated when ties matter. Breaking ties by assigning different target values to equal intensities would make the result depend on an arbitrary ordering of tied probes.
Restoring Probe Order and Checking the Result
Worked Example: Sorting, Assigning, and Restoring Probe Labels
Take two hypothetical arrays with three probes. Array D has \(P1=7\), \(P2=2\), \(P3=5\); Array E has \(P1=4\), \(P2=6\), \(P3=1\). Their sorted values are D: \((2,5,7)\), with probe order \(P2,P3,P1\), and E: \((1,4,6)\), with probe order \(P3,P1,P2\).
Calculate the rank targets: \(q_1=(2+1)/2=1.5\), \(q_2=(5+4)/2=4.5\), and \(q_3=(7+6)/2=6.5\). Assign these by rank. For Array D, \(P2\) receives 1.5, \(P3\) receives 4.5, and \(P1\) receives 6.5. For Array E, \(P3\) receives 1.5, \(P1\) receives 4.5, and \(P2\) receives 6.5.
After restoring the original probe order, Array D is \((P1=6.5,P2=1.5,P3=4.5)\), while Array E is \((P1=4.5,P2=6.5,P3=1.5)\). The sorted normalized values match, but the values attached to individual probes differ because the probes had different ranks in the two arrays.
With no ties and the same number of probes in each array, a direct check is to sort the normalized values in every array: each sorted list should equal \((q_1,\ldots,q_m)\). Also check that the probe labels were restored correctly; a sorted list alone cannot detect a mistaken mapping back to probes. With ties, use the stated tie rule when checking the result.
Choosing the Method and Avoiding Misinterpretation
Quantile normalization is not the same operation as within-array loess normalization for two-color arrays. Loess normalization models and adjusts a within-array intensity-dependent pattern in the comparison of two color channels. Quantile normalization instead aligns rank distributions across arrays. The methods address different structures in the data; one should not treat one as an automatic substitute for the other.
A simpler alternative is to multiply each array by a scale factor, which can adjust an overall level but does not generally make the full empirical distributions match. Quantile normalization aligns every rank, not just one summary such as a mean or median. This stronger constraint is useful when a shared distribution is appropriate, but it also means that genuine distributional differences between arrays are removed as well as technical ones.
- Check probe comparability. The rank-wise calculation assumes the same set of features is represented across arrays. Different or misaligned probe sets make ranks difficult to compare.
- Check the selected scale. A rank-preserving transformation, such as taking logarithms of positive intensities, preserves order but changes the rank-wise averages and therefore changes the target.
- Inspect distributions before and after. Before normalization, sorted values may differ; after normalization, the sorted lists should agree in the no-tie case. Unexpected results can indicate a sorting, indexing, or data-preparation error.
- Do not interpret matched distributions as evidence that the arrays are biologically identical. The operation constructs a shared empirical distribution; it does not establish why the original distributions differed.
A common mistake is to say, “Probe \(P1\) has rank 2 in one array, so its normalized value should be the average of the \(P1\) measurements across arrays.” That is not the algorithm: the target at rank 2 averages the second-smallest value from each array, regardless of probe identity. The correction is to sort each array first, calculate the rank targets, assign them by each probe’s within-array rank, and then restore probe order.
Check Your Understanding
Answer each question, then compare your reasoning with the solutions below.
- Three arrays have sorted values \((2,6,10)\), \((4,8,12)\), and \((3,7,11)\). Calculate the target at each rank.
- In an array, probe \(P\) is the largest of five intensities. Which rank target does it receive, and does the identity of \(P\) affect that target?
- An array has equal intensities occupying ranks 2 and 3. Under the tie rule described here, what value is assigned to each tied probe?
- After normalization without ties, what should be true of the sorted normalized values across arrays?
- Why can two arrays have the same sorted normalized values but different normalized values for a particular probe?
Solutions. (1) The targets are \(q_1=(2+4+3)/3=3\), \(q_2=(6+8+7)/3=7\), and \(q_3=(10+12+11)/3=11\). (2) It receives the rank-5 target, the average of the largest intensity in each array; the probe identity does not affect that target. (3) Each tied probe receives \((q_2+q_3)/2\), so they remain equal. (4) Every array’s sorted normalized list should equal the shared target sequence. (5) A probe can have a different rank in each array, so it receives a different rank target even though the sorted target sequence is shared.