説明できない男女賃金格差の調べ方
女性活躍推進法によって、男女の賃金格差が注目されています。また、メルカリの説明できない格差の是正アクションはNHKなどのマスコミにも報道されて話題になりました。
では、この説明できない男女賃金格差はどのように調べられるのでしょうか?
Mercerがわかりやすい記事をだしています。
手法と必要なデータは次のとおりです。
実際にBlinder-Oaxaca分解で男女賃金格差を分析する方法を示します。
環境
言語:R言語
環境:Jupyter Labなど
利用するライブラリ:GeneralOaxaca
私の場合はGoogle Cloud Vertex AI Workbenchを利用しましたが、R言語が実行できる環境であればどこでも実行できるはずです。
なお、Vertex AI WorkbenchでR言語を使う場合は次のとおり少し設定が必要です。
分析
基本的には、ライブラリのドキュメントに記載されているサンプルコードがベースになります。
ただし、職階、職種はダミー化する必要があります。
ダミー化は、例えば、職階の項目に部長、課長がある場合、職階(部長)と職階(課長)の2つの項目に分解して、該当する項目に1をたてます。
$$
\begin{array}{|c|c|c|} \hline
& 職階 \\ \hline
Aさん & 部長 \\ \hline
Bさん & 課長 \\ \hline
\end{array}
$$
↓
$$
\begin{array}{|c|c|c|} \hline
& 職階(部長) & 職階(課長) \\ \hline
Aさん & 1 & 0 \\ \hline
Bさん & 0 & 1 \\ \hline
\end{array}
$$
データのカラムを次のとおりだとします。
annual_salary: 年俸
is_female: 女性なら1、男性なら0
age: 年齢
work_age: 勤続年数
job_grade: 職階
job_domain: 職種
このとき、次のコードでOaxaca分解できます。
# ファイルの読み込み
data <- read.csv("your_data.csv")
head(data)
# カテゴリカル変数を因子へ変換
data$job_domain <- as.factor(data$job_domain)
data$job_grade <- as.factor(data$job_grade)
head(data)
# ダミー変数の作成
job_domain_dummy <- model.matrix(~ job_domain - 1, data = data)
job_grade_dummy <- model.matrix(~ job_grade - 1, data = data)
# ダミー変数を元のデータフレームに結合
data <- cbind(data, job_domain_dummy)
data <- cbind(data, job_grade_dummy)
head(data)
# ダミー変数の名前を取得
job_domain_dummy_names <- colnames(job_domain_dummy)
job_grade_dummy_names <- colnames(job_grade_dummy)
# その他の回帰変数
other_vars <- c("age", "work_age")
# すべての説明変数を結合
all_vars <- c(other_vars, job_domain_dummy_names, jg_dummy_names)
# モデル式の作成
formula_string.1 <- paste("annual_salary ~", paste(all_vars, collapse = " + "), "| is_female")
formula.1 <- as.formula(formula_string.1)
print(formula.1)
# Oaxacaパッケージ
if(!require('oaxaca')) {
install.packages('oaxaca')
library('oaxaca')
}
# set random seed
set.seed(03104)
# perform Blinder-Oaxaca Decomposition:
# explain differences in log real wages across native and foreign-born groups
oaxaca.results.1 <- oaxaca(formula.1, data = data, R = 30)
# print the results
print(oaxaca.results.1)
評価
結果の評価はドキュメントを理解して解釈する必要がありますが、GeminiやChatGPTに次のように聞いてしまうとよいです。
ChatGPTだと文字数制限にひっかかる可能性が高いので、必要な部分を切り出すなどの工夫が必要かもしれません。
Geminiの場合は、Google Cloud Vertex AI Studioを使うと便利です。