PHPMem v2.0.1
Version
1.6.45
Uptime
18 days 11 hours 46 minutes 15 seconds
Memory
Total
512MB
Used
12,33MB (2.41%)
Free
499,67MB
Keys
Current
13 424
Total (since start)
40 994
Evictions
0
Reclaimed
762
Expired Unfetched
0
Evicted Unfetched
0
Connections
Current
2 / 1 024 max
Total
246 437
Rejected
0
llm:54f89963ac7af0dc10dac2f91ca3a127003eae20b6424d076a5571648f75678f
Edit
**The most surprising finding is that this "tennis player data" is really a lower-tier, patchily recorded dataset, and the surface comparisons rest on very uneven coverage.**
1. **The typical player is not elite.** The mean player rank is about 311 on hard courts, 361 on clay and 517 on carpet. Medians are 237, 288 and 440, and ranks run as high as 2,225. The dataset covers roughly 237k player-matches and about 3,963 distinct tournament strings, so most of it is the Challenger and qualifying level. A reader expecting a dataset of tour stars would find the opposite.
2. **Serve stats are missing for a large and uneven share of matches.** The share of player-matches with serve stats (aces, double faults, points won) is 86.5% on grass, 66.6% on hard, 58.9% on clay and only 19.3% on carpet (479 of 2,477 rows). Missingness depends heavily on surface, so the data is not missing at random.
3. **The headline surface effects partly reflect who plays where, and what gets recorded.**
- Average aces per match are 7.94 on carpet, 7.57 on grass, 5.88 on hard and 3.38 on clay. The ordering is plausible.
- Grass matches feature far higher-ranked players (mean rank 151, median 109) than clay (361 and 288). So the ace gap mixes surface speed with player quality.
- The carpet figure rests on only 479 matches with serve data.
- Double faults barely vary by surface, at 2.81 to 3.17 per match. Surface seems to change how often players hold serve far more than how often they fault.
4. **Minor data quality issue.** 28 player-matches have a blank surface and no serve stats at all.
Together these points mean any "best surface" or win-probability model built on this data needs to control for rank and handle the missing serve stats explicitly. Otherwise it will mistake data selection for tennis.
This is based on the per-surface aggregates and the coverage query I ran on `raw_kaggle`. I did not test how much of the ace gap survives after controlling for rank.