最終更新:Dec. 24, 2022 (Sat)
このページは,鵯記という日常メモに書いた内容から,都道府県別生命表に掲載されている数値データをわかりやすい図にする方法を抜粋してまとめたものである(2022年12月に大幅更新)。目標は,都道府県別平均寿命の推移を示す折れ線グラフと,死因別損失余命の都道府県別プロファイルを示すレーダーチャートを,男女別に作成することである。
pref-e0-changes.txtをRの作業ディレクトリに置いて以下を実行すると,その下のグラフが画面に表示される(Windows環境で,直接pngファイルを出力させるコード[pngのサイズ指定や,フォントをメイリオに指定したもの]は,change-e0.Rである。下に貼り付けたpngファイルはそうやって作ったもの)。
x <- read.delim("pref-e0-changes.txt") males <- t(x[, 2:11]) colnames(males) <- x$PREF females <- t(x[, 12:21]) colnames(females) <- x$PREF COL <- ifelse(x$PREF=="長野", "blue", ifelse(x$PREF=="沖縄", "pink", "lightgrey")) LWD <- ifelse(x$PREF=="長野", 2, ifelse(x$PREF=="沖縄", 2, 1)) LTY <- ifelse(x$PREF=="長野", 1, ifelse(x$PREF=="沖縄", 1, 3)) years <- 1965+0:9*5 layout(t(1:2)) matplot(years, males, type="l", col=COL, lwd=LWD, lty=LTY, main="男性の都道府県別平均寿命の推移\n(青:長野,桃:沖縄,灰色:他)") matplot(years, females, type="l", col=COL, lwd=LWD, lty=LTY, main="女性の都道府県別平均寿命の推移\n(青:長野,桃:沖縄,灰色:他)")
なお,ファイル読み込みの際に,read.delim("pref-e0-changes.txt", fileEncoding="cp932")のように,fileEncodingオプションを使えば,Windows以外のOSでもCP932のファイルを正しく読み込むことができる(Special thanks to:裏RjpWikiさんのご指摘)。
このグラフから読み取れることはそれほど多くないが,1985年までトップレベルだった沖縄男性の平均寿命が,1990年から急に伸びが鈍化したこと,長野県男性も1990年までの伸びに比べると1995年以降は伸びが鈍化していることがわかる。女性については,男性と違って,最近まで沖縄の平均寿命の高さは他都道府県とは段違いだったのに,2005年に追いつかれ,2005年から2010年には横這いになってしまったことが一目で分かる。数値だけ眺めるよりわかりやすいと思う。
ちなみに,これは折れ線グラフなので,縦軸がゼロから始まっていないことに注意されたい。2010年の男性の水準には,女性は1980年頃には既に到達していた。
2020年までのデータを使って描き直すコード(pref-e0-changes-until2020.R)の出力は下図。
pref-LLY-h22.txtをRの作業ディレクトリに置いて以下を実行すると,その下のグラフが画面に表示される(Windows環境で,直接pngファイルを出力させるコード[pngのサイズ指定や,フォントをメイリオに指定したもの]は,LLY-profiles.Rである。下に貼り付けたpngファイルはそうやって作ったもの。最新のRを使う際は日本語文字コードに注意)。
x <- read.delim("./pref-LLY-h22.txt", fileEncoding="cp932") COL <- ifelse(x$PREF=="長野", "blue", ifelse(x$PREF=="沖縄", "pink", "lightgrey")) LWD <- ifelse(x$PREF=="長野", 2, ifelse(x$PREF=="沖縄", 2, 1)) LTY <- ifelse(x$PREF=="長野", 1, ifelse(x$PREF=="沖縄", 1, 3)) VX <- c("悪性新生物","高血圧を除く\n心疾患","脳血管疾患","三大死因", "肺炎","不慮の事故","交通事故\n(再掲)","自殺","腎不全","肝疾患", "糖尿病","高血圧","結核") males <- x[,2:14] females <- x[,15:27] require(fmsb) layout(t(1:2)) radarchart(males, maxmin=FALSE, pcol=COL, axistype=2, pty=32, plty=LTY, plwd=LWD, vlabels=VX, title="男性の死因別損失余命(平成22年度)\n(青:長野,桃:沖縄,灰:他都道府県)") radarchart(females, maxmin=FALSE, pcol=COL, axistype=2, pty=32, plty=LTY, plwd=LWD, vlabels=VX, title="女性の死因別損失余命(平成22年度)\n(青:長野,桃:沖縄,灰:他都道府県)")
このグラフはいろいろなことを示唆してくれる。一見してわかることは,平均寿命が男女とも最長の長野県は,男女とも,がんと肺炎による死亡が少ないということだ。一方,脳血管疾患によって失われている余命は比較的大きい。これは,長野県の人は漬け物をよく食べるため,元々塩分摂取量が多く,そのために脳卒中が多かったのを,食生活改善推進員さんが歩き回って塩分摂取量を減らし,そのおかげで脳卒中が減ったと言われているのだが,それでもまだ塩分摂取が高いということかもしれない。ただし,くも膜下出血のリスク因子としては遺伝も大きいので,塩分摂取だけが問題とは言い切れないが。なお,長野県では,男性のみ交通事故によって失われている余命が大きいが,これは子供の交通事故死だと思われる。細くて見通しが悪くて歩道が狭い道路が多いのに外遊びする子供は多いので,飛び出しによる交通事故が比較的多いのであろうことは想像に難くない。沖縄のプロファイルから目立つのは,肝疾患,糖尿病が高いことだ。たぶん飲酒が多いせいだろう。女性のみ結核による損失余命が大きかったが,これは流行があったのかもしれない。
たぶん,ここで書いた推測の裏付けを取るようなデータを探して分析すれば,地域相関研究だけれども,卒論か学会発表ネタくらいにはなるかもしれない。
2015年のデータで、長野と青森を強調して同様のグラフを描くコードは、prefyll2015-nagano-aomori.Rとしてダウンロードできる。PrefYLL2015はfmsbパッケージに入れたので、fmsbパッケージをインストールしてあれば、いちいちデータを読み込む必要はない。
library(fmsb) data(PrefYLL2015) COL <- ifelse(PrefYLL2015$PNAME=="Nagano", "blue", ifelse(PrefYLL2015$PNAME=="Aomori", "red", "lightgrey")) LTY <- ifelse(PrefYLL2015$PNAME=="Nagano", 1, ifelse(PrefYLL2015$PNAME=="Aomori", 1, 3)) LWD <- ifelse(PrefYLL2015$PNAME=="Nagano", 2, ifelse(PrefYLL2015$PNAME=="Aomori", 2, 1)) VLAB <- c("がん","心疾患\n(除高血圧)","脳血管疾患", "肺炎","事故","交通事故\n(再掲)","自殺","腎不全", "肝疾患","糖尿病","高血圧","結核") males <- PrefYLL2015[,3:14] females <- PrefYLL2015[,15:26] layout(t(1:2)) radarchart(males, maxmin=FALSE, pcol=COL, axistype=2, pty=32, plty=LTY, plwd=LWD, vlabel=VLAB, title="2015年特定死因を除いた場合の\n平均寿命の延び[男性] (青:長野,赤:青森,灰:その他)") radarchart(females, maxmin=FALSE, pcol=COL, axistype=2, pty=32, plty=LTY, plwd=LWD, vlabel=VLAB, title="2015年特定死因を除いた場合の\n平均寿命の延び[女性] (青:長野,赤:青森,灰:その他)")
実行すると下図が描かれる。
男女とも青森県では,がん,肺炎,腎不全,糖尿病による余命損失が大きいことがわかる。
2020年のデータもfmsbに入れる予定だが、サーバ上にアップロード済みなので、このコードを実行すれば下図が得られる。
Correspondence to: minato-nakazawa[atmark]umin.net.