仕事やプライベートで調べたことのメモ書きなど(@札幌)

仕事やプライベートで調べたこと、興味ある事のメモ書きです。2016年4月から札幌で働いてます。※このブログは個人によるもので、団体を代表するものではありません。

「現場ですぐ使える時系列データ分析~データサイエンティストのための基礎知識〜」を読みながらRでやってみたことのメモ書き1

祝日を利用して「現場ですぐ使える時系列データ分析~データサイエンティストのための基礎知識〜」という書籍を読みながらRをいじってみました。
書籍のサポートページが以下にあり、サンプルデータのダウンロードができます。

ちなみに、私は、Rはほぼ初心者です。以前にちょっとだけそれこそ体験だけしたことある程度。

gihyo.jp

R環境のセットアップ

この本ではR環境のセットアップについて1-5章あたりから紹介。以下からダウンロードできます。

Download R-3.4.4 for Windows. The R-project for statistical computing.

なお、この本では標準でついているRGuiを使って話を進めていますが、一般的にはRStudioという環境を使った方が便利そうなので、RStudioをその後にインストールします。

www.rstudio.com

これで準備完了。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)

f:id:takumats:20180321173826p:plain
他にも、相関を見る散布図とかも簡単に描けます。

時系列データをいじってみる

話の流れ的にはARモデルの話なので、例えば株が前日にあがっていると、今日も上がりやすいとか、前日の挙動との相関があるかを調べます。

> plot(x=X.return[1:99], y=X.return[2:100])

f:id:takumats:20180321180025p:plain
ひとつ前のデータとはなんだか相関がありそうです。では、二つ以上前のデータとの相関も見てみます。Rには便利な関数が用意されています。

> acf(X.return)

f:id:takumats:20180321180305p:plain
なんでもそろってますね。この図はコレログラムというそうです。で、この図は自己相関係数を求めたものですが、例えば2ラグ2との相関にはラグ1との相関も含まれてしまっています。このテキストでは以下のようにわかりやすく説明されていました。

a. 今日の値には昨日の値が関係する。
b. 昨日の値には一昨日の値が関係する。
のいずれも成り立ちます。それならばaとbを組み合わせて、
c. 今日の値には、昨日の値を通じて一昨日の値が関係する。

一方で、一昨日の値が今日の値に関係している直接的な関係を調べるには、昨日の値の影響を除去することが必要となります。

このような係数を、偏自己相関係数というそうです。Rではこれも簡単に求められます。スバラシイ!

> acf(X.return, type="p")

f:id:takumats:20180321181238p:plain

今回はここまで。続きがあるのかは・・、不明。