グラフの例:出生率

[2023-06-02] 厚生労働省の令和4年(2022)人口動態統計月報年計(概数)の概況が出ています。2022年の合計特殊出生率概数値は1.26でした。下の表を更新しました。


合計特殊出生率(ごうけいとくしゅしゅっしょうりつ,total fertility rate,TFR)とは1人の女性が一生に産む子供の平均数である。

年    出生数 合計特殊出生率
1970 1934239           2.13
1971 2000973           2.16
1972 2038682           2.14
1973 2091983           2.14
1974 2029989           2.05
1975 1901440           1.91
1976 1832617           1.85
1977 1755100           1.80
1978 1708643           1.79
1979 1642580           1.77
1980 1576889           1.75
1981 1529455           1.74
1982 1515392           1.77
1983 1508687           1.80
1984 1489780           1.81
1985 1431577           1.76
1986 1382946           1.72
1987 1346658           1.69
1988 1314006           1.66
1989 1246802           1.57
1990 1221585           1.54
1991 1223245           1.53
1992 1208989           1.50
1993 1188282           1.46
1994 1238328           1.50
1995 1187064           1.42
1996 1206555           1.43
1997 1191665           1.39
1998 1203147           1.38
1999 1177669           1.34
2000 1190547           1.36
2001 1170662           1.33
2002 1153855           1.32
2003 1123610           1.29
2004 1110721           1.29
2005 1062530           1.26
2006 1092674           1.32
2007 1089818           1.34
2008 1091156           1.37
2009 1070036           1.37
2010 1071305           1.39
2011 1050807           1.39
2012 1037232           1.41
2013 1029817           1.43
2014 1003609           1.42
2015 1005721           1.45
2016  977242           1.44
2017  946146           1.43
2018  918400           1.42
2019  865239           1.36
2020  840835           1.33
2021  811622           1.30
2022  770747           1.26

これを(ヘッダ行も含めて)クリップボードにコピーし,次のように読み込む:

X = read.table(pipe("pbpaste"), header=TRUE) # Mac
X = read.table("clipboard", header=TRUE)     # Windows

とりあえず合計特殊出生率だけ折れ線グラフにしてみる:

par(las=1)              # 縦軸の文字を横向きにしない
par(mar=c(3,3,3,3)+0.1) # マージン(デフォルト: c(5,4,4,2)+0.1)
par(mgp=c(2,0.8,0))     # 軸マージン(デフォルト: c(3,1,0))
plot(X$年, X$合計特殊出生率, type="o", pch=16, xlab="", ylab="")
t = c(range(X$合計特殊出生率), X$合計特殊出生率[length(X[,1])])
axis(4, t, t)
title("合計特殊出生率", line=0.5)
合計特殊出生率

色付きにしてみる:

plot(NULL, xlim=c(1970,2022), ylim=c(1.2, 2.2), axes=FALSE,
   xaxs="i", yaxs="i", xlab="", ylab="")
rect(1970, 1.2, 2022, 2.2, col="#ccccff", border=NA)
for (i in seq(1.4,2.0,0.2))
  segments(1970, i, 2022, i, lwd=2, col="white")
for (i in seq(1.2,2.2,0.2))
  text(1970, i, format(i, nsmall=1), pos=2, xpd=TRUE)
for (i in seq(1975,2022,5))
  segments(i, 1.2, i, 2.2, lwd=2, col="white")
for (i in seq(1970,2022,5))
  text(i, 1.2, i, pos=1, xpd=TRUE)
lines(X$年, X$合計特殊出生率, type="o", pch=16, xpd=TRUE)
title("合計特殊出生率", line=0.5)
合計特殊出生率

ちなみに,出生率にからむリサーチ・リテラシーの問題を扱った本として,赤川 学『子どもが減って何が悪いか!』(ちくま新書,2004年)がある。

日本の合計特殊出生率(TFR)のデータは,中澤港先生の fmsb パッケージの Jvital という表にも含まれている:

plot(Jvital$YEAR, Jvital$TFR, type="o", pch=16)