A diagnostic-analytics case study on behavioral and demographic patterns in U.S. serial homicide, built for a university Data Analytics course. The project takes a small, manually-compiled dataset of serial-killer incidents and asks: what patterns connect victim selection, method, and the killer's documented mental health profile — and could those patterns help investigators connect cases earlier?
University group project (Data Analytics course) — built by Haneen Ayman with Zoubida Torjani. Inspired by real-world behavioral analysis work like the FBI's Behavioral Analysis Unit and the use of geographic/behavioral linkage in cases such as the Golden State Killer (Joseph James DeAngelo).
This is a small (51-incident, 21-offender), manually compiled dataset built from public sources (Wikipedia victim tables, Hickey's Serial Murderers and Their Victims, FBI BAU case material) for an academic exercise in diagnostic analytics. It is not a clinical or epidemiological sample, and it says nothing about people with these diagnoses in general — the overwhelming majority of people with ASPD, NPD, Borderline PD, psychosis, or any other disorder referenced here are never violent. The patterns below describe this specific, extreme, non-representative group of convicted offenders, not mental illness as a category. Treat the findings as a classroom exercise in pattern-finding, not as a clinical claim about risk.
What patterns exist in serial homicide across the United States — specifically in victim age, killing method, relationship to victim, and the killer's primary mental health profile — and do those patterns vary meaningfully by state? We used diagnostic analytics ("why did this happen, and what would let us recognize it earlier?") rather than predictive or prescriptive analytics, since the goal was to explain existing patterns, not forecast new crimes.
| Rows | 51 victim-level incidents |
| Offenders | 21 distinct serial killers |
| Time span | 1928 – 2009 |
| Geography | 12 U.S. states |
| Type | Structured, row-per-victim |
| Source | Manually compiled — external/public records (Wikipedia, Hickey 2016, FBI BAU) |
| Columns | Killer, KillerAge, VictimAge, VictimGender, Method, Year, Relationship, State, MentalIllness |
No single existing public dataset combined victim demographics, method, relationship, geography, and documented mental health profile in one place, so this dataset was built by hand for the project.
The raw file (data/raw/Data_Analytics_raw.csv) had a few quality issues, fixed in src/clean_data.py:
| Issue | Before | After |
|---|---|---|
| Synonym labels for the same diagnosis | "ASPD" and "Antisocial PD" recorded as two different disorders |
Merged into one canonical label, "ASPD" |
| Inconsistent whitespace | "Stranger " and "Stranger" read as two different categories |
Stripped to a single "Stranger" category |
| Typos | "Stragulation", "Sexual Assualt" |
"Strangulation", "Sexual Assault" |
| Multi-valued cell | One MentalIllness cell held a comma-separated list |
Split into a Disorders list column + one binary (0/1) indicator column per disorder, for co-occurrence analysis |
No missing values or duplicate rows were found. One intentional exception: "Paranoid Schizophrenia" and "Paranoid Schizophrenia (contested)" were kept separate, since the "(contested)" tag records a real historical dispute over David Berkowitz's diagnosis — merging it would erase a meaningful distinction rather than fix an error.
Victim age (years), this dataset:
| Mean | Median | Mode | Std. Dev. | Min | Max |
|---|---|---|---|---|---|
| 26.1 | 25 | 19 | 10.3 | 8 | 52 |
- 65% of victims in this dataset were female.
- Strangulation was the most common method (≈41% of incidents), followed by handgun and stabbing.
- ASPD was by far the most frequently recorded disorder, followed by Psychopathy, Paraphilia, and NPD.
All charts are regenerated from the cleaned dataset by src/visualize.py and saved to outputs/.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Diagnostic analytics. The project explains why observed patterns in victim age, method, and relationship exist by correlating them with the killer's primary recorded disorder — it does not forecast future offenses (predictive) or recommend interventions (prescriptive), though both are discussed below as natural next steps.
- Stranger victims are most associated with handgun or strangulation methods; acquaintance victims more often with stabbing or extended-contact methods (e.g. torture).
- ASPD is the most frequent primary disorder in the dataset and co-occurs heavily with Psychopathy and NPD — consistent with how these traits cluster clinically, within this offender sample.
- Female victims in this sample are, on average, younger than male victims.
- Relationship to victim is a stronger differentiator of method than any single disorder label is.
- Predictive: model victim profile or method from killer age and disorder history (would need a much larger, less manually-curated dataset).
- Prescriptive: simulate monitoring/intervention strategies for at-risk released offenders.
- Time-series: track escalation patterns over an offender's active period.
- Geospatial: map incident density against case-clearance data to study how location affects detection speed.
Python (pandas, NumPy, Matplotlib, seaborn), Excel (for early data entry).
.
├── data/
│ ├── raw/Data_Analytics_raw.csv # original, untouched
│ └── Data_Analytics_clean.csv # cleaned dataset used for analysis
├── src/
│ ├── clean_data.py # reproducible cleaning step
│ └── visualize.py # EDA + chart generation
├── outputs/ # generated charts + summary stats
├── docs/
│ └── presentation.pptx # the in-class presentation deliverable
└── README.md
pip install -r requirements.txt
python src/clean_data.py # raw -> data/Data_Analytics_clean.csv
python src/visualize.py # clean data -> outputs/*.pngGroup project for a university Data Analytics course. Built by Haneen Ayman and Zoubida Torjani.







