Sample health study — codebook
The dataset behind File → Open Sample Dataset: a synthetic cross-
sectional health study of 600 participants, 21 variables. It is generated
(deterministically, by tool/generate_health_study.dart in the project
repository) purely for training — no value in it describes any real person
or population. Zone names are deliberately abstract for the same reason.
The same data ship in two forms:
- the dressed
.ckddocument the app opens — all the metadata below already set; - a raw CSV (
sample_test_data/health_study.csvin the repository) — the same values with no metadata, which is what module 1's import exercise recreates.
Variables
| Variable | Type | Measure | Meaning / coding |
|---|---|---|---|
| ParticipantID | String | Nominal | P1000–P1599 |
| Age | Numeric | Scale | Years, 18–80 |
| Sex | String | Nominal | Male / Female |
| StudyZone | String | Nominal | Enrolment zone, Zone A–Zone D (synthetic) |
| Residence | String | Nominal | Urban / Rural |
| EducationLevel | Numeric | Ordinal | Coded 0=None, 1=Primary, 2=Secondary, 3=Tertiary (value labels in the .ckd) |
| MaritalStatus | String | Nominal | Single / Married / Divorced / Widowed |
| Height_cm | Numeric | Scale | Centimetres |
| Weight_kg | Numeric | Scale | Kilograms |
| BMI | Numeric | Scale | kg/m² — the classic recode-into-categories candidate |
| SystolicBP | Numeric | Scale | mmHg |
| DiastolicBP | Numeric | Scale | mmHg |
| HeartRate | Numeric | Scale | Beats/min |
| FastingGlucose_mmolL | Numeric | Scale | mmol/L; 99 = "Not measured", declared user-missing (~5% of cases) |
| TotalCholesterol_mmolL | Numeric | Scale | mmol/L; ~4% blank (system-missing) |
| PhysicalActivity_minWk | Numeric | Scale | Minutes/week; ~3% blank (system-missing) |
| FamilyHistoryDM | String | Nominal | Family history of diabetes, Yes / No |
| SmokingStatus | String | Nominal | Never / Former / Current |
| AlcoholUse | String | Nominal | None / Occasional / Regular |
| Hypertensive | String | Nominal | Yes / No (SBP ≥ 140 or DBP ≥ 90, with a little noise) |
| Diabetic | String | Nominal | Yes / No (fasting glucose ≥ 7.0 mmol/L, with a little noise) |
The planted structure (instructor's key)
Because the data are generated, we can say exactly what is in them — which is what makes exercises checkable:
Real effects (students should find these):
- SystolicBP rises with Age and with BMI, and is higher again in current smokers; DiastolicBP tracks SystolicBP. Correlation, regression and the smoking group comparisons all show it.
- FastingGlucose rises with BMI and with a family history of diabetes; a
small cluster of diabetic-range values makes the
Diabeticoutcome real. - Hypertensive prevalence differs by SmokingStatus (via the SBP effect) — the module 5 crosstab's chi-square is significant.
- The outcome labels carry ~3% classification noise, so Hypertensive/Diabetic agree strongly with their thresholds without being tautologies.
Deliberate nulls (students should find nothing — and learn to say so):
- HeartRate relates to nothing — it is pure noise around 72 bpm.
- PhysicalActivity_minWk is independent of TotalCholesterol_mmolL — the workbook's standing example of a plausible hypothesis the data do not support.
Missingness, for module 9:
FastingGlucose_mmolL— the declared code pattern:99is a real stored value, flagged user-missing in the metadata, labelled "Not measured".TotalCholesterol_mmolL,PhysicalActivity_minWk— plain blank cells (system-missing).