「現場ですぐ使える時系列データ分析~データサイエンティストのための基礎知識〜」を読みながらRでやってみたことのメモ書き1
祝日を利用して「現場ですぐ使える時系列データ分析~データサイエンティストのための基礎知識〜」という書籍を読みながらRをいじってみました。
書籍のサポートページが以下にあり、サンプルデータのダウンロードができます。
ちなみに、私は、Rはほぼ初心者です。以前にちょっとだけそれこそ体験だけしたことある程度。
R環境のセットアップ
この本ではR環境のセットアップについて1-5章あたりから紹介。以下からダウンロードできます。
Download R-3.4.4 for Windows. The R-project for statistical computing.
なお、この本では標準でついているRGuiを使って話を進めていますが、一般的にはRStudioという環境を使った方が便利そうなので、RStudioをその後にインストールします。
これで準備完了。RStudioを起動します。終了時は q() と実行するそうです。
> q()
※RStudioからだったらアプリを閉じればいいだけですが・・。
Rで時系列データをいじってみる
先に紹介した本書籍のサポートページからサンプルデータをダウンロードします。
展開すると、「演習データ」というフォルダ内に「.RData」というファイルがあるので、それをダブルクリック。
インストールしたままだと、デフォルトのRの環境に関連付けされているので、RStudioを選択します。
すると、以下のように、環境内に取り込まれます。
> load("C:/Users/xxxxxxxxxxxxxx/exercise_data/演習用データ/.RData")
で、ここで以下のコマンドを実行すると、取り込まれたデータの一覧を表示できます。
> ls() [1] "data.cum.core30" "data.cum.core30.2" "data.cum.return" [4] "data.cum.return2" "data.cum.train" "data.cum.train.2" [7] "data.log.core30" "data.log.return" "data.log.return2" [10] "data.price" "Date" "label" [13] "price4" "return4" "sample1" .......
ここでprice4の中身を見てみる。
> price4 x5202 x7272 x4927 x4502 1 55 682 2460 3595 2 56 672 2543 3575 3 56 668 2544 3570 4 57 674 2500 3500 .......
データx5202を示すには、以下のように$で繋げてフルパス的に指定する必要がある。
> price4$x5202 [1] 55 56 56 57 60 62 61 59 58 60 62 63 66 66 65 66 66 62 61 60 62 66 66 71 73 [26] 73 73 74 72 70 68 68 68 72 74 74 81 85 86 90 87 86 91 92 92 91 89 91 90 86 .......
ここで、price4をattachしておくと、x5202を直接指定できる。
> attach(price4) > x5202 [1] 55 56 56 57 60 62 61 59 58 60 62 63 66 66 65 66 66 62 61 60 62 66 66 71 73 [26] 73 73 74 72 70 68 68 68 72 74 74 81 85 86 90 87 86 91 92 92 91 89 91 90 86 .......
attachはusingやVBのwithみたいなものか。そのままだと、以降に収集つかなくなるのでdetachしておくのがおススメの模様。
> search() [1] ".GlobalEnv" "price4" "tools:rstudio" "package:stats" "package:graphics" ....... > detach(2)
attachすると2番目に追加されるというのが、rの世界の常識の模様・・。
まずはグラフを書いてみる!こういったことが簡単にできるのはありがたいですね♪
> attach(price4) > par(mfcol=c(2,2)) > plot(x5202, type="l") > plot(diff(log(x5202))*100, type="l") > hist(diff(log(x5202))*100, breaks=seq(-10,20,2)) > detach(price4)
他にも、相関を見る散布図とかも簡単に描けます。
時系列データをいじってみる
話の流れ的にはARモデルの話なので、例えば株が前日にあがっていると、今日も上がりやすいとか、前日の挙動との相関があるかを調べます。
> plot(x=X.return[1:99], y=X.return[2:100])
ひとつ前のデータとはなんだか相関がありそうです。では、二つ以上前のデータとの相関も見てみます。Rには便利な関数が用意されています。
> acf(X.return)
なんでもそろってますね。この図はコレログラムというそうです。で、この図は自己相関係数を求めたものですが、例えば2ラグ2との相関にはラグ1との相関も含まれてしまっています。このテキストでは以下のようにわかりやすく説明されていました。
a. 今日の値には昨日の値が関係する。
b. 昨日の値には一昨日の値が関係する。
のいずれも成り立ちます。それならばaとbを組み合わせて、
c. 今日の値には、昨日の値を通じて一昨日の値が関係する。一方で、一昨日の値が今日の値に関係している直接的な関係を調べるには、昨日の値の影響を除去することが必要となります。
このような係数を、偏自己相関係数というそうです。Rではこれも簡単に求められます。スバラシイ!
> acf(X.return, type="p")
今回はここまで。続きがあるのかは・・、不明。