Rでオープンデータを触ってみる。
Rに慣れるために自前でCovid19関連のデータの描画を試みたメモ
データを取得する
まずはこのページを見ながらAPI Keyを取得します。ここは簡単。
https://portal.opendata.go.jp/quickstart
RでAPIを使う
ここからすでに難しい。少し検索した結果、httrパッケージのGET関数を使うことにした。*1
keyは上記で取得したAPI Key。これで厚労省発表の陽性者数の日次データが取れます。
library(httr)
url <- "https://api.opendata.go.jp/"
api.positive_cases <- "mhlw/positive-cases"
key <- "xxxx"
positive_cases_res <- GET(url, path = api.positive_cases,query = list(apikey = key))
positive_cases <- content(positive_cases_res)
データ成形
中身を見るとこんな感じ。
> head(positive_cases)
[ [1]]
[ [1]]$日付
[1] "2020/1/16"[ [1]]$`PCR 検査陽性者数(単日)`
[1] "1"
[ [2]]
[ [2]]$日付
[1] "2020/1/17"[ [2]]$`PCR 検査陽性者数(単日)`
[1] "0"
データフレームにしときます。*2
#各要素をベクトルに変換
date <- as.Date(as.character(lapply(positive_cases,"[[",1)))
pos_cases <- as.numeric(lapply(positive_cases,"[[",2))#データフレーム化
positive_cases.df <- data.frame(date,pos_cases)
時系列データにもしときます。*3
#時系列データ化
positive_cases.ts <- ts(pos_cases,start = c(2020,1,16),frequency = 365)
プロットしてみる
こんな感じです。tsの方が見やすいかな。
#時系列プロット
plot(positive_cases.df, ylab = "PositiveCases")
plot(positive_cases.ts, ylab = "PositiveCases")
今日はここまで。途中で試行錯誤しているので結構時間がかかった。
decomposeしたかったけど、データが足りないのでうまくいかない。
> plot(decompose(positive_cases.ts))
Error in decompose(positive_cases.ts) :
time series has no or less than 2 periods
そもそも明らかにWeeklyの周期性があるので、それを除いてみたいところ。
以下が参考になるかもしれないけど、きちんと読んでいない。