关于 people-analytics
people-analytics 是面向 HR 和业务团队的人员分析技能,通过统计分析、细分和数据治理把员工数据转化为业务洞察。它涵盖离职风险、薪酬公平、敬业度及 DEI 指标,并强调匿名化和偏差检查。
主要功能
- 01分析员工流动与留任指标
- 02评估离职风险和薪酬公平
- 03分析敬业度调查及驱动因素
- 04按群体细分并监测 DEI 指标
- 05检查数据质量、隐私与模型偏差
适用场景
- 01查找特定部门离职率偏高的原因
- 02检查不同群体的薪酬公平情况
- 03从敬业度调查中识别优先改进领域
- 04在保护匿名性的前提下汇总人员数据
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ borghei/ claude-skills --skill people-analytics安装后在 Claude Code 中输入/people-analytics确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
scripts/attrition_predictor.pyheadcount_planner.pysurvey_analyzer.py详细介绍
人员分析
该 Agent 以资深人员分析合作伙伴的身份开展工作,运用统计建模、细分分析和数据治理最佳实践,将员工数据转化为可执行的洞察。
先澄清
在生成分析之前,请确认以下输入。如果有任何信息未知或含糊不清,请提问——不要自行假设:
- 业务问题 + 成功指标 — 为整个分析定下方向(步骤 1);问题含糊会导致输出缺乏重点
- 分析类型(描述性分析、离职风险、薪酬公平性或敬业度驱动因素) — 决定采用的方法和适用的脚本
- 可用数据源 + 数据质量/完整性 — 决定哪些方法切实可行(步骤 2)
- 细分群体 + 隐私阈值(最小群体规模) — 决定细分方式以及采用的匿名化/汇总处理
停止规则:只询问最能影响输出的 2-3 项。如果用户说“直接起草”,则继续,并在产出内容顶部列出你的假设。
工作流
- 明确问题 -- 与 HR 或业务相关方澄清业务问题。例如:“为什么销售部门的离职率是公司平均水平的 2 倍?”或“我们的薪酬在不同性别之间是否公平?”为分析定义成功指标。
- 评估数据就绪情况 -- 确定所需的数据源(HRIS、ATS、调查平台、薪资系统)。检查数据的完整性、时效性和质量。继续之前,标记任何缺口。
- 开展分析 -- 使用分析工具包中的适当方法(描述性统计、回归、分类、细分)。记录假设和局限性。
- 验证发现 -- 与领域专家(HRBP、经理)核实结果。检验统计显著性和实际意义。检查预测模型在受保护群体中是否存在偏见。
- 提出建议 -- 将发现转化为 2-3 条具体、可执行的建议,并说明预期影响和成本。
- 交付并监控 -- 使用仪表板框架展示洞察。为关键指标设置持续监控和告警阈值。
检查点:完成步骤 2 后,请确认所有数据均已匿名化或汇总处理,符合隐私政策要求,然后再开始分析。
分析成熟度模型
| 级别 | 名称 | 能力 | 可回答的典型问题 |
|---|---|---|---|
| 1 | 运营报告 | 人数、合规、临时查询 | “我们有多少员工?” |
| 2 | 高级报告 | 仪表板、趋势、基准对比、细分 | “各季度的离职率发生了怎样的变化?” |
| 3 | 分析 | 统计分析、相关性、根因 | “是什么因素导致销售部门员工离职?” |
| 4 | 预测 | 离职预测、绩效建模、风险评分 | “未来 6 个月内谁可能离职?” |
| 5 | 规范性分析 | 自动化建议、实时干预 | “我们应该采取什么措施留住此人?” |
核心 HR 指标
员工队伍指标
| 指标 | 公式 | 基准 |
|---|---|---|
| 离职率 | (离职人数 / 平均人数)x 100 | 10-15% |
| 留任率 | (留任人数 / 期初人数)x 100 | 85-90% |
| 招聘周期 | 从职位申请开放到接受录用通知的天数 | 30-45 天 |
| 单次招聘成本 | 招聘总成本 / 招聘人数 | $3-5K |
| 非自愿遗憾离职率 | 遗憾离职人数 / 离职总人数 | < 30% |
绩效指标
| 指标 | 公式 | 基准 |
|---|---|---|
| 高绩效员工占比 | 评为最高等级的员工比例 | 15-20% |
| 目标完成率 | 已实现目标数 / 设定目标数 | 80%+ |
| 晋升率 | 晋升人数 / 员工人数 | 8-12% |
敬业度指标
| 指标 | 公式 | 基准 |
|---|---|---|
| eNPS | 推荐者 % - 贬损者 % | 20-40 |
| 敬业度得分 | 调查综合得分(1-100) | 70%+ |
| 缺勤率 | 缺勤天数 / 工作日数 | < 3% |
离职预测模型
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
def build_turnover_model(employee_data: pd.DataFrame) -> dict:
"""
Build and evaluate a turnover prediction model.
Input: DataFrame with columns for features + 'left_company' (0/1).
Output: dict with model, feature importance, and evaluation metrics.
"""
features = [
'tenure_months', 'salary_ratio_to_market', 'performance_rating',
'months_since_last_promotion', 'manager_tenure', 'team_size',
'engagement_score', 'training_hours_ytd', 'projects_completed'
]
X = employee_data[features]
y = employee_data['left_company']
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42, stratify=y
)
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
report = classification_report(y_test, y_pred, output_dict=True)
importance = (
pd.DataFrame({'feature': features, 'importance': model.feature_importances_})
.sort_values('importance', ascending=False)
)
return {'model': model, 'importance': importance, 'evaluation': report}
def score_flight_risk(model, current_employees: pd.DataFrame) -> pd.DataFrame:
"""
Score current employees for flight risk.
Returns DataFrame with employee_id, flight_risk_score (0-1), and risk_level.
"""
probabilities = model.predict_proba(current_employees[model.feature_names_in_])[:, 1]
risk_levels = pd.cut(
probabilities,
bins=[0, 0.25, 0.50, 0.75, 1.0],
labels=['Low', 'Medium', 'High', 'Critical']
)
return pd.DataFrame({
'employee_id': current_employees['employee_id'],
'flight_risk_score': probabilities.round(3),
'risk_level': risk_levels
}).sort_values('flight_risk_score', ascending=False)
示例:销售部门离职根因分析
QUESTION
Sales voluntary turnover is 22% vs 12% company average. Why?
DATA
Source: HRIS + engagement survey + exit interviews (n=45 exits, trailing 12 mo)
ANALYSIS
Segmentation by tenure band:
< 1 yr: 35% of exits (onboarding/ramp issues)
1-2 yr: 40% of exits (comp dissatisfaction + career path)
2+ yr: 25% of exits (manager relationship)
Regression on exit survey scores (n=38 respondents):
Top drivers of intent-to-leave:
1. "I am paid fairly" (beta = -0.42, p < 0.01)
2. "I see a career path here" (beta = -0.31, p < 0.01)
3. "My manager supports my development" (beta = -0.28, p < 0.05)
Compensation benchmark:
Sales IC3 compa-ratio: 0.88 (12% below midpoint)
Sales IC2 compa-ratio: 0.91 (9% below midpoint)
Rest of company average: 0.98
FINDINGS
1. Sales comp is significantly below market, especially at IC2-IC3
2. No defined career ladder for Sales ICs beyond IC3
3. New hires (< 1 yr) leaving due to unrealistic ramp expectations
RECOMMENDATIONS
1. Market adjustment: Bring Sales IC2-IC3 to 95th percentile compa-ratio ($180K budget)
2. Publish a Sales career ladder through IC5 with clear promotion criteria
3. Redesign onboarding: extend ramp period from 30 to 90 days with milestone targets
EXPECTED IMPACT
Reduce Sales attrition from 22% to 14-16% within 12 months
ROI: $180K adjustment saves ~$450K in replacement costs (10 fewer exits x $45K/hire)
薪酬公平性分析
import pandas as pd
import statsmodels.api as sm
def analyze_pay_equity(employee_data: pd.DataFrame) -> dict:
"""
Conduct pay equity analysis controlling for legitimate pay factors.
Returns raw gap, adjusted gap, model fit, and employees flagged for review.
"""
# Raw gap
avg_by_gender = employee_data.groupby('gender')['salary'].mean()
raw_gap = (avg_by_gender['Female'] - avg_by_gender['Male']) / avg_by_gender['Male']
# Adjusted gap (control for level, tenure, performance, location)
controls = pd.get_dummies(
employee_data[['job_level', 'tenure_years', 'performance_rating', 'department', 'location']],
drop_first=True
)
controls = sm.add_constant(controls)
controls['is_female'] = (employee_data['gender'] == 'Female').astype(int)
model = sm.OLS(employee_data['salary'], controls).fit()
adjusted_gap = model.params['is_female']
# Flag outliers (residual > 2 std dev)
employee_data['predicted'] = model.predict(controls)
employee_data['residual'] = employee_data['salary'] - employee_data['predicted']
threshold = 2 * employee_data['residual'].std()
flagged = employee_data[abs(employee_data['residual']) > threshold]
return {
'raw_gap_pct': round(raw_gap * 100, 1),
'adjusted_gap_usd': round(adjusted_gap, 0),
'model_r_squared': round(model.rsquared, 3),
'employees_flagged': len(flagged),
'flagged_details': flagged[['employee_id', 'salary', 'predicted', 'residual']]
}
员工敬业度调查分析
- 计算响应率 -- 目标为 80% 以上,以确保统计有效性。标记响应率低于 60% 的部门。
- 计算类别得分 -- 按类别(经理、成长、文化、薪酬)计算李克特量表响应的平均值。与上一期进行比较。
- 进行驱动因素分析 -- 将类别得分对总体敬业度进行回归分析,以确定对敬业度影响最大的类别。
- 细分 -- 按部门、级别、任职年限区间和地点拆分结果。找出得分与公司平均值差异最大的群体。
- 确定优先事项 -- 在 2x2 矩阵中绘制各类别(影响力 vs 得分)。“影响力高、得分低”的象限 = 优先采取行动的领域。
检查点:为保护匿名性,受访者少于 5 人的任何细分群体均不显示结果。
DEI 指标框架
| 领域 | 指标 | 数据来源 |
|---|---|---|
| 代表性 | 按级别划分的性别 / 种族分布 | HRIS |
| 薪酬公平 | 原始差距、调整后差距(控制变量回归) | Payroll + HRIS |
| 晋升 | 按人口统计群体划分的晋升率 | HRIS |
| 招聘 | 按人口统计群体划分的录用和接受率 | ATS |
| 包容性 | 包容性指数、归属感得分、心理安全感 | Survey |
数据治理检查清单
开始任何人员分析项目之前:
- 清楚记录业务问题和目的
- 应用数据最小化原则(仅收集所需数据)
- 完成隐私影响评估
- 尽可能进行匿名化或聚合处理
- 测试预测模型是否对受保护群体存在偏差
- 实施基于角色的访问控制
- 制定数据保留政策
- 规划员工沟通(透明原则)
脚本
# Analyze engagement survey results with driver analysis
python scripts/survey_analyzer.py --file survey_results.csv
python scripts/survey_analyzer.py --file survey_results.csv --prior prior_survey.csv --json
# Score attrition risk from employee data
python scripts/attrition_predictor.py --file employees.csv
python scripts/attrition_predictor.py --file employees.csv --threshold 0.7 --json
# Workforce headcount planning calculations
python scripts/headcount_planner.py --file workforce.csv --growth 0.15 --attrition 0.12
python scripts/headcount_planner.py --file workforce.csv --growth 0.15 --attrition 0.12 --json
故障排除
| 问题 | 根本原因 | 解决方案 |
|---|---|---|
| 调查响应率低(< 70%) | 调查疲劳、不相信匿名性,或之前的调查没有带来明显行动 | 将调查缩短至最多 15-20 个问题;清楚说明匿名性保障措施;在发起下一次调查前,公布之前调查的前 3 项发现并采取行动 |
| 员工流失模型产生过多误报 | 对历史数据过拟合、缺少关键特征,或类别不平衡 | 添加正则化;使用 SMOTE 或类别权重处理不平衡;通过交叉验证进行验证,而不只是划分训练集和测试集;将经理质量和薪酬比率作为特征 |
| 利益相关者不信任分析结果 | 结果与实际体验不符,或方法不透明 | 透明地介绍方法;发布前与 HRBP 验证发现;使用置信区间而非点估计;在进行预测分析前,先从描述性分析入手以建立信任 |
| HRIS 数据源存在数据质量问题 | 编码不一致、字段缺失、记录过时或条目重复 | 成立数据治理委员会;为每个字段指定数据负责人;每季度进行数据质量审计;在数据摄取时建立自动验证检查 |
| 隐私顾虑阻碍分析 | 匿名化不足、缺乏同意框架或存在合规缺口 | 应用 k-匿名(群体规模至少为 5);每个项目开始前进行隐私影响评估;尽早联系 Legal;无需使用个人级数据时采用聚合数据 |
| 尽管采取了干预措施,敬业度得分仍然持平 | 衡量了错误的驱动因素、行动计划未执行,或调查过于笼统 | 进行驱动因素分析,找出影响力高但得分低的领域;指定行动负责人并每季度跟进;按部门或职能定制调查问题 |
| 领导层没有根据洞察采取行动 | 洞察过于学术化、缺乏业务背景,或交付过晚 | 首先说明业务影响(收入、成本、风险);将建议限制在 2-3 项,并明确负责人和时间表;在数据收集后 2 周内交付洞察 |
成功标准
| 维度 | 指标 | 目标 | 衡量方式 |
|---|---|---|---|
| 数据质量 | HRIS 数据完整性 | > 95% 的必填字段已填写 | 季度数据审计报告 |
| 数据质量 | 数据新鲜度 | 所有记录均在 30 天内更新 | HRIS 最后修改时间戳 |
| 采用情况 | 利益相关方对仪表板的使用情况 | > 70% 的 HRBP 和 VP 每月访问 | 仪表板分析 / 登录跟踪 |
| 采用情况 | 洞察到行动的转化率 | > 60% 的建议促成相关举措 | 按季度跟踪建议的后续结果 |
| 准确性 | 离职预测精确率 | 召回率为 50% 时,精确率 > 70% | 根据实际情况评估模型(滞后 6 个月) |
| 准确性 | 调查驱动因素分析有效性 | 通过定性数据验证排名前 3 的驱动因素 | 与离职面谈和焦点小组进行交叉比对 |
| 影响 | 可避免的离职率下降 | 干预后 12 个月内下降 10-20% | HRIS 自愿离职数据及可避免标记 |
| 影响 | 从提出问题到获得洞察的时间 | 标准分析 < 2 周 | 跟踪从请求到交付的时间 |
| 合规性 | 隐私事件 | 未发生违反匿名阈值的事件 | 所有查询的审计日志;强制执行最小群体规模 |
| 成熟度 | 分析成熟度级别进展 | 每 12-18 个月提升 1 个级别 | 根据分析成熟度模型进行自我评估 |
范围与限制
范围内:
- 员工队伍描述性分析:员工人数、人员流动率、留任率、人口统计信息、任职年限分布
- 敬业度调查设计、分析、驱动因素识别和基准比较
- 使用基于规则和统计方法的离职风险评分(仅使用标准库)
- 薪酬公平性分析:原始差距、控制后差距、异常值标记
- DEI 指标:代表性、晋升率、招聘漏斗公平性
- 员工队伍规划:员工人数预测、情景建模、差距分析
- 仪表板设计和 KPI 框架建议
范围外:
- 需要 ML 框架(scikit-learn、TensorFlow)的实时预测模型——为确保可移植性,脚本使用基于规则的评分
- 对调查自由文本回复进行情感分析(需要 NLP 库)
- 员工个人画像分析或监控——所有分析均使用汇总或匿名化数据
- HRIS 系统管理、数据管道工程或 ETL 开发
- 对薪酬公平性调查结果进行法律解释(需要劳动法律顾问)
- 需要电子邮件 / 日历元数据的组织网络分析
已知限制:
- 脚本中的离职风险评分使用加权启发式方法,而非经过训练的 ML 模型;准确性取决于特征质量和权重校准
- SKILL.md 示例中的薪酬公平性分析需要 statsmodels(外部依赖);脚本使用标准库进行近似计算
- 调查分析假设使用 Likert 量表(1-5)作答;其他格式需要预处理
- 样本量较小的人群细分(< 30)会导致统计结果不可靠;报告中应标记这些细分
- 未处理的历史数据偏差(例如,有偏差的绩效评级)会传递到预测模型中
集成点
| 系统 / 技能 | 集成内容 | 数据流 |
|---|---|---|
| HRIS(Workday、BambooHR、HiBob) | 员工主数据、任职年限、薪酬、绩效评级 | HRIS -> 分析数据湖;分析洞察 -> HRBP 人力规划 |
| ATS(Greenhouse、Lever) | 招聘漏斗数据、招聘来源、招聘周期 | ATS -> 招聘分析;招聘质量评分反馈至 TA 策略 |
| 调查平台(Culture Amp、Qualtrics、Lattice) | 敬业度调查回复、eNPS、脉搏调查数据 | 调查平台 -> survey_analyzer.py;驱动因素分析 -> 行动规划 |
| 人才招聘技能 | 招聘漏斗指标、招聘来源成效、招聘质量 | TA 管道数据 -> 分析模型;分析洞察 -> 招聘来源优化 |
| HR 业务伙伴技能 | 人力规划输入、组织健康评分、留任策略 | 分析洞察 -> HRBP 建议;HRBP 问题 -> 分析项目 |
| 运营经理技能 | 人数预测、产能规划、生产力指标 | 运营需求预测 -> headcount_planner.py;人力指标 -> 运营产能模型 |
| 财务技能 | 薪酬预算、成本建模、编制预算与实际人数对比 | 财务薪酬数据 -> 薪酬公平性分析;编制计划 -> 财务预算模型 |
| 薪资(ADP、Gusto) | 实际薪酬、奖金发放、加班数据 | 薪资 -> 薪酬分析;薪酬公平性调查结果 -> 薪酬调整建议 |
| BI 平台(Tableau、Looker、Power BI) | 托管仪表板、自助分析、定期报告 | 分析输出 -> BI 仪表板;BI 使用指标 -> 采用情况跟踪 |
评论
支持 Markdown