さて今回は米国の経済指標データです。米国の中央銀行にあたる連邦準備銀行の一つであるセントルイス連邦準備銀行は蓄積した各種統計データとその研究で有名みたいです。素人老人は知らんかったよ。その定評あるデータを使っているggplot2の各種グラフ描画例を適当に選んで味わってみるの回?です。例を引き写しているだけなのよ。
※「データのお砂場」投稿順Indexはこちら
※使用させていただいている Rのversionは 4.3.1。RStudioは 2024.04.2+764 “Chocolate Cosmos” です。
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列で上記の各変数を並べたシンプルな形式に見えます。
一方、「Long」形式のサンプルデータセットが以下です。
economics_long
ぶちゃけ上記の574行のそれぞれを5つの変数毎にバラシて574×5=2870レコードにしたデータのようです。1レコードにはdate以外に変数名とその値、そしてLong形式に特有なvalue01というフィールドが含まれています。このvalue01は、該当の変数の最小値を0、最大値を1として値を0~1の範囲に「正規化」した数字みたいです。
処理例
このサンプルデータを使った処理例はごちゃまんと存在するので、その中から見繕って何点かやってみます。
最初は横軸にdateをとり、縦軸にpsavert(貯蓄率)をとってグラフ化するものです。処理手順が以下に。
p <- ggplot(economics, aes(date, psavert, color = "savings rate")) p + geom_line(key_glyph = "timeseries")
作製したグラフが以下に。2005/6年くらいまではずるずる低下してきたけれども、その後は上昇に転じている感じ?個人の感想デス。
つづいては日時に対して残りの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)がほぼ一貫して増加している感じです。
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)))
グラフが以下に。まあ時系列データから折れ線グラフだけでなく、ヒストグラムも描けると。
さて、Long形式の方に付加されている(Wide形式でも計算すりゃ求まるけど)value01フィールドを使ったグラフがお次。
ggplot(economics_long, aes(date, value01, colour = variable)) + geom_line()
結果が以下に。0~1範囲に揃えているので重ねて描きやすいデス。
今度は、最近のデータ部分を取り出した上で、失業者数を階段状のグラフとして表すもの。処理例が以下に。
recent <- economics[economics$date > as.Date("2013-01-01"), ] ggplot(recent, aes(date, unemploy)) + geom_step()
続くは、横軸が対人口の失業率(失業者数を人口で単純に割ったもの)、縦軸が貯蓄率でその推移をプロットするもの。
m <- ggplot(economics, aes(unemploy/pop, psavert)) m + geom_path(aes(colour = as.numeric(date)))
色が薄くなるほど最近でことで良いのかな。
不思議な感じのグラフではあります。