一、研究背景与研究意义
1.1 研究背景
数据相关岗位在数字化转型中快速扩张,但“数据岗位”并不是单一职业。数据分析师、数据工程师、数据科学家、机器学习工程师和管理岗位的职责、技能门槛与薪资结构均有明显差异。只看整体平均薪资,容易掩盖经验层级与岗位构成。
远程办公、跨国雇佣和地区薪酬差异进一步增加了比较难度。同一岗位在不同国家、公司规模和办公方式下可能对应不同的市场定价,因此需要在统一美元口径下,结合岗位与组织特征开展结构化分析。
代码报告数据集https://mbd.pub/o/bread/YZaUlJ1wZg==
1.2 研究意义
第一,薪资分布分析可以帮助求职者理解中位水平、离散程度和高薪尾部,避免把少量极端案例当作普遍市场报价。第二,经验和岗位分组能够识别职业成长路径,说明技能升级与职责变化可能对应的薪资区间。
第三,远程办公、公司规模和地区比较可以揭示市场结构差异,为招聘预算、岗位定价和职业选择提供参考。第四,轻量模型能够检验现有字段的信息含量,并形成可重复的薪资区间估计。
1.3 研究问题
本研究回答五个问题:总体薪资呈现怎样的分布;2020—2023 年薪资中位数如何变化;经验层级与岗位类别的差异有多大;远程办公、公司规模与地区是否呈现稳定差异;岭回归和随机森林能达到怎样的测试集误差。
二、数据结构与研究设计
二、数据结构与研究设计
2.1 数据结构
原始文件包含 3,755 条记录、11 个字段,覆盖 2020—2023 年。原始薪资采用多种货币,分析统一使用 salary_in_usd 字段。去重后样本为 2,584 条,无缺失值。
变量 | 类型 | 取值或范围 | 用途 |
年份 | 连续 | 2020—2023 | 趋势与预测 |
经验层级 | 分类 | 初级至管理层 | 职业阶段 |
用工类型 | 分类 | 全职、合同等 | 就业形式 |
岗位名称 | 分类 | 93 类 | 岗位结构 |
美元年薪 | 连续 | 5,132—450,000 | 核心指标 |
远程比例 | 连续 | 0、50、100 | 办公方式 |
公司地区 | 分类 | 72 个 | 地区比较 |
公司规模 | 分类 | 小型、中型、大型 | 组织特征 |
2.2 分析与模型方法
探索性分析使用直方图、箱线图、柱状图和相关系数热力图。由于薪资右偏且存在高薪尾部,分组结果优先使用中位数,同时报告样本数量,避免小样本类别产生误导。
预测部分对薪资取自然对数,分类变量采用独热编码,年份和远程比例标准化。数据按 80% 与 20% 划分训练集和测试集,比较中位数基线、岭回归和随机森林,并在还原美元口径后计算 MAE、RMSE 与 R²。
三、总体薪资分布
median_salary = df["salary_in_usd"].median() mean_salary = df["salary_in_usd"].mean() plt.figure(figsize=(7.6, 4.6)) ax = sns.histplot(df["年薪_千美元"], bins=30, kde=True, color=COLORS[0]) ax.axvline(median_salary / 1000, color="#9E2A2B", linestyle="--", linewidth=1.8, label=f"中位数 {median_salary/1000:.1f} 千美元") ax.set_title("图1 数据岗位美元年薪分布", fontsize=15, fontweight="bold") ax.set_xlabel("年薪(千美元)") ax.set_ylabel("记录数") ax.legend(frameon=False) finish_figure("fig01_salary_distribution.png")去重样本的年薪中位数为 130.0 千美元,均值为 133.4 千美元。分布右侧尾部较长,少量高薪岗位抬高均值,说明中位数更适合描述典型水平。大部分记录集中在中等薪资区间,高薪记录数量较少但跨度较大。右偏分布意味着“平均薪资”可能高于多数求职者实际面对的报价,发布市场报告时应同时给出中位数、四分位数和样本量。
四、年度变化
左图分析:各年份箱体整体上移,说明样本中的典型薪资水平提高;同一年份内部仍有较大离散。
右图分析:年薪中位数从 2020 年的 74.1 千美元上升到 2023 年的 140.0 千美元。
五、经验层级与薪资
exp_counts = df["经验层级"].value_counts().reindex(exp_order) plt.figure(figsize=(7.4, 4.4)) ax = sns.barplot(x=exp_counts.index, y=exp_counts.values, hue=exp_counts.index, palette=COLORS[:4], legend=False) ax.set_title("图5 不同经验层级的样本数量", fontsize=15, fontweight="bold") ax.set_xlabel("经验层级") ax.set_ylabel("记录数") annotate_bars(ax) finish_figure("fig05_experience_counts.png")初级、中级、高级和管理层年薪中位数依次为 61.9、95.0、148.8 和 189.6 千美元。
高级岗位数量最多,占样本的 60.1%,整体数据明显偏向资深从业者。
六、岗位结构与岗位溢价
岗位频数反映市场需求与数据覆盖的共同结果。数据工程、数据科学和数据分析岗位数量较多,说明企业的数据基础设施、建模和业务分析需求构成主要用工方向。
高薪岗位通常具有更高技术门槛、研究复杂度或决策责任,但岗位名称并不能完整描述工作内容。不同企业可能使用相同名称表示不同职责,也可能使用不同名称描述相似工作,因此需要结合技能栈和职位描述。
七、远程办公与薪资
左图分析:完全远程占样本的 46.9%,现场办公同样占较大比例,混合办公较少。
右图分析:完全远程岗位年薪中位数为 130.0 千美元,现场办公为 137.5 千美元。
八、公司规模与薪资
九、用工类型与地区差异
十、相关结构与变量关系
corr_cols = ["work_year", "salary_in_usd", "remote_ratio", "经验序数", "规模序数"] corr = df[corr_cols].corr().rename(index={"work_year":"年份", "salary_in_usd":"美元年薪", "remote_ratio":"远程比例", "经验序数":"经验层级", "规模序数":"公司规模"}, columns={"work_year":"年份", "salary_in_usd":"美元年薪", "remote_ratio":"远程比例", "经验序数":"经验层级", "规模序数":"公司规模"}) plt.figure(figsize=(6.8, 5.3)) ax = sns.heatmap(corr, annot=True, fmt=".2f", cmap="Blues", vmin=-1, vmax=1, center=0, square=True, linewidths=0.8) ax.set_title("图14 数值指标相关系数热力图", fontsize=15, fontweight="bold", pad=12) finish_figure("fig14_correlation_heatmap.png") print(corr.round(3).to_string())经验层级具有明确的有序结构,因此与薪资的相关系数较高。年份相关系数反映整体市场与样本结构随时间变化。远程比例只有三个取值,简单相关系数无法充分表达它与岗位、地区之间的交互。
岗位名称、公司地区和用工类型是分类变量,不适合直接放入普通相关矩阵。预测模型通过独热编码把这些类别纳入,从而评估它们与薪资的综合关系。相关系数和模型重要性都不能替代因果识别。
十一、模型设计与效果比较
预测任务以美元年薪为目标,输入年份、经验层级、用工类型、岗位名称、远程比例、公司地区和公司规模。对数变换用于缓解右偏;训练集与测试集按经验层级分层抽样,保证两部分结构相近。
模型 | MAE(千美元) | RMSE(千美元) | R² |
中位数基线 | 52.13 | 65.40 | -0.006 |
岭回归 | 36.41 | 48.65 | 0.443 |
随机森林 | 37.82 | 49.59 | 0.422 |
岭回归的 RMSE 最低,为 48.7 千美元,R² 为 0.443;岭回归和随机森林均明显优于中位数基线。
十一、预测诊断与变量贡献
十二、结论、建议与研究局限
12.1 主要结论
第一,数据岗位薪资呈明显右偏分布,中位数为 130.0 千美元,均值为 133.4 千美元。少量高薪记录会抬高平均水平,市场比较应优先采用中位数。
第二,经验层级形成稳定薪资梯度,岗位名称和公司地区也表现出显著分层。高级岗位在样本中占比最高,整体薪资结论更接近资深从业者市场。
第三,远程办公、公司规模和用工类型存在分组差异,但受到岗位、地区、经验和样本量影响,不能作简单因果解释。跨地区比较还需要考虑生活成本和购买力。
第四,轻量模型已经能显著改善基线预测,最优模型测试集 RMSE 为 48.7 千美元。岗位、经验、地区等变量包含有效信息,但高薪端仍存在较大不确定性。
12.2 实践建议
建议一,求职者应使用“岗位—经验—地区”三维基准比较薪资,而不是只看行业平均值。建议二,企业建立分层薪酬带,并明确每一职级的技能、独立交付和业务影响要求。
建议三,远程岗位报价应明确按员工所在地、公司所在地还是全球统一薪酬带执行。建议四,模型输出应提供中位预测和合理区间,并由招聘与业务负责人复核,不自动替代岗位评估。
12.3 研究局限与后续方向
数据缺少具体工作年限、教育背景、技能栈、行业、城市、奖金、股权与福利,岗位名称也不能完全代表职责。重复记录去除降低了结构偏差,但也可能把真实重复招聘合并,因此结果应理解为去重岗位组合的分析。
后续可引入城市生活成本和购买力平价,对岗位名称进行技能主题聚类,并按年份开展时间外验证。最终目标不是追求复杂模型,而是形成透明、可解释、可更新的薪资比较体系。
具体细节见原文
创造不易,谢谢各位多多点赞收藏!