学歴別賃金プロファイル

賃金構造基本統計調査の標準労働者のデータを使って,学歴(高校,大学,大学院)別の賃金プロファイルと,大学卒業者の企業規模別の賃金プロファイルをグラフにする(男性と女性それぞれについて作成する)。

賃金構造基本統計調査は令和2年 (2020年)以降,大学と大学院とが区別されるなど調査内容に変更があった。それ以降のデータで,APIで入手可能なのは2023年までとなっている。ここでは,APIで入手できるなかで最新の2023年のデータを用いる。

コード
## ---- setup ----

library(tidyverse)
library(estatapi)

# e-statのappIDが必要
#   以下のページで利用申請(無料)をすればだれでも入手できる
#   https://www.e-stat.go.jp/api/
# appID = "入手したappIDをここに設定(行頭の#を外す)"

## ---- data ----

standard <- estat_getStatsData(
  appId = appID,
  cdTab = c("42", "44"),
  statsDataId = "0003447178",
  cdCat01 = c("02", "03"), # 性別 男・女
  cdCat02 = c("03", "06", "07"), # 学歴 高校・大学・大学院
  cdCat05 = "01", # 産業計
  cdTime = c("2023000000")
) |>
  select(
    表章項目,
    性別_基本,
    cat03_code,
    `学歴_基本8区分(2020年~)`,
    企業規模_基本,
    value
  ) |>
  mutate(
    age = as.numeric(cat03_code) + 14,
    gender = factor(
      性別_基本,
      levels = c("男", "女")
    ),
    education = factor(
      `学歴_基本8区分(2020年~)`,
      levels = c("大学院", "大学", "高校")
    ),
    firm_size = factor(
      企業規模_基本,
      levels = c(
        "企業規模計(10人以上)",
        "1,000人以上",
        "100~999人",
        "10~99人"
      )
    )
  ) |>
  pivot_wider(
    names_from = "表章項目",
    values_from = "value"
  ) |>
  mutate(
    wage = (所定内給与額 * 12 + 年間賞与その他特別給与額) / 10
  )

## ---- plot_education ----
# 学歴別賃金プロファイル
graph_education <- standard |>
  filter(
    firm_size == "企業規模計(10人以上)",
    age <= 60,
    !is.na(wage)
  ) |>
  ggplot(aes(x = age, y = wage, color = education)) +
  geom_line() +
  geom_point(size = 0.5) +
  scale_color_hue(name = "学歴") +
  labs(
    title = "標準労働者の学歴別賃金プロファイル",
    x = "年齢",
    y = "年収(万円)"
  ) +
  facet_wrap(~gender) +
  theme_classic(base_size = 16) +
  theme(
    panel.grid.major = element_line(color = "grey85", linewidth = 0.3),
    panel.grid.minor = element_line(color = "grey92", linewidth = 0.2)
  )

plot(graph_education)

## ---- plot_firmsize ----
# 大卒の企業規模別賃金プロファイル
graph_firmsize <- standard |>
  filter(
    education == "大学",
    firm_size != "企業規模計(10人以上)",
    age <= 60,
    !is.na(wage)
  ) |>
  ggplot(aes(x = age, y = wage, color = firm_size)) +
  geom_line() +
  geom_point(size = 0.5) +
  scale_color_hue(name = "企業規模") +
  labs(
    title = "大学卒標準労働者の企業規模別賃金プロファイル",
    x = "年齢",
    y = "年収(万円)"
  ) +
  facet_wrap(~gender) +
  theme_classic(base_size = 16) +
  theme(
    panel.grid.major = element_line(color = "grey85", linewidth = 0.3),
    panel.grid.minor = element_line(color = "grey92", linewidth = 0.2)
  )

plot(graph_firmsize)