mcpField
P
people-analytics

people-analytics

github.com/borghei数据与数据库1.0k203 次安装5 天前更新
代码仓库

关于 people-analytics

people-analytics 是面向 HR 和业务团队的人员分析技能,通过统计分析、细分和数据治理把员工数据转化为业务洞察。它涵盖离职风险、薪酬公平、敬业度及 DEI 指标,并强调匿名化和偏差检查。

主要功能

  1. 01分析员工流动与留任指标
  2. 02评估离职风险和薪酬公平
  3. 03分析敬业度调查及驱动因素
  4. 04按群体细分并监测 DEI 指标
  5. 05检查数据质量、隐私与模型偏差

适用场景

  1. 01查找特定部门离职率偏高的原因
  2. 02检查不同群体的薪酬公平情况
  3. 03从敬业度调查中识别优先改进领域
  4. 04在保护匿名性的前提下汇总人员数据

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/borghei/claude-skills --skill people-analytics

安装后在 Claude Code 中输入/people-analytics确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

scripts/
attrition_predictor.py
headcount_planner.py
survey_analyzer.py

详细介绍

人员分析

该 Agent 以资深人员分析合作伙伴的身份开展工作,运用统计建模、细分分析和数据治理最佳实践,将员工数据转化为可执行的洞察。

先澄清

在生成分析之前,请确认以下输入。如果有任何信息未知或含糊不清,请提问——不要自行假设:

  • 业务问题 + 成功指标 — 为整个分析定下方向(步骤 1);问题含糊会导致输出缺乏重点
  • 分析类型(描述性分析、离职风险、薪酬公平性或敬业度驱动因素) — 决定采用的方法和适用的脚本
  • 可用数据源 + 数据质量/完整性 — 决定哪些方法切实可行(步骤 2)
  • 细分群体 + 隐私阈值(最小群体规模) — 决定细分方式以及采用的匿名化/汇总处理

停止规则:只询问最能影响输出的 2-3 项。如果用户说“直接起草”,则继续,并在产出内容顶部列出你的假设。

工作流

  1. 明确问题 -- 与 HR 或业务相关方澄清业务问题。例如:“为什么销售部门的离职率是公司平均水平的 2 倍?”或“我们的薪酬在不同性别之间是否公平?”为分析定义成功指标。
  2. 评估数据就绪情况 -- 确定所需的数据源(HRIS、ATS、调查平台、薪资系统)。检查数据的完整性、时效性和质量。继续之前,标记任何缺口。
  3. 开展分析 -- 使用分析工具包中的适当方法(描述性统计、回归、分类、细分)。记录假设和局限性。
  4. 验证发现 -- 与领域专家(HRBP、经理)核实结果。检验统计显著性和实际意义。检查预测模型在受保护群体中是否存在偏见。
  5. 提出建议 -- 将发现转化为 2-3 条具体、可执行的建议,并说明预期影响和成本。
  6. 交付并监控 -- 使用仪表板框架展示洞察。为关键指标设置持续监控和告警阈值。

检查点:完成步骤 2 后,请确认所有数据均已匿名化或汇总处理,符合隐私政策要求,然后再开始分析。

分析成熟度模型

级别名称能力可回答的典型问题
1运营报告人数、合规、临时查询“我们有多少员工?”
2高级报告仪表板、趋势、基准对比、细分“各季度的离职率发生了怎样的变化?”
3分析统计分析、相关性、根因“是什么因素导致销售部门员工离职?”
4预测离职预测、绩效建模、风险评分“未来 6 个月内谁可能离职?”
5规范性分析自动化建议、实时干预“我们应该采取什么措施留住此人?”

核心 HR 指标

员工队伍指标
指标公式基准
离职率(离职人数 / 平均人数)x 10010-15%
留任率(留任人数 / 期初人数)x 10085-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']]
    }

员工敬业度调查分析

  1. 计算响应率 -- 目标为 80% 以上,以确保统计有效性。标记响应率低于 60% 的部门。
  2. 计算类别得分 -- 按类别(经理、成长、文化、薪酬)计算李克特量表响应的平均值。与上一期进行比较。
  3. 进行驱动因素分析 -- 将类别得分对总体敬业度进行回归分析,以确定对敬业度影响最大的类别。
  4. 细分 -- 按部门、级别、任职年限区间和地点拆分结果。找出得分与公司平均值差异最大的群体。
  5. 确定优先事项 -- 在 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