データのお砂場(96) R言語、beaver、デジャヴ?どこかでみた? bootパッケージ

Joseph Halfmoon

今回のサンプルデータセットはbootパッケージのbeaverです。忘却力の年寄なので定かではありませんが、どこかで見た気がします。デジャヴ?記憶は定かでなくても記事のindexをたどれば発見。datasetsパッケージのbeaversデータセットがビンゴであります。結論からいうと部分一致だけれども形式が違いました。

※「データのお砂場」投稿順Indexはこちら

beaverサンプルデータセット

もし以前に練習したbeaversと同じデータであれば、練習するまでもありません。パスする気満々で次へ行くかと。以前、datasetsパッケージで練習したときの記事は以下です。

データのお砂場(46) R言語、beavers、ビーバー2匹の体温の測定とな

Datasetsパッケージの中のbeaversサンプルデータセットは、ある2匹のビーバーさんの晩秋から初冬の一日の体温と活動状況のデータでした。お外へ出て動き回っているときの体温は高め、みたいなデータです。

当方の「勝手調査」の結果、以下のようではないかと推測します。

    1. データセットの出典は同じ。4匹のビーバーについて取得したデータ(1990年)である。
    2. beaversデータセットでは、そのうち2匹のビーバーについてのそれぞれほぼ1日分のデータを傘下のデータセットとしている。
    3. beaver1というビーバーさんの December 12-13のデータとbeaver2というビーバーさんの November 3-4のデータ
    4. bootパッケージのbeaverデータセットの「内容」は、上記のbeaver2データと一致した。
    5. しかしbeaversは単純なデータフレーム、beaverは時系列データ(ts)、ただしデータフレームも継承と入れ物の形式が異なる。

ううむ、同じデータだけれども「入れ物」形式が異なるので、R言語の練習としてはやっておくべきってこと?

一応、データの一致を確認したsummaryを以下に掲げておきます。上がdatasetのbeaversサンプルデータのbeaver2のデータ、下がbootパッケージのbeaverデータです。beaver_EQ_beaver2

 

まずは生データ

datasetsパッケージはデフォルトで利用可能な設定になっているので、bootパッケージをlibrary指定したのち、beaverとbeaversの両方のデータセットをロードしてみます。beaverRawData

str()の結果をみると差は一目瞭然。beaverはTime-Seriesデータで、beaversはdata.frameです。

しかし、beaverはTime-Seriesといいつつ、中身にdata.frameが詰まっているような形式みたいなので、ダンプしてみると以下のような感じです(表示は先頭部分のみ。)beaverRawData2

プロットしてみる

時系列データであるので、plot.tsの対象になる筈。ということでやってみます。

plot.ts(beaver)

プロット結果が以下に。beaverTSplot

4つのフィールド毎に時系列プロットができますな。dayが日付(番号)、timeが分単位の時刻、tempが体温で、activが活動度というか、ぶっちゃけ隠れ家の中にいたら0、お外へ出ていたら1ということみたいです。

「デジャヴ」回ではtempのプロットをちょっと加工していたので、それと同様なプロットを試みてみることにします。

まずは各フィールドへのアクセス。Time-Seriesなので、data.frameのときのように以下のような方法ではエラーとなります。tsError

Time-Seriesの末尾の100番目のデータを対象に個別のフィールドへのアクセスを行ってみます。ターゲット付近のデータが以下に。tsData

単純に以下のようにすると、最初のdayフィールドの値が取り出せます。

ts100_none

2次元のアクセスとして、1を指定するとやはりdayフィールドが、2でtime、3でtempのように個々の値にアクセスできます。ts100_1_2_3

時系列の100と指定している部分を省略すると、その列全てを取り出すことができます。こんな感じ。tsDataTemp

これだけわかれば、「デジャヴ」回で行ったのと同等なプロットが可能とできます。オペレーションはこんな感じ。

plot(beaver[,3], ylab="Temp")
abline(h=37.5, col="red", lty=2)
is.act <- beaver[,4]==1
points(time(beaver)[is.act], beaver[is.act,3], col = 2, cex = .8)

プロット結果が以下に。beaverPlotEC

新味はなかったけど、Time-Seriesの練習にはなった?

データのお砂場(95) R言語、aml、急性骨髄性白血病の寛解時間、bootパッケージ へ戻る

データのお砂場(97) R言語、bigcity、米国の都市の急成長? bootパッケージ へ進む