Written and maintained by CASRAI Editorial Board
Last updated
SPSS gives you two ways to turn a raw score into a z-score: check a box inside the Descriptives procedure and let SPSS do it automatically, or write a COMPUTE formula yourself. Both produce the same underlying calculation — z = (X − mean) / SD — but they are not always interchangeable, and understanding why matters more than memorizing either menu path. For the statistical theory behind z-scores themselves (the standard normal distribution, the z-table, what a z-score of 1.5 actually means), see the z-score guide; this page covers the SPSS procedure specifically.
Method 1: Descriptives > Save standardized values as variables
This is the fast, built-in route, and it is the one most people are looking for.
- Go to Analyze > Descriptive Statistics > Descriptives.
- Move the scale variable(s) you want standardized into the Variable(s) box.
- Check “Save standardized values as variables” at the bottom of the dialog.
- Click OK.
SPSS runs the usual Descriptives table and, at the same time, writes a new column into your dataset for every variable you selected. By default the new variable is named with a Z prefix — standardizing income produces Zincome, standardizing test_score produces Ztest_score. The syntax equivalent (Paste it from the dialog, or type it directly) is:
DESCRIPTIVES VARIABLES=income test_score /SAVE.
To control the new variable names instead of accepting the Z-prefix default, name them inside the syntax:
DESCRIPTIVES VARIABLES=income (z_income) test_score (z_test_score) /SAVE.
Either way, no separate formula step is needed — the standardized column appears in the Data View the moment the procedure finishes.
What SPSS actually computes
The checkbox computes, for every case, z = (X − M) / SD, where M is that variable’s mean and SD is its sample standard deviation — the denominator-n−1 value, the same number that prints as “Std. Deviation” in the ordinary Descriptives output table, not the denominator-n population standard deviation. The mean and SD are calculated per variable, using every valid (non-missing) case for that specific variable; a case with a missing value on the source variable simply gets a system-missing result in the new Z variable, the same way any SPSS transformation handles a missing input.
Method 2: Transform > Compute Variable
The manual route exists for one real reason the checkbox can’t cover: standardizing against a mean and SD that aren’t this sample’s own. If you want a z-score relative to a published norm, a prior wave’s baseline, or a subgroup mean calculated separately, the checkbox has no way to accept an external reference — it only standardizes a variable against itself. For that, use Transform > Compute Variable and write the formula directly:
COMPUTE z_income = (income - 45230.50) / 12300.75.
EXECUTE.
Here 45230.50 and 12300.75 are the reference mean and SD you’re standardizing against — supplied by you, not calculated by SPSS from the current sample. If you have no external reference and just want a same-sample z-score, there is no accuracy advantage to doing it this way; the checkbox is the same calculation with less room for a typing error.
Why the two methods can disagree
When people find their manual z-scores don’t match the checkbox’s output on the same variable, it is almost always a missing-data bookkeeping problem, not a formula error. The checkbox always pulls the mean and SD from a live Descriptives calculation over the variable’s own valid cases, so missing values are excluded correctly and automatically. A manual formula only matches that if the mean/SD typed into COMPUTE came from the identical set of cases — sourced directly from the same Descriptives (or Explore) output, on the same filter, at the same point in the dataset. Two common ways this drifts:
- A stale or externally-calculated mean/SD. If the reference numbers were computed in a spreadsheet, or in SPSS before a case-exclusion filter was applied, or on an earlier version of the dataset, they won’t match the sample the checkbox is currently standardizing against.
- Missing values handled inconsistently. A hand or spreadsheet calculation that treats a blank cell as zero (rather than excluding it) shifts both the mean and the SD, which shifts every resulting z-score.
The fix is procedural, not statistical: if you’re computing z-scores manually and there’s no deliberate external reference distribution involved, pull the mean and SD straight from a Descriptives run on the exact same cases you’re about to standardize — don’t recalculate or retype them from a separate source.
Reading the resulting z-score
Once you have the standardized column, interpretation follows the standard z-score rules (full detail in the z-score guide and the standard deviation guide):
- The sign tells you direction: a positive z-score sits above the variable’s mean, a negative one sits below it.
- The magnitude tells you distance in standard-deviation units:
z = 1.5means that case sits 1.5 standard deviations above the mean on that variable, regardless of the variable’s original units. - Because standardized scores strip out the original scale, z-scores let you compare a case’s relative standing across variables measured on different scales — e.g., comparing how far above average someone scored on a 0–100 test versus a 1–7 rating scale.
- |z| beyond roughly 3 is commonly flagged as a candidate outlier worth a second look, though that threshold is a convention, not a hard statistical rule, and it assumes a roughly symmetric distribution — check skewness and normality before leaning on it for a heavily skewed variable.
Worked example
Suppose exam_score has a mean of 72 and a standard deviation of 8.5 across the sample (both read directly from the Descriptives table). A student who scored 88 gets:
z = (88 - 72) / 8.5 = 1.88
That student scored 1.88 standard deviations above the class mean — a high result, but not extreme enough on its own to flag as an outlier under the |z| > 3 convention above. A student who scored 55 gets z = (55 - 72) / 8.5 = -2.00, two standard deviations below the mean.
Reporting it
In write-ups, report the raw value alongside the standardized one rather than the z-score alone, since a bare z-score is meaningless without knowing what it was computed against: “the participant’s score (88, z = 1.88) fell approximately 1.9 SD above the sample mean (M = 72.00, SD = 8.50).”
Frequently asked questions
Does SPSS use the sample or population standard deviation for z-scores?
The sample standard deviation (denominator n−1) — the same value shown as “Std. Deviation” in ordinary Descriptives output, not the denominator-n population version.
What does SPSS name the new z-score variable?
By default it prefixes the original variable name with Z (e.g., income becomes Zincome). Custom names can be set in syntax with DESCRIPTIVES VARIABLES=income (z_income) /SAVE.
Can a z-score be negative?
Yes — any case below the mean produces a negative z-score. Only the sign changes; the interpretation of magnitude is the same.
Why is my manually computed z-score different from the checkbox’s?
Almost always because the mean/SD used in the manual formula came from a different set of cases than the checkbox used — a stale calculation, a different filter, or missing values handled inconsistently. See “Why the two methods can disagree” above.
For the broader comparison of SPSS’s three descriptive-statistics procedures (Frequencies, Descriptives, and Explore, including when Explore’s deeper diagnostics are the better tool than a simple z-score), see Descriptive Statistics in SPSS. For more statistical-software guides, see the Research Tools & Software hub.








