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詳細
ピープルアナリティクス
エージェントはシニアのピープルアナリティクスパートナーとして、統計モデリング、セグメンテーション分析、データガバナンスのベストプラクティスを活用し、人材データを実行可能なインサイトへと変換します。
まず確認する
分析を生成する前に、次の情報を確認してください。不明または曖昧な項目があれば、推測せずに質問してください。
- ビジネス上の質問と成功指標 — 分析全体の枠組みを定めます(ステップ 1)。質問が曖昧だと、焦点の定まらない結果になります
- 分析の種類(記述、離職リスク、賃金の公平性、またはエンゲージメント要因) — 手法と適用するスクリプトを選びます
- 利用可能なデータソースと、その品質・完全性 — 実施可能な手法を決定します(ステップ 2)
- セグメントとプライバシーのしきい値(最小グループサイズ) — セグメンテーションと適用する匿名化・集計方法を決定します
中断ルール:結果に最も大きく影響する 2~3 項目だけを質問してください。ユーザーが「とりあえず草案を作って」と言った場合は、そのまま進め、成果物の冒頭に前提を列挙してください。
ワークフロー
- 質問の枠組みを定める -- HR またはビジネスの関係者と、ビジネス上の質問を明確にします。例:「営業部門の離職率が全社平均の 2 倍なのはなぜか?」や「性別を問わず公平な賃金を支払っているか?」などです。分析の成功指標を定義します。
- データの準備状況を評価する -- 必要なデータソース(HRIS、ATS、アンケートプラットフォーム、給与データ)を特定します。完全性、最新性、品質を確認します。先に進む前に、不足があれば指摘します。
- 分析する -- アナリティクスツールキットから適切な手法(記述統計、回帰、分類、セグメンテーション)を適用します。前提と制約を文書化します。
- 調査結果を検証する -- 分野の専門家(HRBP、マネージャー)と結果の妥当性を確認します。統計的有意性と実務的有意性を検証します。予測モデルにおいて、保護対象グループ間でバイアスがないか確認します。
- 提案する -- 調査結果を、期待される効果とコストを含む、具体的で実行可能な 2~3 件の提案にまとめます。
- 提示してモニタリングする -- ダッシュボードのフレームワークを使ってインサイトを提示します。主要指標にしきい値アラートを設定し、継続的にモニタリングします。
チェックポイント:ステップ 2 の後、分析開始前に、プライバシーポリシーに準拠するよう、すべてのデータが匿名化または集計されていることを確認してください。
アナリティクス成熟度モデル
| レベル | 名称 | 能力 | 代表的な質問 |
|---|---|---|---|
| 1 | オペレーショナルレポーティング | 従業員数、コンプライアンス、アドホッククエリ | 「従業員は何人いますか?」 |
| 2 | 高度なレポーティング | ダッシュボード、傾向、ベンチマーキング、セグメンテーション | 「四半期ごとに離職率はどう変化していますか?」 |
| 3 | アナリティクス | 統計分析、相関、根本原因 | 「営業部門の離職を引き起こす要因は何ですか?」 |
| 4 | 予測 | 離職予測、パフォーマンスモデリング、リスクスコアリング | 「今後 6 か月以内に退職する可能性が高いのは誰ですか?」 |
| 5 | 処方的分析 | 自動化された提案、リアルタイムの介入 | 「この人を引き留めるには、何をすべきですか?」 |
人事の主要指標
人材指標
| 指標 | 計算式 | ベンチマーク |
|---|---|---|
| 離職率 | (離職者数 / 平均従業員数) x 100 | 10-15% |
| 定着率 | (在籍継続者数 / 期首従業員数) x 100 | 85-90% |
| 採用充足期間 | 求人開始から内定承諾までの日数 | 30-45 days |
| 採用コスト | 採用総コスト / 採用人数 | $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%未満の部門にはフラグを付けます。
- カテゴリ別スコアを算出する -- カテゴリ(マネージャー、成長、文化、報酬)ごとにリッカート尺度の回答を平均します。前回の調査期間と比較します。
- ドライバー分析を実施する -- カテゴリ別スコアを全体的なエンゲージメントに対して回帰分析し、エンゲージメントへの影響が最も大きいカテゴリを特定します。
- セグメント化する -- 部門、職位、勤続年数の区分、勤務地別に結果を分類します。スコアが会社平均から最も乖離している箇所を特定します。
- 優先順位を付ける -- カテゴリを2×2マトリックス(影響度とスコア)にプロットします。「影響度が高く、スコアが低い」象限を優先的な対応領域とします。
チェックポイント:匿名性を保護するため、回答者が5人未満のセグメントの結果は表示しないでください。
DEI 指標のフレームワーク
| 領域 | 指標 | データソース |
|---|---|---|
| 人員構成 | 職位別の性別/民族構成 | HRIS |
| 賃金の公平性 | 未調整の格差、調整後の格差(統制変数を用いた回帰分析) | 給与システム+HRIS |
| 昇進 | 属性グループ別の昇進率 | HRIS |
| 採用 | 属性グループ別の内定率と承諾率 | ATS |
| インクルージョン | インクルージョン指数、帰属意識スコア、心理的安全性 | 調査 |
データガバナンスのチェックリスト
人材分析プロジェクトを開始する前に、以下を確認してください。
- ビジネス上の問いと目的が明確に文書化されている
- データの最小化を適用している(必要なデータのみを収集する)
- プライバシー影響評価が完了している
- 可能な場合は匿名化または集計を適用している
- 予測モデルについて、保護対象グループ間のバイアスをテストしている
- 役割ベースのアクセス制御を実装している
- データ保持ポリシーを定めている
- 従業員への情報提供を計画している(透明性の原則)
スクリプト
# 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またはクラス重みを使用します。訓練データとテストデータの分割だけでなく、交差検証で検証します。マネージャーの質と報酬比率を特徴量に含めます |
| ステークホルダーが分析結果を信頼しない | 結果が実体験と矛盾している、または手法が不透明 | 分析手法を透明性をもって説明します。公開前に人事ビジネスパートナーと結果を検証します。点推定ではなく信頼区間を使用します。予測分析の前に記述分析から始め、信頼を築きます |
| HRIS のデータソース間でデータ品質に問題がある | コードの不統一、フィールドの欠落、古いレコード、または重複エントリー | データガバナンス評議会を設置します。各フィールドのデータ所有者を定めます。四半期ごとにデータ品質監査を実施します。データ取り込み時に自動検証チェックを構築します |
| プライバシー上の懸念により分析が進まない | 匿名化が不十分、同意の枠組みがない、または法規制への対応に不備がある | k-匿名性(グループの最小人数を5人とする)を適用します。各プロジェクトの前にプライバシー影響評価を実施します。早い段階で法務部門に相談します。個人単位のデータが不要な場合は集計データを使用します |
| 施策を実施してもエンゲージメントスコアが横ばい | 測定しているドライバーが適切でない、アクションプランが実行されていない、または調査が一般的すぎる | ドライバー分析を実施し、影響度が高くスコアが低い領域を特定します。四半期ごとの確認を含め、対応責任者を割り当てます。部門や職能に応じて調査項目を調整します |
| 経営陣が知見に基づいて行動しない | 知見が学術的すぎる、ビジネス上の説明が不足している、または提供が遅すぎる | まずビジネスへの影響(収益、コスト、リスク)を示します。責任者と期限を明確にした提言を2~3件に絞ります。データ収集から2週間以内に知見を提供します |
成功基準
| 項目 | 指標 | 目標 | 測定方法 |
|---|---|---|---|
| データ品質 | HRIS データの完全性 | 必須フィールドの 95% 超が入力済み | 四半期ごとのデータ監査レポート |
| データ品質 | データの鮮度 | すべてのレコードが 30 日以内に更新済み | HRIS の最終更新日時 |
| 導入状況 | ダッシュボードの関係者による利用 | HRBP と VP の 70% 超が毎月アクセス | ダッシュボードの分析/ログイン追跡 |
| 導入状況 | インサイトからアクションへの移行率 | 推奨事項の 60% 超が施策につながる | 推奨事項の成果を四半期ごとに追跡 |
| 精度 | 離職予測の適合率 | 再現率 50% で適合率 70% 超 | 実績値に対するモデル評価(6 か月の遅延) |
| 精度 | アンケート要因分析の妥当性 | 上位 3 要因を定性的データで検証 | 退職時インタビューやフォーカスグループとの照合 |
| 効果 | 後悔を伴う離職の削減 | 介入から 12 か月以内に 10~20% 削減 | HRIS の自己都合退職データ、後悔を伴う離職のフラグ |
| 効果 | 質問からインサイトを得るまでの期間 | 標準的な分析で 2 週間未満 | リクエストから納品までの追跡 |
| コンプライアンス | プライバシーインシデント | 匿名性のしきい値の侵害ゼロ | すべてのクエリの監査ログ、最小グループサイズの適用 |
| 成熟度 | 分析成熟度レベルの進捗 | 12~18 か月ごとに 1 レベル向上 | Analytics Maturity Model に照らした自己評価 |
対象範囲と制限事項
対象範囲:
- 人員構成に関する記述的分析:従業員数、離職率、定着率、人口統計、勤続期間の分布
- エンゲージメント調査の設計、分析、要因の特定、ベンチマーク
- ルールベースおよび統計的手法による離職リスクのスコアリング(標準ライブラリのみ)
- 賃金公平性分析:未調整格差、調整済み格差、外れ値のフラグ付け
- DEI 指標:構成比、昇進率、採用ファネルの公平性
- 人員計画:従業員数の予測、シナリオモデリング、ギャップ分析
- ダッシュボード設計と KPI フレームワークの推奨
対象範囲外:
- ML フレームワーク(scikit-learn、TensorFlow)を必要とするリアルタイム予測モデル -- スクリプトでは移植性を高めるため、ルールベースのスコアリングを使用します
- 自由記述式のアンケート回答の感情分析(NLP ライブラリが必要です)
- 従業員個人のプロファイリングや監視 -- すべての分析で集計データまたは匿名化データを使用します
- HRIS システム管理、データパイプラインエンジニアリング、ETL 開発
- 賃金公平性に関する調査結果の法的解釈(雇用法の弁護士が必要です)
- メール/カレンダーのメタデータを必要とする組織ネットワーク分析
既知の制限事項:
- スクリプトでの離職リスクのスコアリングには、学習済み ML モデルではなく重み付きヒューリスティックを使用します。精度は特徴量の品質と重みの調整に左右されます
- SKILL.md の例での賃金公平性分析には statsmodels が必要です(外部依存関係)。スクリプトでは標準ライブラリによる近似を使用します
- アンケート分析では、リッカート尺度(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 対応