今週も特にありません

進捗どうですか?

Rからアメリカ雇用統計データ収集

FXをやっている人なら誰しも気になる経済統計といえば、アメリカの雇用統計。 【米国】雇用統計 - 経済指標 - Yahoo!ファイナンスでも直近の数年間のデータを詳しく見ることができますが、簡単にRから直接データを収集して、分析したいという人はblsAPIパッケージを使ってみるのが良さそうです

こちらmikeasilva/blsAPI · GitHubにもサンプルがありますが、発表時に一番注目される非農業部門雇用者数と失業率のデータを使った例がないようなので、そのデータを取得してから可視化するところまでをメモ

使い方は簡単で、パッケージに唯一含まれているblsAPIという関数に欲しいデータのIDコードを与えてやればデータを取って来れます。その他、list形式でパラメータを指定してやれば、いろいろと自由にデータ収集可能です

library(rjson)
library(blsAPI)
library(dplyr)

payload <- list(
  'seriesid' = c('CES0000000001', 'LNS14000000'),
  'startyear' = 2007,
  'endyear' = 2015)

response <- blsAPI(payload) %>% fromJSON()

これだけで、2007年から2015年までの雇用者数と失業率のデータが取って来れます。 responseの中に2系列入っており、年月についても整形してdata.frameに変換してやります

series1 <- response$Results$series[[1]]$data
series2 <- response$Results$series[[2]]$data

date_str <- 0
value1 <- value2 <- 0
for (i in 1:length(series1)) {
  date_str[i] <- paste(series1[[i]]$year, sub('M', '', series1[[i]]$period), "01", sep = "-")
  value1[i] <- series1[[i]]$value
  value2[i] <- series2[[i]]$value
}

date <- as.Date(date_str[order(date_str)])[-1]
data1 <- diff(as.numeric(value1[order(date_str)]))
data2 <- as.numeric(value2[order(date_str)])[-1]
df <- data.frame(date, data1, data2)

データを確認します

> head(df)
        date data1 data2
1 2007-02-01    88   4.5
2 2007-03-01   188   4.4
3 2007-04-01    78   4.5
4 2007-05-01   145   4.4
5 2007-06-01    71   4.6
6 2007-07-01   -34   4.7

> tail(df)
          date data1 data2
95  2014-12-01   329   5.6
96  2015-01-01   201   5.7
97  2015-02-01   266   5.5
98  2015-03-01   119   5.5
99  2015-04-01   221   5.4
100 2015-05-01   280   5.5

前月比で雇用者数の変化を棒グラフにする

library(ggplot2)
library(scales)

df %>% ggplot(aes(x = date)) +
  geom_bar(aes(y = data1), stat = "identity", fill = "blue") + 
  theme_bw() + theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  scale_x_date(labels = date_format("%m/%y"), breaks = date_breaks("6 months")) +
  scale_y_continuous(breaks = seq(-1000, 1000, by = 200)) + ylab("1-Month Net Change")

f:id:masaqol:20150630011930p:plain

失業率もプロットする

df %>% ggplot(aes(x = date)) +
  geom_line(aes(y = data2), size = 1, colour = "red") +
  theme_bw() + theme(axis.text.x = element_text(angle = 45, hjust = 1)) + 
  scale_x_date(labels = date_format("%m/%y"), breaks = date_breaks("6 months")) + 
  scale_y_continuous(breaks = seq(0, 12, by = 1)) + ylab("Unemployment Rate")

f:id:masaqol:20150630011941p:plain