Created
March 22, 2020 12:56
-
-
Save tetlabo/1c8b607e88535067c967db2eb7d2485d to your computer and use it in GitHub Desktop.
平成30年国民生活基礎調査に基づく、所得分布のシミュレーション
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 調査結果URL: https://www.mhlw.go.jp/toukei/saikin/hw/k-tyosa/k-tyosa18/index.html | |
# 統計表URL: https://www.e-stat.go.jp/stat-search/files?page=1&layout=datalist&toukei=00450061&kikan=00450&tstat=000001129675&cycle=7&tclass1=000001130605&stat_infid=000031835137&result_page=1 | |
# 国民生活基礎調査より、年収分布の相対度数 | |
vec.income.freq <- c(6.2, 13.7, 13.7, 13.6, 10.1, 8.5, 7.6, 5.9, 4.5, 4.2, 3.0, 1.8, 1.4, 1.6, 1.2, 0.5, 0.5, 0.4, 0.4, 0.1, 1.3) | |
# 相対度数をもとにした10000人のシミュレーション | |
vec.income.sim <- NULL | |
for (i in 1:10000) { | |
class <- sample(1:length(vec.income.freq), 1, prob = vec.income.freq) | |
if (class == 1){ | |
# 100万円未満 | |
income <- sample(seq(0, 99, 0.5), 1) | |
} else if (class == 2) { | |
# 100-200万円未満 | |
income <- sample(seq(100, 199, 0.5), 1) | |
} else if (class == 3) { | |
# 200-300万円未満 | |
income <- sample(seq(200, 299, 0.5), 1) | |
} else if (class == 4) { | |
# 300-400万円未満 | |
income <- sample(seq(300, 399, 0.5), 1) | |
} else if (class == 5) { | |
# 400-500万円未満 | |
income <- sample(seq(400, 499, 0.5), 1) | |
} else if (class == 6) { | |
# 500-600万円未満 | |
income <- sample(seq(500, 599, 0.5), 1) | |
} else if (class == 7) { | |
# 600-700万円未満 | |
income <- sample(seq(600, 699, 0.5), 1) | |
} else if (class == 8) { | |
# 700-800万円未満 | |
income <- sample(seq(700, 799, 0.5), 1) | |
} else if (class == 9) { | |
# 800-900万円未満 | |
income <- sample(seq(800, 899, 0.5), 1) | |
} else if (class == 10) { | |
# 900-1000万円未満 | |
income <- sample(seq(900, 999, 0.5), 1) | |
} else if (class == 11) { | |
# 1000-1100万円未満 | |
income <- sample(seq(1000, 1099, 0.5), 1) | |
} else if (class == 12) { | |
# 1100-1200万円未満 | |
income <- sample(seq(1100, 1199, 0.5), 1) | |
} else if (class == 13) { | |
# 1200-1300万円未満 | |
income <- sample(seq(1200, 1299, 0.5), 1) | |
} else if (class == 14) { | |
# 1300-1400万円未満 | |
income <- sample(seq(1300, 1399, 0.5), 1) | |
} else if (class == 15) { | |
# 1400-1500万円未満 | |
income <- sample(seq(1400, 1499, 0.5), 1) | |
} else if (class == 16) { | |
# 1500-1600万円未満 | |
income <- sample(seq(1500, 1599, 0.5), 1) | |
} else if (class == 17) { | |
# 1600-1700万円未満 | |
income <- sample(seq(1600, 1699, 0.5), 1) | |
} else if (class == 18) { | |
# 1700-1800万円未満 | |
income <- sample(seq(1700, 1799, 0.5), 1) | |
} else if (class == 19) { | |
# 1800-1900万円未満 | |
income <- sample(seq(1800, 1899, 0.5), 1) | |
} else if (class == 20) { | |
# 1900-2000万円未満 | |
income <- sample(seq(1900, 1999, 0.5), 1) | |
} else { | |
# 2000万円以上 | |
# ※実際にはもっと高所得の人もいるはずだが、全体の平均、中央値を調査結果と合わせようとするとこれくらいになる | |
income <- sample(seq(2000, 4499, 0.5), 1) | |
} | |
vec.income.sim <- c(vec.income.sim, income) | |
} | |
# 確認 | |
mean(vec.income.sim) | |
median(vec.income.sim) | |
# 所得が平均以下の割合 (調査では62.4%) | |
sum(vec.income.sim <= mean(vec.income.sim)) / length(vec.income.sim) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment