estatapi パッケージを使って…

政府統計 e-Stat では、統計データがエクセル形式などのファイルのほかにデータベースとして提供されているものもある。後者のデータにAPI機能でアクセスするときに、estatapi パッケージを使うとRで比較的簡単に必要とするデータを抽出・取得できる。
 
e-Stat の API 機能を利用するには、①ユーザー登録を行い、② appID を取得する必要がある。②に関して、多少細かい手順を以下に示す。
  1. https://www.e-stat.go.jp/mypage/login  からログイン
  2. 「マイページ」へ移行
  3. 「▷API機能(アプリケーションID発行)」へ
  4. 「*名称」には適当な文字列を、「*URL」は http://localhost で可
  5. 「発行」ボタンをクリック

この結果、appid 欄に表示される文字列が「アプリケーションID;appID」である。

f:id:fusion0202:20190621021305p:plain

以下では、都道府県の潜在扶養率のコロプレス・マップを描いてみる。
 
ちなみに潜在扶養率とは、65歳以上の人口に対する25~64歳の人口の比率のことで、国連経済社会局が毎年、国際比較を公表している。最新の結果は2019年版報告の中で言及されている。

 

同様の指標を、都道府県毎に計算してみようというわけである。
e-Stat の次のページにアクセスすると対象データを閲覧できる。
 
Rで、まず初めにこのデータのメタデータを取得する。
library(estatapi)
 
appID <- "****************************************"
dataID <- "0003312321"
info <- estat_getMetaInfo(appID, dataID)

 オブジェクト:info の内容は、RStudio の Environment でチェックするのがよい。

f:id:fusion0202:20190621031058p:plain

 

今回は「総人口(cat03/"001")」の「男女計(cat01/"000")」を抽出して、(全国分を除外し)47都道府県の潜在扶養率(ratio)を算出する。

dt <- estat_getStatsData(appID, dataID, cdCat01 = "000", cdCat03 = "001")
pop <- matrix(dt$value, nrow = 48, ncol = 19, byrow = F)
pop <- pop[-1,]
ratio <- apply(pop[,7:14], 1, sum) / apply(pop[,15:19], 1, sum)

 

以下は、この値をもとに、コロプレス・マップの描画。

 

都道府県のシェープファイルはウェブから何種類か入手できるが、ここでは三重大・奥村晴彦先生が公開されている GeoJSON形式のものを利用する(参照:シェープファイルを読む)。

library(sf)
library(dplyr)
library(ggplot2)
library(ggthemes)

 

jp = st_read("https://oku.edu.mie-u.ac.jp/~okumura/stat/data/japan.geojson",
                       stringsAsFactors = FALSE)

jp$code <- as.integer(jp$code)
pref <- 1:47
dat <- data.frame(pref, ratio)
jp2 <- left_join(jp, dat, by = c("code" = "pref"))

 

ggplot() +
   geom_sf(data = jp2,
                   aes(fill = cut_interval(ratio, length = 0.2)),
                   colour = 'grey20', size = 0.1) +
   xlim(120, 150) +
   scale_fill_brewer(palette = "YlOrRd",
                                  name = "Potential\nSupport Ratio") +
   theme_bw() +
   theme(legend.position = c(0.85, 0.22))

f:id:fusion0202:20190621035149p:plain