« 読了:Gilbert & Meijer (2005) 時系列因子分析TSFA | メイン | 読了:Commandeur, Koopman, & Ooms (2011) 状態空間モデルのためのソフトウェア »
2014年9月19日 (金)
Rによる時系列分析入門
[a]
田中 孝文 / シーエーピー出版 / 2008-06
数学が得意な人には苦手な人の気持ちがわからないし、苦手な人はふつう年を食ってから改めて勉強したりはしないので、結局わたしの気持ちなんで誰にもわかってもらえないのである。(ぼやき)
というわけで、データ解析の諸領域のなかでも鳥肌立っちゃうくらいに苦手な、時系列分析の勉強のために通読した本。論文を読んでいるといつもわけがわかんなくなり、バカ高い参考書を何冊も買っては投げ出し、レベルを落としに落とし、ついにここにたどり着きました。もとは青山学院大の学部の計量経済学の演習資料だそうである。文系の学生諸君よ、ありがとう!
ええと、内容は...
最初の1/3は、経済時系列・超入門、という感じ。
- 1章: Rの基礎知識。冗談抜きの基礎知識である。章末の演習課題は「データフレームをつくろう」だ。
- 2章: 時系列データをグラフに描く。plot()の説明だが、ついでにtsクラスを導入。
- 3章: 増減率を計算する。前期比、前年同期比、年平均増減率。それから、たとえばGDPの増減率に内需の増減率がどれだけ貢献したか、なあんていう話(寄与度分解)。恥ずかしながらこういう話全然知らなかったので、面白く読んだ。いやあ、私の通っていた大学には経済学の講義なんてなかったのですよ (嘘です。通ってなかったのでわからないだけだ)
- 4章: トレンドを抽出する。直線の最小二乗近似について懇切丁寧に説明 (つまりこの教科書は初等統計学入門を兼ねているのだ。講義担当者のご苦労がしのばれる)。
- 5章: 成長曲線。修正指数曲線、ロジスティック曲線、ゴンペルツ曲線 (これって実際にはどのくらい使うのかしらん?)。面白いのは、ロジスティック曲線の近似について、まず最小二乗で(lm()で)無理やりあてはめるやりかたを丁寧に説明し、最後にnls()を紹介する点。そうかー、教えるという観点からはこういう順番になるのか...
- 6章: 季節変動を抽出する。移動平均(filter()), 移動平均を使った古典的な季節調整法(decompose())。
- 7章: 指数平滑法による予測。指数平滑についての説明(filter()を使う)。ホルト・ウィンタース法(HoltWinters())。季節要素の導入。
- 8章: ちょっと話がそれているんだけど、ここで景気循環の話。面白い話で、興味深く読んだ。シュンペーターのいう「好況期」「不況期」と、ミッチェルという人がいう「収縮期」「拡張期」のちがいとか。在庫循環を二次元で視覚化するとか。景気動向指数をどうやって計算するかとか。真面目に大学に通ってりゃよかったな。
中盤(9章-14章)は時系列とはほぼ無関係に、確率統計入門。確率と確率分布、確率変数の特性、正規分布、母集団と標本、積率法と最尤法、標本分布(ここでカイ二乗分布を導入)、推定量の不偏性・一致性・有効性、区間推定(ここでt分布を導入)、仮説検定(t検定とF検定)、単回帰とそのパラメータ推定量、予測値の区間推定、重回帰とそのパラメータ推定量、2次元の同時確率分布(ここでようやく共分散と相関を導入)、条件付き分布と独立性、多変量正規分布(ついでにcontour()を紹介)。通年の講義の1/3で、これだけホントにやるのだろうか。大変だなあ。
終盤、ついに時系列分析っぽくなってまいりまして... ここからは真面目に読んだ。我ながら涙ぐましい。
- 15章: 定常確率過程。確率過程の平均、分散、自己共分散、自己相関係数。弱定常とはなにか。時系列データの特性。標本コレログラム。acf() の紹介。ラグ演算子の導入。差分方程式(1階、2階、p階)とその解。特性方程式をpolyroot()をつかって解く実習。最後に、差分方程式で時系列をつくるシミュレーション。
- 16章: 線形定常過程。まずホワイトノイズを定義し、シミュレーション。で、AR(1)、その特性、シミュレーション。AR(2), AR(p)とその特性。MA(1), MA(2), MA(q)とその特性。ARとMAの関係(MAの反転可能性ってそういう意味だったのか、はじめてわかったよ...)。偏自己相関。pacf()をつかったシミュレーション。最後にARMA(1,1), ARMA(p,q), ARIMA(p,d,q)をちらっと紹介して、arima.sim()で遊ぶ。
- 17章: ARIMAモデルの推定。まず前処理の話。トレンドはとりあえず差分をとって除去(まだ単位根検定の話はしない。そうそう、こういう教え方をしてほしいよね!)。分散非定常ならBox-Cox変換。季節変動は季節階差とか季節調整とか、SARIMAモデルとか(ちらっと触れるだけ)。で、いよいよ推定ですが... 次数の推定には触れず(いろんな次数でモデルを推定して比較なさいとのこと)、尤度関数にも触れず、とにかくarima()で推定・診断してみせる。もちろんコードつきの親切な解説である(arima(), Box.test(), tsdiag())。この辺は仕事であまり使わないのでざっと目を通しただけだが、わかりやすい...
- 18章: ARIMAモデルによる予測。まず条件つき期待値とMSEについて説明。で、ARIMAモデルでの予測。まずコードを真面目に書き下し、最後にpredict()を使って再現。
- 19章: 単位根過程。RWの説明とシミュレーション。ここではじめて和分過程の登場(ARIMAモデルの説明の際には飛ばしていたのである)。確定的トレンド項と確率的トレンド項を区別し、RWに定数を入れてみたり(ドリフトつきRW)、定常過程に定数をいれてみたりする。シミュレーションしてみるとこれが案外区別できない。で、見せかけの回帰(spurious regression)を紹介し(もちろんシミュレーションつき)、いよいよ単位根検定に突入。ADF検定の手順を丁寧に説明。なにかの宗教儀式かというくらいに段取りがややこしいのだが、Rではurcaパッケージのur.df()で簡単に実行できるのだそうで、そのコード例。
- 20章: 周波数領域の分析。この辺の話にはちょっとアレルギーがあるので、今回は読んでいないんだけど... フーリエ変換とスペクトル分析の説明である。いつかそのうちにな。
- 21章: 復習を兼ねた実習。
というわけで、詳しい人は「肝心なところを端折りおって...」と苛立つかもしれないが、私のような宿命的な数学音痴にはぴったりの教科書であった。特に15章から19章、説明の順序がわかりやすいおかげで、はじめて腑に落ちる箇所が多かった。要所要所でシミュレーションコードを示してくれているのも嬉しい。実行してはいないけど、目で追うだけでなんとなくわかったような気がして、助かる。
それにしてもこういう話、少なくとも私にとっては、会社勤めしてはじめて面白みを感じるようになった話題だ。学生の身の上にしてちゃんと勉強できる人って、いったいどういう動機づけを持っているんだろうか。(形を変えたぼやき)
データ解析 - 読了: 「Rによる時系列分析入門」