2011-02-11 16 views
9

私は時系列の何らかの統計解析にRを使用しています。私は周りにグーグルを試みたが、私は決定的な答えを見つけることができないようだ。もっと知っている人が私に正しい方向を向けることができますか?Rの時系列を扱うベストプラクティスは何ですか?

例:

のは、私は2つの時系列の線形回帰を行いたいとしましょう。時系列には日々のデータが含まれていますが、ここには間隙があり、時系列は規則的ではありません。当然、私は両方の時系列にデータがあるデータ点を比較したいだけです。これは私がデータフレームにCSVファイルを読み込むために、現在何をすべきかです:

library(zoo) 
apples <- read.csv('/Data/apples.csv', as.is=TRUE) 
oranges <- read.csv('/Data/oranges.csv', as.is=TRUE) 
apples$date <- as.Date(apples$date, "%d/%m/%Y") 
oranges$date <- as.Date(oranges$date, "%d/%m/%Y") 
zapples <- zoo(apples$close,apples$date) 
zoranges <- zoo(oranges$close,oranges$date) 
zdata <- merge(zapples, zoranges, all=FALSE) 
data <- as.data.frame(zdata) 

は、これを行うのスリッカー方法はありますか?

また、データをスライスするにはどうすればいいですか?たとえば、特定の期間内の日付でdataのエントリを選択しますか?

+2

コードは正しくありません。あなたのcsvファイルはありません。おそらくいくつかのダミーデータですか? –

+0

私はコード内のタイプミスを修正しました。しかし、私はダミーデータのポイントを実際に見ることはできません。ランダムなデータを2つの列のcsvファイルに入れ、1つの列の日付に名前を付け、もう1つを閉じる。 – c00kiemonster

+9

あなたの質問が低品質であるとみなされず、レスポンダが簡単にコードを実行でき、複数のレスポンダがすべて同じ入力を使用して実行できるようにする理由です。これはあなたがこれを提供するあなたの責任と一般的にみなされている質問に対する答えを知らずに自分自身で行うことができるものなので、 –

答えて

11

これらの行に沿って何かお試しください。 dynパッケージは、lm,glmなど多くの同様の回帰タイプ関数を動物園シリーズを受け入れるものに変換するために使用できます。示されているようlmの代わりにdyn$lmを書く:

library(dyn) # also loads zoo 
fmt <- "%d/%m/%Y" 
zapples <- read.zoo('apples.csv', header = TRUE, sep = ",", format = fmt) 
zoranges <- read.zoo('oranges.csv', header = TRUE, sep = ",", format = fmt) 
zdata <- merge(zapples, zoranges) 
dyn$lm(..whatever.., zdata) 

lmはそのna.action引数のデフォルト設定の下でNASとの行を無視しますので、あなたがall = FALSEは必要ありません。

window.zoo機能を使用してデータをスライスすることができます。

あなたがしたいことに応じて、xtsとquantmodパッケージを見たいかもしれません。

+0

私はdynパッケージについては全く知らなかった。 – c00kiemonster

+1

dynパッケージの+1 –

6

なぜ両方のデータフレームをzooに変換してから、マージしてデータフレームに戻しましたか?データフレームが必要な場合は、read.csv()の後にこの行を実行してください。

data <- merge(apples, oranges, by = "date") 

サブセットの作成方法は次のとおりです。

subset(data, date < slicemax & date > slicemin) 
関連する問題