結婚市場からの離脱を考慮した夫婦の社会的階層格差
@kabutoyama_taro氏に、「ネット界隈が想起する"上昇婚"のイメージ」は・・・数学的にありえないと言われた*1のですが、ネット界隈の仮定に基づけばあり得るので、シミュレーションをして例示したいと思います。数式を書いて検証すると煩雑になりますし、「ありえない」ことを否定するには具体例を示せば十分なので*2。
1. セットアップ
仮定は以下のようにします。社会的階層は順番で表現していますし、そう無理な仮定は置いていないと思います。ネット界隈の人が考えている一方で、@kabutoyama_taro氏が見落としているのは、ラベルを貼った【結婚市場からの離脱】と言う想定です。所謂、理想が高くて結婚できないケースです。
- それぞれN人の男女がいる
- 一夫一妻制
- それぞれ1からN番目まで社会的階層による序列がついている
- 序列番号の小さい順に男性が結婚していく。つまり、序列番号iの男性が結婚すると、序列番号i+1の男性が求婚をして回る
- 男性は可能な限り社会的序列とは独立に定まる容姿が優れた女性と結婚したがる
- 【結婚市場からの離脱】序列jの女性は、求婚してくる序列iの男性に対して、確率P(i/j)で結婚を承諾する
2. ソースコード
検証用に明示します。Nは300にしました。P(i/j)はプロビット分析などに準じて正規の累積分布関数を用いましたが、どのような分布でも大差は無いです。
set.seed(20160526)
N <- 300
beauty <- runif(N)
status_f <- rep(FALSE, N)
married <- numeric(N)P <- function(a){
# iが小さいほど結婚を承諾される可能性が高いようにしている
1 - pnorm(a)
}for(i in 1:N){
best_b <- 0
best_f <- 0
for(j in 1:N){
if(!status_f[j] && P(i/j)>runif(1) && best_b < beauty[j]){
best_f <- j
best_b <- beauty[j]
}
}
if(0 < best_f){
status_f[best_f] <- TRUE
married[i] <- best_f
}
}gap <- (1:N)[married>0] - married[married>0]
hist(gap, breaks=11, main=sprintf("それぞれ%d人の男女から%d組が婚姻", N, length(gap)), xlab="男性の序列番号 - 女性の序列番号", ylab="頻度", xlim=c(-N, N))
abline(v = mean(gap), lty=2)