1

我有一个数据框,其中包含周一至周五上午 8:00 到下午 12:00 的数据。

我想建立一个线性模型并使用预测来预测这个数据 12 个月。

我的数据框称为 www:

结果dput(head(www,30))

structure(list(DATE = structure(c(1367409600, 1367413200, 1367416800, 
    1367420400, 1367424000, 1367499600, 1367510400, 1367506800, 1367593200, 
    1367596800, 1367503200, 1367582400, 1367586000, 1367589600, 1367841600, 
    1367942400, 1367931600, 1367935200, 1367938800, 1368028800, 1368018000, 
    1368021600, 1368025200, 1368104400, 1368108000, 1368111600, 1368115200, 
    1368201600, 1368198000, 1368194400), class = c("POSIXct", "POSIXt"
    ), tzone = ""), VOLUME = c(17447212L, 22345495L, 24855225L, 24756301L, 
    23329007L, 20119332L, 21344801L, 22538957L, 24095519L, 22228820L, 
    21975461L, 18383839L, 23157799L, 23964513L, 18507639L, 19638062L, 
    18746896L, 19970344L, 21345079L, 18668067L, 17835332L, 19394764L, 
    20241583L, 18126951L, 19491766L, 19819131L, 18640871L, 20771137L, 
    22540995L, 22409945L)), .Names = c("DATE", "VOLUME"), row.names = c(1L, 
    2L, 3L, 4L, 5L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 18L, 
    20L, 22L, 23L, 24L, 25L, 27L, 28L, 29L, 31L, 32L, 33L, 34L, 35L, 
    37L, 38L), class = "data.frame")

我可以像这样构建模型:

lin <- lm(VOLUME~DATE, data=www) 

我可以通过增加我的数据框 (www) 上的最新日期和时间来创建名为 years 的新数据,如下所示:

years <- seq(as.Date(c("2013-08-12")),as.Date(c("2014-08-12")), 1)
predictions <- predict(lin, newdata=data.frame(DATE=years), eval=0.95, interval="prediction")

由于我只从 08:12 开始查看工作日,如何构建我的 newdata 数据框有什么想法?

4

1 回答 1

1

这会按 08:00 到 12:00 之间的时间创建一系列日期,直到 2013 年 12 月 31 日。

date <- as.POSIXlt(seq.POSIXt(as.POSIXlt("2013-08-12 08:00"), as.POSIXlt("2013-12-31 12:00"), by = "hour"))
hour <- date$hour
newdata <- data.frame(date = date, hour = hour)
newdata <- newdata[newdata$hour >= 8 & newdata$hour <= 12, ]
于 2013-08-20T14:35:27.603 回答