2011-02-11 39 views
9

我使用R进行时间序列的一些统计分析。我尝试过使用谷歌搜索,但我似乎无法找到任何明确的答案。任何一个知道更多的人请指出我的方向是正确的吗?在R中处理时间序列的最佳做法是什么?

示例:

假设我想对两个时间序列进行线性回归。时间序列包含日常数据,但这里和那里可能存在差距,因此时间序列不规律。当然,我只想比较两个时间序列都有数据的数据点。这是我目前做的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文件...也许有一些虚拟数据? – 2011-02-11 02:37:39

+0

我修复了代码中的拼写错误。但我无法真正看到虚拟数据中的重点。只要采取任何随机数据,并把它放在两列csv文件中,并命名一列日期和另一列关闭。 – c00kiemonster 2011-02-11 02:43:43

回答

11

尝试沿着这些路线行事。这假设日期在第1列.dyn包可用于将lmglm和许多类似的回归类型函数转换为接受动物园系列的函数。如图代替lmdyn$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) 

你不需要all = FALSE因为lm会忽略在其na.action参数的默认设置为NAS行。

window.zoo函数可用于切片数据。

根据你想要做什么,你可能也想看看xts和quantmod包。

6

为什么你将两个数据帧转换为zoo然后合并并转换回数据帧?如果你想要一个数据框,只需在你的read.csv()之后运行这一行。

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

这里是如何子集。

subset(data, date < slicemax & date > slicemin) 
相关问题