# Compensation Salary Archive · Student Guide

**Original source:** [aijobs.net global salary survey](https://aijobs.net/salaries/), published in the public domain under CC0. Also mirrored on Kaggle as [Data Science, AI & ML Job Salaries in 2025](https://www.kaggle.com/datasets/adilshamim8/salaries-for-data-science-jobs).  
**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:

```r
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

1. Count rows and exact duplicate rows.
2. Inspect coverage by year; early years are sparse and 2025 may be incomplete.
3. Inspect company-size, geography, remote-status, and job-title composition.
4. Decide whether to retain or remove exact duplicates and explain the sensitivity of
   important results to that choice.
5. 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_usd` is 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.
