1. Two-stage model
Every policy-year record is generated in two stages, mirroring how actuaries typically decompose a frequency–severity model:
- Frequency — a logistic model decides whether the policy has a claim at all this year. It is driven primarily by the driver's past claims count, with secondary contributions from vehicle use (commercial vs private), vehicle age, and region. Driver age, gender, and experience have only small effects here, by design — this keeps them clean predictors of severity rather than confounded with frequency.
- Severity — for policies that do have a claim, a log-normal model determines the claim amount. This is where the four core hypotheses are implemented directly.
Which stage count to generate is itself a runtime choice on the
generator page —
two-stage (the default) runs both steps above;
single-stage runs the frequency step only. The frequency
logic and its coefficients are identical either way, so
claim_occurred, claim_id,
claim_type, and claim_date
are the same regardless of mode. claim_amount_ghs — the only severity-side column — is entirely absent from the output in
single-stage mode, not null-filled. Whichever mode you pick is recorded
in the dataset's manifest and citation, same "two downloads are two different
datasets" reasoning
Breast Cancer's and Micro-Credit & Susu Scoring's own stage_mode toggles document.
2. The four hypotheses
All four hypotheses below are severity-side — they describe claim size, not whether a claim happens — so they only apply, and are only verified, in two-stage mode.
| Factor | Direction on claim size | Rationale encoded |
|---|---|---|
| Driver age | Negative | Older drivers drive more cautiously; when they do claim, it's smaller. |
| Gender (male) | Positive | Male drivers linked to higher-speed, higher-impact driving. |
| Driving experience | Negative | More experienced drivers avoid the most serious accidents. |
| Past claims count | Positive | Riskier drivers overall — claims are larger, not just more frequent. |
3. Coefficients
Severity is modeled as log(claim_amount) = log_base + age_coef·(age − 35) +
male_coef·is_male + experience_coef·experience_years +
past_claims_coef·past_claims + ε, where ε is normal noise and the result is capped near the vehicle's
insured value. Each term's sign matches the hypotheses table above
(age and experience negative, male and past_claims positive); the
exact magnitudes are Insurance's own calibration, chosen to produce a
clearly recoverable signal at typical sample sizes (a few thousand
records) without being so strong that the relationship is trivial to
detect. They aren't published on this page and aren't derived from
real claims data — see the current defaults, and change them, in the
Advanced: customize the model panel on the
motor generator; note
in your write-up which values you changed from the defaults.
4. Determinism
Generation runs server-side using a seeded generator (numpy's
default_rng, PCG64) rather than an unseeded
source of randomness. The same seed, record count, and generator
version (stamped in every citation and manifest — see the Cite section
on the generator page) will always reproduce byte-identical output.
Report the seed and record count alongside your dataset — that pair,
together with the generator version, is sufficient for anyone to
regenerate exactly what you analyzed.
5. What's decorative vs. load-bearing
Region, vehicle make/model, policy class, and premium calculations exist to make records look like real Ghanaian motor policies (NIC-style policy classes, GHS premiums, common vehicle makes) and are internally consistent with each other, but they are not the object of the four hypotheses above. Treat the premium and vehicle-value figures as illustrative, not as calibrated to actual National Insurance Commission rate tables.
6. Known limitations
- This is synthetic data. It should never be presented as, or mistaken for, real insurer data in a publication.
- Relationships are linear in log-space by construction; no interaction effects (e.g. age × experience) are modeled unless you add them.
- The frequency model's secondary driver-level effects are intentionally weak — if your thesis needs age/gender/experience to also drive claim frequency (not just severity), raise those effects in the Advanced: customize the model panel on the motor generator and say so in your write-up.
7. Citing this tool
Something like: "Synthetic data generated using Dataset Foundry (seed = 42, n = 5,000), a deterministic motor insurance data generator built for this thesis in the absence of accessible real-world insurer data." Include the seed and record count so the exact dataset is reproducible from the tool alone — or use the auto-generated citation block on the generator page, which also includes the generator version and any advanced-config changes.