PHPMem v2.0.1
Version
1.6.45
Uptime
17 days 21 hours 38 minutes 21 seconds
Memory
Total
512MB
Used
12,72MB (2.48%)
Free
499,28MB
Keys
Current
14 060
Total (since start)
40 994
Evictions
0
Reclaimed
760
Expired Unfetched
0
Evicted Unfetched
0
Connections
Current
3 / 1 024 max
Total
241 909
Rejected
0
llm:a584aa2f06512bd74a1ee7af1105349e0f13770f7506a01fb980aef64cf7fc39
Edit
**The data is structurally clean, but the sleep-debt labels don't match the hours they are supposedly derived from.** I found no nulls, duplicates, impossible values or mixed units.
**What checks out**
- **Completeness and keys:** All 8,500 rows have a distinct `user_id`. The columns I profiled (age, phone minutes, brightness, caffeine, activity, latency, sleep, deep/REM, snoozes, fatigue and all classifiers) have zero nulls.
- **Plausible ranges:** Ranges are plausible and within their natural scales:
- age 18–65
- bedtime phone minutes 1–180
- brightness 10–100
- caffeine 0–250 mg
- activity 0–112 min
- snoozes 0–7
- fatigue 1.0–10.0
- deep sleep 8.1–28.0% and REM 9.6–27.0%
- **No impossible sleep stages:** Deep % plus REM % never exceeds 100 in any row.
- **Clean flags and categories:** `blue_light_filter_active` holds only 0 and 1. The categorical columns (gender, occupation, chronotype, app, sleep-debt category) show a small set of clean labels, with no spelling or case variants in the distinct-value list.
- **Units:** Nothing points to mixed units. Each column sits in a single consistent range.
**Issues worth knowing about**
1. **`sleep_debt_category` is not a clean function of `total_sleep_hours`.** The category bands overlap:
| Category | Hours range |
|---|---|
| Severe Sleep Debt | 3.2–5.38 |
| Moderate Debt | 3.2–6.74 |
- 207 Moderate Debt rows sleep under 4 hours, while 440 Severe rows are under 4 hours.
- A pure hour-based rule would put those 207 rows in Severe.
- The Mild (6.75–7.74) and Optimal (7.75–9.8) bands are cleanly separated, so the inconsistency is confined to the lower categories.
- The label may use another input, such as latency or fatigue, or it may be mislabelled. Don't treat it as a derived field without confirming the rule.
2. **Floors and clipping.**
- `total_sleep_hours` bottoms out at exactly 3.2 in both the Severe and Moderate categories.
- `sleep_latency_min` has a minimum of exactly 6.0, in every category except Severe (26.2).
These look like clamped or simulated bounds rather than natural minimums.
3. **Zero-inflated caffeine.** 4,950 of 8,500 rows (58%) report 0 mg of post-5pm caffeine, while the maximum is 250. Check whether 0 means "none" or "not recorded" before using it in averages.
4. **Extreme latency tail.** Latency reaches 123.3 minutes, and 104 Severe rows plus 13 Moderate rows exceed 90 minutes. These are plausible for insomnia but are a heavy tail, so use medians or robust statistics. Median latency rises from 28.0 minutes (Optimal) to 72.9 (Severe).
5. **Small group.** Non-Binary has only 248 rows (about 3%), so subgroup comparisons for it will be noisy.
6. **Privacy.** `bedtime_phone_minutes` is flagged as person-identifying, so report it only in aggregate.
**Not checked:** whether the values look synthetic, such as suspiciously uniform distributions, and the audit columns (`_ingestion_timestamp`, `_batch_id`, `_source_file`, `_source_system`).