餡子付゛録゛

ソフトウェア開発ツールの便利な使い方を紹介。

労働市場シグナリング仮説と外部効果の推定値のシミュレーション

労働市場シグナリング仮説が成立していても、計量分析で推定される外部効果は負になるとは限らない事を確認するための、簡単なシミュレーションです。

#
# 労働市場シグナリング仮説に基づく賃金計算関数
# edu_h_s: 大卒比率
# return: 大卒賃金, 高卒賃金
#
wage <- function(edu_h_s){
  # 高低2種類の労働生産性
  lp_h <- 1.0
  lp_l <- 0.5

  # 労働生産性の高低の比率
  lp_h_s <- 0.5
  lp_l_s <- 0.5

  # 賃金=平均労働生産性
  if(lp_h_s > edu_h_s){
    # 高労働生産性の人の一部しか進学しないケース
    w_h <- lp_h
    w_l <- (lp_h*(lp_h_s-edu_h_s) + lp_l*lp_l_s)/(lp_h_s-edu_h_s+lp_l_s)
  }else{
    # 高労働生産性の人の全員と低労働生産性の人の一部が進学するケース
    w_h <- (lp_h*lp_h_s + lp_l*(edu_h_s-lp_h_s))/edu_h_s
    w_l <- lp_l
  }

  return(c(w_h, w_l))
}

set.seed(201705)

# 50地区10期のデータを生成する
noa <- 50 # Number of Areas
not <- 10 # Number of Spans

n <- noa*not
df <- data.frame(t=numeric(n), edu_h_s=numeric(n), wage_lp=numeric(n))
for(t in 1:not){
  b <- 1 + noa*(t-1)
  e <- b + noa - 1
  # 時点を定める
  df$t[b:e] <- t

  # まず、毎年、増加する、全体の大学進学率を定める
  edu_h_a <- 0.15 + 0.3*t/not
  # 各地域の大卒人口を確率的に設定
  edu_h_pop <- rnorm(noa - 1, mean=edu_h_a, sd=0.01)
  # 最後の地域を調整し、全体の大学進学率にあわせる
  edu_h_pop <- c(edu_h_pop, noa*edu_h_a - sum(edu_h_pop))

  # 全体の高卒比率は1-大学進学率
  edu_l_a <- 1 - edu_h_a
  # 各地域の高卒人口を確率的に設定
  edu_l_pop <- rnorm(noa - 1, mean=edu_l_a, sd=0.01)
  # 最後の地域を調整し、全体の高卒比率にあわせる
  edu_l_pop <- c(edu_l_pop, noa*edu_l_a - sum(edu_l_pop))

  # 各地域の大卒比率を計算する
  df$edu_h_s[b:e] <- edu_h_pop/(edu_h_pop + edu_l_pop)

  # 全体の教育水準の平均値から賃金を計算
  # 大卒と高卒が移動しても、それぞれの地域の大卒職場と高卒職場の平均労働生産性の期待値には変化が無いので、全体で計算している。生産性の高い高卒の移動が霍乱要因になるが、無数の人間が移動することで期待値に等しくなっていると解釈。
  df$wage_lp[b:e] <- wage(mean(df$edu_h_s[b:e]))[2]
}

#
# 回帰分析
# ・ミンサー・アプローチに習って対数化。しなくても同様の結果
# ・被説明変数は高卒賃金なので、大卒ダミーはつけていない
#

# 時系列ダミーが無いと、外部不経済が観測される
summary(lm(wage_lp ~ edu_h_s, data=df))

# 時系列ダミーがあると、外部不経済が観測されない
summary(lm(wage_lp ~ edu_h_s + t, data=df))