将this thread中的内容稍微进一步说明:我尽可能地走了,但最后碰壁了。我正在寻找使用PLYR创建一些ARIMA模型与规模的外生回归。我已经使用的方法的高级概览(带有示例数据代码如下)plyr +预测多个回归因子
1)I具有与企业,区域,收入和订单数据帧,所有由日期
2)对于每一个业务+区域的组合,我想根据以前的收入值+订单的先前值创建收入预测。
3)我想使用ARIMA模型(使用auto.arima()),以找出最佳的订单,收入和订单,然后将该信息发送到预测功能
4)我遇到的问题似乎归结为无法将多个列表传递给PLYR参数进行操作,这最有可能归结为我不知道完全了解llply如何工作(所以希望这是一件容易的事)
这里是我工作过的一些样本数据:
library(plyr)
library(xts)
library(forecast)
data <- data.frame(
biz = sample(c("telco","shipping","tech"), 100, replace = TRUE),
region = sample(c("mideast","americas","asia"), 100, replace = TRUE),
date = rep(seq(as.Date("2010-02-01"), length=10, by = "1 day"),10),
revenue = sample(1:100),
orders = sample(1:100)
)
编辑:一是通过ddply重新组织数据,以摆脱重复条目:
dataframe <- ddply(data, c("biz","region","date"), function(df) {
c(revenue = sum(df[,4]),
orders = sum(df[,5]))
})
第1步:创建包含业务+区域的每个组合的时间序列信息的列表:
list1 <- dlply(dataframe, .(biz,region), identity)
第2步:打开该列表为XTS对象,所以我们可以使用它的时间序列分析:
xtsobject <- llply(list1, function(list) {
xts(x=list[,c("revenue","orders")], order.by=list[,"date"])
})
这里就是我遇到了麻烦。我想从auto.arima()函数中创建一个订单列表,将其传递给forecast.Arima()函数。这将是简单的,如果我只是在做一个变量,无外源回归量:
arimamodel1 <- llply(xtsobject, function(list) {
fity <- auto.arima(list$revenue)
})
然后我将适用该名单的forecast.Arima()函数:
forecast1 <- llply(arimamodel1, function(model) {
forecast.Arima(model, h=2)
})
散发出来罚款。我试图改变参数,包括一些空间给额外的回归量,但我不知道该预测是在x值居然拉:
arimamodel2 <- llply(xtstest, function(list) {
fity <- auto.arima(list$revenue, xreg=list$orders)
fitx <- auto.arima(list$orders)
})
和预测:
forecast2 <- llply(arimamodel2, function(model) {
forecast.Arima(model, h=2)
})
......但在预测功能中,我应该按照我通常使用的预测方式来解决x回归模型。Arima()与多个回归者;例如:
forecast.Arima(model,h=2, xreg=forecast(model,h=2)$mean)
但这不起作用。有没有人对如何使用PLYR基于auto.arima()为多个回归器进行预测有深入的了解?