データのお砂場(152) R言語、economics、米国の経済指標データ{ggplot2}

Joseph Halfmoon

さて今回は米国の経済指標データです。米国の中央銀行にあたる連邦準備銀行の一つであるセントルイス連邦準備銀行は蓄積した各種統計データとその研究で有名みたいです。素人老人は知らんかったよ。その定評あるデータを使っているggplot2の各種グラフ描画例を適当に選んで味わってみるの回?です。例を引き写しているだけなのよ。

※「データのお砂場」投稿順Indexはこちら

※使用させていただいている Rのversionは 4.3.1。RStudioは 2024.04.2+764 “Chocolate Cosmos” です。

US economic time series

今回のサンプルデータセットはタイトルにあるとおりの時系列データです。データセットの解説ページが以下に。

US economic time series

出典は、『セントルイス連邦準備銀行』様だそうです。URLが以下に。

Federal Reserve Bank of St. Louis

上記からは多数のデータがダウンロード可能みたいです。

今回のサンプルデータは、毎月、以下の指標をならべてます。

    • pce、personal consumption expenditures(個人消費支出)
    • pop、 total population, in thousands
    • psavert、 personal savings rate
    • uempmed、 median duration of unemployment, in weeks
    • unemploy、 number of unemployed in thousands

データとしては同じですが、格納形式の異なる2つのデータセットが存在し、処理例では適宜、使い分けている感じです。

先ずは生データ

まずは「Wide」形式のサンプルデータセットです。

economics

ぶっちゃけ574行 x 6列で上記の各変数を並べたシンプルな形式に見えます。economicsRawData

 

一方、「Long」形式のサンプルデータセットが以下です。

economics_long

ぶちゃけ上記の574行のそれぞれを5つの変数毎にバラシて574×5=2870レコードにしたデータのようです。1レコードにはdate以外に変数名とその値、そしてLong形式に特有なvalue01というフィールドが含まれています。このvalue01は、該当の変数の最小値を0、最大値を1として値を0~1の範囲に「正規化」した数字みたいです。economics_longRawData

 

処理例

このサンプルデータを使った処理例はごちゃまんと存在するので、その中から見繕って何点かやってみます。

最初は横軸にdateをとり、縦軸にpsavert(貯蓄率)をとってグラフ化するものです。処理手順が以下に。

p <- ggplot(economics, aes(date, psavert, color = "savings rate"))
p + geom_line(key_glyph = "timeseries")

作製したグラフが以下に。2005/6年くらいまではずるずる低下してきたけれども、その後は上昇に転じている感じ?個人の感想デス。economics1

つづいては日時に対して残りの5変数をそれぞれプロット。前回やったfacet使うものです。

ggplot(economics_long, aes(date, value)) + geom_line() + facet_wrap(vars(variable), scales = "free_y", nrow = 2, strip.position = "top") + theme(strip.background = element_blank(), strip.placement = "outside")

グラフが以下に。個人消費(PCE)と人口(POP)がほぼ一貫して増加している感じです。economics2

1980年代からしても1億人くらい人口が増えているのは、自然増ではないでしょう。多分移民ね。

つづいてヒストグラム。処理が以下に。

ggplot(economics_long, aes(value)) + facet_wrap(~variable, scales = 'free_x') + geom_histogram(binwidth = function(x) 2 * IQR(x) / (length(x)^(1/3)))

グラフが以下に。まあ時系列データから折れ線グラフだけでなく、ヒストグラムも描けると。economics3

さて、Long形式の方に付加されている(Wide形式でも計算すりゃ求まるけど)value01フィールドを使ったグラフがお次。

ggplot(economics_long, aes(date, value01, colour = variable)) + geom_line()

結果が以下に。0~1範囲に揃えているので重ねて描きやすいデス。economics4

今度は、最近のデータ部分を取り出した上で、失業者数を階段状のグラフとして表すもの。処理例が以下に。

recent <- economics[economics$date > as.Date("2013-01-01"), ]
ggplot(recent, aes(date, unemploy)) + geom_step()

グラフが以下に。着々と減少。economics5

続くは、横軸が対人口の失業率(失業者数を人口で単純に割ったもの)、縦軸が貯蓄率でその推移をプロットするもの。

m <- ggplot(economics, aes(unemploy/pop, psavert))
m + geom_path(aes(colour = as.numeric(date)))

色が薄くなるほど最近でことで良いのかな。

economics6

不思議な感じのグラフではあります。

データのお砂場(151) R言語、diamonds、facetで見方変更?{ggplot2} へ戻る

データのお砂場(153) R言語、faithfuld、間欠泉の2D密度?{ggplot2} へ進む