瓢箪鯰的な男がR初級者から中級者になるのを記すブログ

掴みどころのないオッサンのR勉強録。目標は中級者。 その他雑記なども

時系列分析「DECOMP法」の紹介

ちょっと今日は少し趣向を変えて。。。
たまには「これがデータ分析の花だ!!」見たいのを見せておかないと
やはり学習意欲が湧かないというのを、同僚を指導していて分かったんで。。

そんなわけで、今日はDECOMP法の紹介。


DECOMP法とは??

時系列データを扱うことは、仕事をしている方なら一度はあったかと思う。
日々の売り上げ、月の仕入れ額、月ごとの集客数etc。
時間で繋がっているデータのことを格好良く「時系列データ」と呼んでいて、
その分析を「時系列分析」と呼んでおります。

時系列データで興味があるのは、大きくわけて次の3つ。
①トレンドとして増えているOR減っている、上がっているor下がっている。またその水準。
②季節性(6月に傘が売れるとか、12月に餅が売れるとか、そういう季節特有の性質)
③イレギュラーな動き(ノイズ)

で、時系列データをこれら3つ(正確にはAR成分も入るので4つ)に分解してくれるのが
「DECOMP法」という便利なツール。
数学的な説明は、こちらの後ろの方をご覧いただきたい


さて、ちょっとやってみよう。

時系列データの例として、総務省の家計調査
2000年以降の時系列結果-二人以上の世帯の、消費支出を取ってくる。期間は2010年1月~2016年12月。
エクセルのブック形式で、時系列データが横に並んでいるというダメなフォーマットなので
必要なところを切り出して、手動でcsvに変換する。
ファイル名は「消費支出.csv」、データ名はsyouhiである。Cドライブの直下に置いておく。
Rで必要なコードを書く。
(本当は、1世帯当たり人員やCPIも使ってコントロールせにゃならんのだけど、それはまたの機会に)

setwd("C:/")	#ディレクトリ変更
moto<-read.csv("消費支出.csv",header=TRUE)	#消費支出のデータを取り込む
t.syouhi<-ts(moto$syouhi,start=c(2010,1),frequency=12)	#2010年1月からスタートし、12か月周期の時系列データに変換
ts.plot(t.syouhi,ylab="消費支出額",main="1世帯当たりの1か月の消費支出の推移")	#取りあえず折れ線グラフに

f:id:namazu1945:20170530201929p:plain

ジグザグしながら横ばい的な動き。

で、ここからがDECOMP法の実行だ。

library(timsac)	#DECOMPはTIMSACパッケージに含まれるので、それを呼び出す
kekka<-decomp(t.syouhi)	#DECOMPにかける

こんなグラフが表示される。
f:id:namazu1945:20170530202407p:plain

左上が原系列とトレンド成分、右上が季節成分
左下がノイズ成分、右下がAR成分である。
詳しい結果はkekkaというオブジェクトに格納されている。

このままだとグラフを読みづらいので、kekkaオブジェクトから
トレンド成分と、季節成分と、ノイズ成分を切り出して
同じように時系列データ化する。

t.trend<-ts(kekka$trend,start=c(2010,1),frequency=12)	#トレンド成分を時系列データ化
t.kisetsu<-ts(kekka$seasonal,start=c(2010,1),frequency=12)	#季節成分を時系列データ化
t.noise<-ts(kekka$noise,start=c(2010,1),frequency=12)	#ノイズ成分を時系列データ化

んで、グラフ化

ts.plot(t.trend,main="トレンド成分")	#トレンド成分をグラフ化
ts.plot(t.kisetsu,main="季節成分")	#季節成分をグラフ化
ts.plot(t.noise,main="ノイズ成分")	#ノイズ成分をグラフ化

トレンド成分
f:id:namazu1945:20170530203143p:plain
やっぱり消費税上げたあたりからトレンドとしても減ってきている感じですね。

季節成分
f:id:namazu1945:20170530203344p:plain
明確な季節性はありそう。

迷うのは、このノイズ成分。
f:id:namazu1945:20170530203642p:plain

2014年の3月から4月あたりで、大きく振れている。
これはどう考えても、消費税を上げた影響であって
ノイズ成分に分解できたからと言って、全部がノイズではないことを示している。
ノイズとは、ただの雑音ではなくて、中に何かしらの情報が潜んでいる場合があるので
注意深く扱ってやる必要がある。
こういうことが、データ分析では本当に多い。

DECOMP法は、アタリをつける上で非常に有用なツール。
ただ読み方は、他のツールと同じく注意して頂きたい。

手っ取り早くこのDECOMP法を試したい方は
こちらのWeb上でできるので試していただきたい。