SPSS command: SPSS CORRESPONDENCE
Correspondence analysis and perceptual maps in your browser
Correspondence analysis decomposes the chi-square association in a two-way table into a few dimensions and plots row and column categories on one map, so you can see which categories go together.
Free · No account · Files stay on your device · Updated 18 October 2026
What it tells you
Crosstabs runs the SPSS CORRESPONDENCE (ANACOR) procedure on your device, from two categorical variables or from a table of counts already stored in the data.
- How much association the table holds (total inertia = χ² / N) and whether it is significant.
- How many dimensions are needed: each dimension's singular value, inertia and proportion of inertia accounted for.
- Where each row and column category sits on the map (scores) and how heavily it weighs (mass).
- Which categories define each dimension (contribution of point to dimension) and how well each point is represented (contribution of dimension to point).
When to use it
Use it when
- A crosstab with many rows or columns — brand by attribute, region by preferred product, age band by news source — that is too large to read cell by cell.
- You already have an aggregated table of counts (one row per category, one column per category) rather than raw responses.
- You need a brand or positioning map for a report and want the numbers behind it (masses, contributions, quality).
Use something else when
- Three or more categorical variables at once: use multiple correspondence analysis.
- You only need to test whether two variables are associated: the crosstab chi-square test answers that directly.
- The table holds measurements or percentages rather than nonnegative counts or frequencies.
- A tiny table (2 × 2 or 2 × k) has only one dimension, so a map adds little beyond the row and column profiles.
How to run it in Crosstabs
- 01
Open your data
Open a .sav, CSV or Excel file in the workspace and switch to Statistics mode. The file is read in your browser.
- 02
Choose Correspondence analysis
In the Dimension reduction group, pick Correspondence analysis (CORRESPONDENCE).
- 03
Set the Data source
Under Data choose Two categorical variables and pick a Row variable and a Column variable (each with 2–40 categories), or choose Table stored in the data, tick the Columns of the table (nonnegative counts) and pick a variable for Row labels.
- 04
Pick dimensions and normalization
Set Dimensions in solution (default 2) and a Normalization method: Symmetrical, Principal, Row principal, Column principal, or Custom (q) with q between −1 (column principal) and 1 (row principal).
- 05
Run and read the map
Click Run correspondence analysis. With three or more dimensions, use Map dimensions to switch the pair of axes plotted; the map can be exported with its labels.
- 06
Check weights and missing values
A whole-number weight is used as a frequency weight; a fractional weight still builds the table but the significance is withheld. Cases missing either variable, and user-missing codes, are excluded.
Worked example
Computed by the Crosstabs engine from the synthetic data below when this page was built — not typed in.
Data
400 synthetic survey respondents, each with an age band (four groups) and a main news source (four channels). Younger groups were simulated to lean towards social media and older groups towards television and print; draws use a fixed seed, so every build cross-tabulates the same file.
| Age band | News sites | Social media | Television | Active Margin | |
|---|---|---|---|---|---|
| 18–29 | 30 | 8 | 39 | 12 | 89 |
| 30–44 | 40 | 7 | 30 | 19 | 96 |
| 45–59 | 38 | 23 | 25 | 28 | 114 |
| 60+ | 28 | 28 | 5 | 40 | 101 |
| Active Margin | 136 | 66 | 99 | 99 | 400 |
| Dimension | Singular Value | Inertia | Chi Square | Sig. | Proportion accounted for | Cumulative |
|---|---|---|---|---|---|---|
| 1 | 0.392 | 0.1537 | 0.945 | 0.945 | ||
| 2 | 0.088 | 0.0078 | 0.048 | 0.992 | ||
| 3 | 0.035 | 0.0012 | 0.008 | 1.000 | ||
| Total | 0.1627 | 65.07 | <.001 | 1.000 | 1.000 |
9 degrees of freedom.
| Age band | Mass | Score 1 | Score 2 | Inertia | Quality |
|---|---|---|---|---|---|
| 18–29 | 0.223 | 0.751 | −0.347 | 0.052 | 0.996 |
| 30–44 | 0.240 | 0.437 | 0.485 | 0.023 | 1.000 |
| 45–59 | 0.285 | −0.136 | −0.131 | 0.003 | 0.758 |
| 60+ | 0.253 | −0.924 | −0.008 | 0.085 | 0.997 |
Symmetrical normalization. Quality is the share of the point's inertia explained by the two retained dimensions.
| News source | Mass | Score 1 | Score 2 | Inertia | Quality |
|---|---|---|---|---|---|
| News sites | 0.340 | 0.168 | 0.318 | 0.007 | 0.958 |
| 0.165 | −0.770 | −0.449 | 0.042 | 0.994 | |
| Social media | 0.247 | 0.886 | −0.260 | 0.078 | 0.999 |
| Television | 0.247 | −0.604 | 0.123 | 0.036 | 0.984 |
Symmetrical normalization. Each dimension's sign is arbitrary; it is fixed so the largest column score is positive.
How to read it
The table shows a clear association (χ²(9) = 65.07, p < .001), with a total inertia of 0.163 (χ² divided by the 400 cases). Dimension 1 alone carries 94.5% of that inertia and the first two dimensions 99.2%, so the two-dimensional map summarizes the table with little loss. On dimension 1, 18–29 (score 0.75) sits on the same side as Social media (0.89), while 60+ (−0.92) sits with Print (−0.77): the first axis is an age gradient from digital to traditional news.
Output tables explained
- Correspondence Table
- The analysed counts (weighted if a weight is on) with the Active Margin of every row and column. Categories with a zero margin are left out and listed in a warning.
- Summary
- Singular value, inertia and proportion of inertia (accounted for and cumulative) per dimension, with the total chi-square, its degrees of freedom and significance.
- Perceptual map: {rows} and {columns}
- Row and column points on two dimensions, with axis titles showing each dimension's share of inertia. In a symmetrical map read directions from the origin, not row-to-column distances.
- Overview Row Points
- For each row category: mass, score in each dimension, inertia, the point's contribution to each dimension's inertia and each dimension's contribution to the point, with the total (quality).
- Overview Column Points
- The same statistics for column categories. Each dimension's sign is fixed so that the largest column score is positive.
Assumptions and notes
- Cells are nonnegative counts or frequencies; every retained row and column needs a positive total.
- The chi-square significance assumes independent observations and reasonably large expected counts; correspondence analysis itself is descriptive.
- The map shows the dimensions you keep: check the cumulative proportion of inertia and each point's quality before interpreting positions.
How the results are validated
Reference values come from an independent numpy implementation of the SPSS CORRESPONDENCE formulas, cross-checked against R's ca package and Python's prince (largest difference about 1e-15). On three tables — the smoke data from ca, a random 6 × 5 and a wide 3 × 7 table — tests require singular values and inertias to agree within 1e-12, chi-square within 1e-9, masses, point inertias and contributions within 1e-10, and row and column scores under all four named normalizations within 1e-10. Validation evidence
Questions
Which normalization should I choose?
Symmetrical (the default) spreads inertia evenly and suits a joint map read by direction. Row principal is best when you want to compare row categories with each other, column principal for columns, and principal when you will interpret distances within rows and within columns but not between them.
Can I measure the distance between a row point and a column point?
Not in a symmetrical map. Read associations by direction: a row and a column category in the same direction from the origin, both far from it, are associated. Distances are only meaningful among points of the same set under the matching principal normalization.
How many dimensions should I keep?
Look at the Summary table: keep the dimensions that together account for most of the inertia, usually two for a map. A table with r rows and c columns has at most min(r, c) − 1 dimensions.
My data is already a table of counts. Do I need raw cases?
No. Choose Table stored in the data, tick the count columns and pick the variable that holds the row labels; each data row becomes a table row.
Why is the significance missing?
Your weight variable has fractional values, so it is not a frequency weight and ordinary chi-square inference would be wrong. The map and inertias are still shown; use the complex-samples procedures for design-based tests.
Related procedures
- Multiple Correspondence AnalysisMULTIPLE CORRESPONDENCE
- Crosstabs StatisticsCROSSTABS /STATISTICS
- Multidimensional Scaling (PROXSCAL)PROXSCAL
- Categorical Principal Components (CATPCA)CATPCA
- Hierarchical Loglinear AnalysisHILOGLINEAR
- Free SPSS alternative: full coverage list
Run Correspondence Analysis on your own data
Open a .sav, CSV or Excel file. Everything runs in your browser; the file never leaves your device.
SPSS is a trademark of IBM Corp. Crosstabs is not affiliated with or endorsed by IBM.