暇人の研究室

金融工学やR言語・統計学について書いてます。

<

【R言語】xtsパッケージによる時系列データの操作

 

Rでは時系列データを扱うための様々なパッケージまたはクラス(オブジェクト)が用意されています。今回はその1つであるxtsパッケージについて紹介していきます。

 

古いRの参考書だと時系列データは全部tsパッケージでやっているものがよくありますが、金融データに関してはxtsパッケージでやる方が絶対効率がいいので、もし株価収益率などの金融データを分析するのであれば間違いなくインストールしておいた方がいいパッケージです。

 

xtsパッケージはzooパッケージの派生形であり、金融データ分析において便利な関数が豊富に揃っており、データフレームやTSなどの他のデータ形式からの変換が簡単に行うことができるのも魅力の一つです。

 

 

・パッケージのインストールと読み込み

 

>install.packages("quantmod")   ##インストール

>library(quantmod)  ##パッケージ読み込み

 

 

ここはいつも通りですね。このパッケージにはsample_matrixというデータが内蔵されているので、これを使ってxtsパッケージの簡単な操作を行ってきます。

 

 ♯♯♯ サンプルデータの読み込み

> data(sample_matrix) 

 

 ♯♯データの型の確認

> class(sample_matrix)  
[1] "matrix"

 

♯♯xtsに変換
> sample_matrix<-as.xts(sample_matrix) 

 

♯♯データの型の確認
> class(sample_matrix)  
[1] "xts" "zoo"

 

 

 

・データフレームのxts形式の変換

 一応説明書によると ↑ のようにas.xts()で変換できるとあるのですが、実際にやるとなぜかうまくいかないことがあります。解決策としては一回zooパッケージを通すというのがいいようです。

 

 

 

・データの中身の確認

 

 > head(sample_matrix)
Open High Low Close
2007-01-02 50.03978 50.11778 49.95041 50.11778
2007-01-03 50.23050 50.42188 50.23050 50.39767

 

・データの操作

 

###2007年5月3日のデータを取得

> sample_matrix['2007-05-03']
Open High Low Close
2007-05-03 49.46328 49.69097 49.46328 49.58677

 

###指定した期間のデータを抽出(1/2~1/7)

> sample_matrix['2007-01-01/2007-01-07']
Open High Low Close
2007-01-02 50.03978 50.11778 49.95041 50.11778
2007-01-03 50.23050 50.42188 50.23050 50.39767
2007-01-04 50.42096 50.42096 50.26414 50.33236
2007-01-05 50.37347 50.37347 50.22103 50.33459
2007-01-06 50.24433 50.24433 50.11121 50.18112
2007-01-07 50.13211 50.21561 49.99185 49.99185

 

###指定した期間以降のデータを抜き出す

> sample_matrix['2007-04-01::']
Open High Low Close
2007-04-01 48.94407 48.97816 48.80962 48.87032
2007-04-02 48.90488 49.08400 48.90488 49.06316

‥‥

 

 

 

 

・XTSの分離

 

時系列データをRで触ったことのある人なら一度は経験があると思いますが、時系列データの数字の部分をほかのパッケージの関数で操作したいのに、左端の日にちの部分が邪魔してエラーが出てしまうことがよくあります。そういったことへの対策として、xtsは日付部分とデータ部分を分離させることができます。

 

 

###データ部分を抽出
>coredata(sample_matrix)

> head(coredata(sample_matrix))
Open High Low Close
[1,] 50.03978 50.11778 49.95041 50.11778
[2,] 50.23050 50.42188 50.23050 50.39767

 

###時間部分を取得
>index(sample_matrix)

> head(index(sample_matrix))
[1] "2007-01-02 JST" "2007-01-03 JST" "2007-01-04 JST" "2007-01-05 JST"
[5] "2007-01-06 JST" "2007-01-07 JST"

 

 →詳しくは

 

 

ちなみに金融データを扱う場合はxtsの他にもquantmodというパッケージもとても便利です。→【R言語】 quantmodパッケージの基本的な使い方 

 

 

追記:Rで金融データを分析するにあたっては金融データ解析の基礎 という本がとても分かりやすく参考になりました。とてもオススメです。→書評

 

 

 

www.dmjtmj-stock.com