

# 如何以更低偏差比较招聘启事中的薪资

只在同类职位、资历、货币和计薪周期内比较广告薪酬，并说明有多少符合条件的启事具有可用薪酬。

比较各招聘启事的薪酬时，许多帖子不显示任何薪资金额。为减少比较误差，不要把缺失薪酬放进薪酬计算，而把它计入覆盖计数。公布的区间是招聘广告中的薪酬开价区间，不是实际所得，也不是经核实的员工收入。中位数是排序后的中间值；条目数为偶数时，取两个中间值的平均数。中点是一条启事下限与上限的平均数；它不是预期的员工薪酬。缺失的计薪周期、货币和边界保持未知，并继续作为覆盖排除项。

Actor 是托管的数据采集程序，Task 是已保存的输入预设。你可以使用 [Indeed Jobs Scraper Actor](https://apify.com/chronometrica/indeed-jobs-scraper) 及其宽泛的 [Indeed Jobs Scraper Task](https://apify.com/chronometrica/indeed-jobs-scraper/examples/indeed-jobs-scraper) 来发现招聘启事。使用一个查询和一个国家、较小的 cap2、salaryType 等于 any、minSalary 等于 0，以及 saveOnlyUniqueItems 等于 true。

高薪筛选会选出薪酬更高的披露，不能衡量总体薪酬覆盖，也不能得到有代表性的薪酬中位数。薪酬筛选会改变覆盖样本的分母。保留以下原始字段和结构化字段：salaryRaw、salaryMin、salaryMax、salaryCurrency、salaryPeriod、salarySource、jobId、jobUrl、title、seniority、employmentType、locationRaw、descriptionStatus、descriptionText 和 scrapedAt。保留缺失值，并对照原始来源检查结构化单位。当前两条已接受的行确立的是启事身份和详情身份，不是薪资基准，也不是员工所得。

## 界定比较组

1. 在查看薪酬之前先界定比较组。查看职位族、资历、地点、工作模式、雇佣类型和观察窗口。不要让重复项和重新发布给同一条启事额外的权重。
2. 保存完整的来源行和筛选说明。在移除缺失薪酬之前，保留符合条件的不重复启事这一分母。薪酬筛选会改变该分母，你必须报告这一变化。
3. 检查原始薪资文本，以及结构化的边界和单位。区分年薪、月薪、时薪、合同日费率、奖金和总薪酬这些用语。把未知周期和未知货币分开。不要只因为一个数字看起来很大，就猜测它是年薪。
4. 把货币和周期都匹配的启事归为一组。对不相同的单位使用分开的面板。只有在工作时间安排和假设都已知时，才转换单位。在本指南中，把时薪和年薪分开。不要把时薪乘以 2,080，当作普遍成立的员工收入事实。
5. 把具有可比较双端区间的启事放进区间摘要组。单端数值需要单独一组，除非你另行定义一种摘要。绝不要把缺失的边界改成 0，也不要猜测中点。
6. 报告符合条件的启事总数、已披露薪酬、可比较区间、按原因划分的排除项，以及采集限制。然后展示区间边界和中点摘要，并说明它们的确切含义。各中点的中位数是对广告区间的摘要，不是实际薪资的中位数。
7. 展示这一小部分的分布，而不只给出一个数字。一个较宽的区间可能与另一个区间重叠。中点略高并不意味着更好的薪酬开价。小样本不能支持关于全国劳动力市场的主张。在做出个人选择之前，先到当前来源上重新核对薪酬。

## 薪资比较的虚构示例

本示例中的全部启事和薪酬都是编造的。设想同一地区、同一时间窗口内有六条符合条件的不重复中级分析师启事。

## 资格与薪酬单位台账

| 职位 ID | 职位名称 | 资历 | 原始薪酬 | 货币 | 周期 | 下限 | 上限 | 状态 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| J1 | 分析师 | 中级 | 80000 至 100000 | USD | 年 | 80000 | 100000 | 可比较 |
| J2 | 分析师 | 中级 | 90000 至 110000 | USD | 年 | 90000 | 110000 | 可比较 |
| J3 | 分析师 | 中级 | 100000 至 120000 | USD | 年 | 100000 | 120000 | 可比较 |
| J4 | 分析师 | 中级 | 缺失 | 未知 | 未知 | 空白 | 空白 | 因缺失排除 |
| J5 | 分析师 | 中级 | 40 至 50 | USD | 小时 | 40 | 50 | 因周期排除 |
| J6 | 分析师 | 中级 | 90000 至 100000 | 未知 | 年 | 90000 | 100000 | 因货币排除 |

已披露薪酬的是六条启事中的五条，约等于 83.3%。可比较的美元年薪双端区间出现在六条中的三条，等于 50%。J4 薪酬缺失、J5 周期不同、J6 货币未知，是三项各自独立的排除。不要去掉它们后声称薪酬覆盖率为 100%。

## 可比较区间与中点摘要

| 职位 ID | 下限（美元/年） | 上限（美元/年） | 中点（美元/年） |
| --- | --- | --- | --- |
| J1 | 80000 | 100000 | 90000 |
| J2 | 90000 | 110000 | 100000 |
| J3 | 100000 | 120000 | 110000 |

对于这三行可比较数据，中点值是每年 90000、100000 和 110000 美元。中点的中位数是每年 100000 美元。下限的中位数是 90000，上限的中位数是每年 110000 美元。这两个中位数描述的是观察到的区间端点，并不能保证构成任何一位雇主的薪酬开价。

J5 的时薪区间仍为每小时 40 至 50 美元，放在单独的单行面板中，不做年薪换算。J6 保留其原始区间，但没有可比较的美元标签。如果高薪筛选在发现过程中去掉 J1 和 J4，可见样本的分母就会改变。不要重新计算 83.3%，好像原来的六条来源样本仍然保留着一样。把该影响显示为筛选选择，而不是真实的薪酬增长。

## 下一步行动

打开宽泛的 [Indeed Jobs Scraper Task](https://apify.com/chronometrica/indeed-jobs-scraper/examples/indeed-jobs-scraper)，并查看 [Indeed Jobs Scraper Actor](https://apify.com/chronometrica/indeed-jobs-scraper)，在覆盖台账中保留每一条符合条件的启事，且只比较已核实的同类单位区间。

## 来源和延伸阅读

- [Indeed Jobs Scraper Actor](https://apify.com/chronometrica/indeed-jobs-scraper)
- [Recruiting Hell 薪资跟踪讨论](https://www.reddit.com/r/recruitinghell/comments/1r3a8jj/i_tracked_63336_us_job_postings_last_week_feb_26/)
- [CS Career Questions 招聘启事讨论](https://www.reddit.com/r/cscareerquestions/comments/1red1yc/found_5000_cs_jobs_in_440_000_jobs_posted_on/)