首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >预测几种时间序列模型

预测几种时间序列模型
EN

Stack Overflow用户
提问于 2014-12-16 10:23:29
回答 1查看 957关注 0票数 3

我想用dplyr预测几个模型。模型是根据时间序列数据拟合的,所以每小时都是自己的模型。小时=1是模型,小时= 18是模型。

示例:

代码语言:javascript
复制
# Historical data - Basis for the models: 
df.h <- data.frame( 
  hour     = factor(rep(1:24, each = 100)),
  price    = runif(2400, min = -10, max = 125),
  wind     = runif(2400, min = 0, max = 2500),
  temp     = runif(2400, min = - 10, max = 25)  
)

# Forecasted data for wind and temp: 
df.f <- data.frame(
  hour     = factor(rep(1:24, each = 10)),
  wind     = runif(240, min = 0, max = 2500),
  temp     = runif(240, min = - 10, max = 25)  
)

我能适应每一种型号,一小时一小时地这样:

代码语言:javascript
复制
df.h.1 <- filter(df.h, hour == 1)

fit = Arima(df.h.1$price, xreg = df.h.1[, 3:4], order = c(1,1,0))

df.f.1 <- filter(df.f, hour == 1)
forecast.Arima(fit, xreg = df.f.1[ ,2:3])$mean

但做这样的事会很棒:

代码语言:javascript
复制
fits <- group_by(df.h, hour) %>% 
  do(fit = Arima(df.h$price, order= c(1, 1, 0), xreg = df.h[, 3:4]))

df.f %>% group_by(hour)%>% do(forecast.Arima(fits, xreg = .[, 2:3])$mean)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-16 11:29:09

如果要将其打包到一个调用中,可以将数据绑定到单个data.frame中,然后在do调用中再次将其拆分。

代码语言:javascript
复制
df <- rbind(df.h, data.frame(df.f, price=NA))
res <- group_by(df, hour) %>% do({
  hist <- .[!is.na(.$price), ]
  fore <- .[is.na(.$price), c('hour', 'wind', 'temp')]
  fit <- Arima(hist$price, xreg = hist[,3:4], order = c(1,1,0))
  data.frame(fore[], price=forecast.Arima(fit, xreg = fore[ ,2:3])$mean)
})
res
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27502350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档