Compensation Salary Archive · Student Guide
Original source: aijobs.net global salary survey,
published in the public domain under CC0. Also mirrored on Kaggle as Data
Science, AI & ML Job Salaries in 2025.
Course file: salaries.csv.gz
Snapshot date: August 3, 2025
Rows: 151,445 plus the header
Observed work years: 2020-2025
Getting the Data
Read the course copy directly — no download or account needed:
library(readr)
salaries <- read_csv(paste0(
"https://stat.cmu.edu/~sgallagh/courses/mads-fall-2026/",
"datavis-36613/data/salaries.csv.gz"
))Use this copy, not a fresh download. aijobs.net republishes the live survey every week. A newer file would have a different row count, contain 2026 records, and change every duplicate and coverage number your audit reports. Everyone in the course works from the same frozen snapshot so that results are comparable and reproducible. Cite the snapshot date above in your reproducibility appendix.
Variables
| Variable | Meaning |
|---|---|
work_year |
Reported year of compensation |
experience_level |
EN entry, MI mid, SE senior,
EX executive |
employment_type |
FT full-time, PT part-time,
CT contract, FL freelance |
job_title |
Supplied job-title text |
salary |
Salary in the reported currency |
salary_currency |
ISO currency code for salary |
salary_in_usd |
Supplied USD conversion used for cross-record comparisons |
employee_residence |
Employee country code |
remote_ratio |
0 on-site, 50 hybrid, 100
fully remote |
company_location |
Employer country code |
company_size |
S small, M medium, L
large |
Required Audit Before Analysis
- Count rows and exact duplicate rows.
- Inspect coverage by year; early years are sparse and 2025 may be incomplete.
- Inspect company-size, geography, remote-status, and job-title composition.
- Decide whether to retain or remove exact duplicates and explain the sensitivity of important results to that choice.
- Record any title-grouping rules in code. A role family is an analytical definition, not a field supplied by the source.
Important Boundaries
- The archive has no employer name, posting ID, observation date, or row-level source.
- Exact duplicates cannot be proven erroneous or independent.
- Record counts are not employer demand or job-opening counts.
salary_in_usdis salary, not total compensation, and is not adjusted for inflation or local purchasing power.- Remote status has only three coarse values.
- Employee residence and employer location are country-level fields, not city-level locations.
- Cross-border employer/employee pairs may be too sparse for a credible geographic- arbitrage claim.
- Results are descriptive associations unless a stronger design is supplied and defended.
Reproducibility Expectations
- Read the hosted course copy without manually editing rows.
- Document cleaning and title-family rules, with the relevant code, in the embedded reproducibility appendix of the submitted HTML report.
- Label every important chart with data scope, years, units, and exclusions.
- Report sample sizes for small comparison groups.
- Cite the aijobs.net source, the August 3, 2025 snapshot date, and your own access date in the final report.