7

我正在努力将zoo对象转换为ts对象。

我有一个带有季度小时数据的巨大 data.frame “测试”,如下所示:

date <- c("2010-07-04 09:45:00", "2010-07-04 10:00:00", "2010-07-04 10:15:00", "2010-07-04 10:30:00", "2010-07-04 10:45:00", "2010-07-04 11:00:00")
nrv <- c("-147.241", "-609.778", "-432.289", "-340.418", "-73.96" ,  "-533.108")
tt <- c("3510.7", "3608.5", "3835.7", "4003.7", "4018.8", "4411.9")
test <- data.frame(date,nrv,tt)
test

我想做一些预测(主要是ARIMA),并认为这个forecast包是一个好主意。首先,我将数据格式化为远离字符。

test$date <- strptime(test$date,format="%Y-%m-%d %H:%M")
test$nrv <- as.numeric(as.character(test$nrv))
test$tt <- as.numeric(as.character(test$tt))
str(test) #date is POSIXlt object

由于我需要进行插值并构建滞后,我还使用了zoo使用日期变量作为索引的包,效果很好。`zoo在处理时间序列数据时向我推荐了这个包。

library(zoo)
test.zoo <- zoo(test[,2:3],test[,1])
test.zoo #date is now the Index and and the zoo objects works nicely

但后来我意识到预测似乎只适用于ts对象。(真的吗?)

当我尝试将zoo对象转换为ts对象时,我的时间索引消失了。我认为这可能是由于没有使用适当的频率。ts但是,对于这个数据集和一般对象的工作频率,我有些迷茫。

test.ts <- as.ts(test.zoo)
test.ts

如何将此zoo对象转换回ts可用于预测的对象?谢谢!

4

2 回答 2

3

预测包仅适用于ts您怀疑的对象。

您可以test.ts与预测包一起使用。例如

plot(forecast(test.ts[,1]))
于 2013-09-18T11:23:31.980 回答
2

我有同样的问题,并通过使用 zooreg 函数解决了它。step1:使用 zooreg 将 zoo 对象转换为 non-zoo 但 ts alike 对象 step2:使用 ts 函数进一步转换为 ts 对象

于 2016-01-20T17:36:29.957 回答