Written and maintained by CASRAI Editorial Board
Last updated
SPSS tracks two genuinely different kinds of missing data, and most of the confusion in a messy dataset comes from treating them as one thing. It also excludes missing cases differently depending on which procedure you run — the same dataset can lose 40 cases in one analysis and 4 in another with no setting changed, just because one procedure defaults to listwise deletion and another to pairwise. This guide covers how to declare missing-value codes correctly, what each exclusion method actually removes, and what SPSS’s Missing Value Analysis and Multiple Imputation modules do versus what a simple substitution does.
System-missing vs. user-missing: two different things SPSS calls “missing”
System-missing is a genuinely empty cell — nothing was entered, and SPSS displays it as a period (.) in Data View. It carries no information about why the value is absent.
User-missing is a real value you deliberately flag as not usable — a code like -99 for “refused to answer,” -98 for “not applicable,” or -97 for “skipped by branching logic.” The value is stored in the data, but you tell SPSS to treat it as missing for analysis. This distinction matters because it’s information: a refusal and a skip pattern are not the same kind of gap, and collapsing them both into a single system-missing period throws that distinction away before you’ve even started deciding how to handle the gap.
Declaring user-missing values in Variable View
In Variable View, click the cell in the Missing column for the variable you’re coding. The dialog offers two options:
- Discrete missing values — up to three specific values (e.g.,
-99,-98,-97). - Range plus one discrete value — a continuous range (e.g.,
-1through-9) plus one additional specific code, useful when a survey uses a whole block of negative codes for different non-response reasons.
Once declared, every SPSS procedure automatically excludes those codes from computations by default — you don’t need to filter or recode them out of the working dataset for standard analyses to treat them as missing. The values stay visible in the raw data (which matters for later distinguishing refusal from skip), but statistics, tests, and charts exclude them exactly as if they were system-missing. If you need to see how many cases fall into each user-missing code and why, run Analyze > Descriptive Statistics > Frequencies before declaring the codes — that tells you whether “refused” and “not applicable” are common enough to matter separately, or rare enough to treat as one category.
How SPSS excludes missing cases: listwise vs. pairwise, procedure by procedure
Once a case has any missing value in a variable a procedure uses, SPSS has to decide whether to drop that case from every calculation in the procedure, or only from the specific calculations that actually need the missing variable. That choice is set per procedure, not globally, and the defaults are not consistent across SPSS:
- Listwise exclusion drops a case from the entire analysis if it’s missing on any variable involved — a regression with 6 predictors loses a case if even one predictor is missing for that case. This is the default (and, in several procedures, the only option) for regression-type procedures: linear regression, logistic regression, and the general linear model.
- Pairwise exclusion (sometimes labeled “exclude cases pairwise” in the Options dialog) uses whatever data a case has for each specific calculation, computing correlations or covariances from a different, potentially varying, subset of cases for each pair of variables. Bivariate correlations (Analyze > Correlate > Bivariate) offers this as an alternative to listwise, and it’s genuinely common to see it selected there specifically to avoid losing cases wholesale on a large correlation matrix.
Neither is a fix for missing data — both simply decide which complete-data subset to compute on, and both assume the missingness itself doesn’t bias the result (formally, that data are missing completely at random). Pairwise also has a real practical failure mode: because the pairs of variables used for each cell of a correlation or covariance matrix can differ, the resulting matrix isn’t guaranteed to be internally consistent, and can come out non-positive-definite — a problem that then blocks downstream procedures (like factor analysis) that require a valid covariance matrix as input. See Listwise vs. Pairwise Deletion for the full comparison of when each is defensible and how to report the choice.
Check the specific procedure’s Options dialog before assuming a default — don’t infer it from another procedure you’ve used. A dataset with real missingness can silently return a much smaller effective sample size for one analysis than another in the same output, and that’s worth checking explicitly, not discovering later from a footnote.
Diagnosing the missingness pattern before choosing a fix
SPSS’s Analyze > Missing Value Analysis (in the base package, not an add-on) is the tool for understanding the pattern of missingness before deciding what to do about it: it produces a missing-value summary per variable, a pattern table showing which combinations of variables tend to be missing together, and Little’s MCAR test — a formal test of whether the data are missing completely at random (a non-significant result is consistent with, though it doesn’t prove, MCAR; a significant result tells you the missingness is probably related to observed values in the data, which rules out treating it as ignorable). This diagnostic step is what should actually decide between listwise/pairwise deletion, single imputation, and multiple imputation — not a default left unexamined.
Simple substitutions, and why they usually aren’t the right fix
Older or simpler approaches — replacing a missing value with the variable’s mean, or carrying the last observed value forward — are available in SPSS (mean substitution as an option inside several procedures’ missing-value settings; last observation carried forward mainly seen in longitudinal/clinical designs) but both distort the data in predictable, well-documented ways: mean substitution shrinks variance and attenuates correlations, and carrying a value forward assumes the person’s true trajectory was flat, which is rarely the honest assumption. See Last Observation Carried Forward (LOCF) for why it’s discouraged specifically in longitudinal and clinical contexts. These methods are fast, and they still show up in older published work, but reviewers increasingly expect a stated justification for using one over multiple imputation.
SPSS’s Multiple Imputation procedure
Data > Impute Missing Data Values (also reachable via Analyze > Multiple Imputation in some versions) runs SPSS’s built-in multiple imputation: it generates several complete versions of the dataset (each with plausible values filled in using the observed relationships between variables, drawing from a distribution rather than a single fixed estimate), lets you run your intended analysis on each imputed dataset separately, and then pools the resulting estimates into one set of results using Rubin’s rules — combining the point estimates and correctly inflating the standard errors to reflect the extra uncertainty from having imputed data in the first place, rather than treating imputed values as if they were observed. This is the mechanism behind why multiple imputation, done properly, gives you a defensible standard error and a single-source dataset that can’t be reduced to a fixed number of fabricated single values. For the underlying logic (how many imputations are actually needed, and what pooling is really doing to the standard errors), see Multiple Imputation: A Practical Protocol, How Many Imputations Do You Need?, and Rubin’s Rules for Pooling Multiply Imputed Estimates. If your model can be estimated by maximum likelihood directly (common in SEM and mixed-model contexts), Full Information Maximum Likelihood (FIML) is a real alternative that skips the imputation step entirely — SPSS’s AMOS module supports FIML for structural equation models, though the base Statistics package’s regression and ANOVA procedures do not.
Multiple imputation in SPSS pools results automatically for a limited, specific set of procedures (regression, logistic regression, and a handful of others recognize the imputed-dataset split variable and pool on their own); for anything outside that supported list, you’ll need to run the analysis on each imputed dataset and pool the estimates by hand using Rubin’s rules, or export to a package with broader native support.
Reporting what you did
Whatever method you use, report it specifically enough that a reader could reproduce the decision: the proportion of missing data per key variable, the result of Little’s MCAR test (or the reasoning if you didn’t run it), the exclusion or imputation method used, and — if you used multiple imputation — the number of imputations and the software/algorithm SPSS used to generate them. “Missing data were handled appropriately” is not a reportable method; the specific mechanism is what a reviewer or a re-analysis needs.
Frequently asked questions
What’s the difference between system-missing and user-missing in SPSS?
System-missing is a genuinely empty cell with no recorded value, shown as a period in Data View. User-missing is an actual recorded value (like -99 for “refused”) that you’ve told SPSS to exclude from calculations via the Missing column in Variable View. Both get excluded from most analyses by default, but user-missing values remain visible in the raw data, so you can still see and report why a value is absent.
How do I exclude missing values in SPSS?
For system-missing values, most procedures exclude them automatically. For a specific code representing a non-response reason, declare it in Variable View’s Missing column first, then it’s excluded by default the same way. Whether a case is dropped from an entire analysis (listwise) or only from the specific calculation that needs the missing variable (pairwise) depends on the procedure — check its Options dialog rather than assuming.
Does SPSS have multiple imputation built in?
Yes — the base Statistics package includes it under Data > Impute Missing Data Values. It’s not a separate paid add-on module in current versions.
Why did SPSS give me a smaller sample size in one analysis than another on the same dataset?
Different procedures apply different default exclusion rules. A regression using listwise deletion drops any case missing on any predictor; a correlation matrix using pairwise deletion keeps more cases per individual coefficient but can produce an inconsistent, non-positive-definite matrix. Check each procedure’s Options dialog to see which rule it applied.
Is mean substitution ever an acceptable way to handle missing data in SPSS?
It’s available, but it artificially shrinks variance and attenuates correlations, which is well documented. It’s generally defensible only for a very small proportion of missing values in an otherwise low-stakes variable; for anything more substantial, multiple imputation or a documented deletion approach is the safer, more defensible choice.








