Module 9 — Missing data
Question: some participants have no glucose measurement. What is the honest way to see, count and handle that?
Open the sample (Ctrl+Shift+O). The dataset plants both kinds of
missingness on purpose (codebook).
Two kinds of missing
- System-missing — the cell is simply blank. TotalCholesterol_mmolL (~4%) and PhysicalActivity_minWk (~3%) have these.
- User-missing — a real recorded code, declared missing in Variable
View. FastingGlucose_mmolL stores
99, labelled "Not measured": the Data View shows the value, every analysis excludes it. The declaration lives in the metadata — which is why the CSV round trip in module 1 lost it, and why99would silently poison a mean if it were undeclared.
See both: run Frequencies on FastingGlucose_mmolL — the 99s sit in
their own "Missing" block of the table — and Descriptives on
TotalCholesterol_mmolL, whose valid N is below 600.
Missing Value Analysis
Analyze → Missing Value Analysis…, variables FastingGlucose_mmolL, TotalCholesterol_mmolL, PhysicalActivity_minWk, Run.
You get per-variable missing counts and pattern summaries, plus Little's MCAR test — "is the missingness unrelated to the data?" This sample's missingness is generated at random, so expect no evidence against MCAR; real studies are rarely so lucky, which is exactly why you check.
What analyses do about it
Procedures exclude incomplete cases per-analysis (listwise/pairwise — correlation's pairwise Ns are why its valid N varies cell by cell). The serious upgrade — filling values in a defensible, uncertainty-preserving way — is multiple imputation (Analyze → Multiple Imputation…), beyond this course; see Analyzing Data.
Exercise
- How many of the 600 cases lack a glucose measurement? (Frequencies gives it directly.)
- Undeclare
99on FastingGlucose_mmolL (clear it in Variable View), run Descriptives, and watch the mean and maximum jump. Re-declare it. That before/after is the whole argument for declared missing codes. - Does correlate TotalCholesterol_mmolL with PhysicalActivity_minWk report N ≈ 560? Where did the other cases go?
The syntax trail
frequencies variables=[FastingGlucose_mmolL]
descriptives variables=[TotalCholesterol_mmolL]
missing_value_analysis variables=[FastingGlucose_mmolL, TotalCholesterol_mmolL, PhysicalActivity_minWk]