在使用forecast包的时候常常遇到的一个问题是其只支持ts对象(就我目前查阅到的资料来说,Rob Hyndman:The forecast package only works with ts
objects),而ts对象又有诸多不便,在时间序列中常用的zoo对象貌似forecast又不支持。
在stackoverflow上查到一个问题,估计大家也经常会遇到,问题第一句话就是“I am struggling to convert azoo
objects to ats
object.”,相当有共鸣。贴出来,大家讨论讨论
I am struggling to convert a zoo
objects to a ts
object.
I have a huge data.frame "test" with quarterly hour data, which looks like this:
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
I want to make some predictions (mostly ARIMA
) and thought the forecast
package would be a good idea for that. First of I formated the data away from characters.
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
Since I needed to do an interpolation and construct lags, I also used the zoo
package using the date variable as index, which worked great. The `zoo
package was recommended to me while dealing with time series data.
library(zoo)
test.zoo <- zoo(test[,2:3],test[,1])
test.zoo #date is now the Index and and the zoo objects works nicely
But then I realized that forecasting only seems to work with ts
objects. (Is that true?)
When I tried to convert the zoo
object to a ts
object, my time index disappeared. I think this might be due to not using a proper frequency. However I am somewhat lost as to what would be a working frequency for this dataset and with ts
objects in general.
test.ts <- as.ts(test.zoo)
test.ts
How do I convert this zoo
object back to a ts
object I can use for forecasting? Thanks!