如何解决如何使用预测包auto.arima循环编写一个用于预测100个不同序列的循环?
我的系列有3个不同的列,第一个ID标签标识第一个出口,然后是时间标签,最后是测量。
我需要为100个不同的系列(出口)创建预测。首先,我需要为第一个出口分配ID子集,然后预测Arima功能,最后为每个出口提前收集7天的预测。而且,我的模型还需要每小时,每周,每天的虚拟变量。所以我需要将xregs应用于auto.arima过程。
但是,我无法使用下面的循环创建代码,该循环将针对所有100个不同的ID运行。
{ valid: false }
您能告诉我一种通过应用或循环函数来完成这项工作的快速方法吗?
解决方法
如果您想使用forecast
包,则需要将数据转换为ts
(mts
)对象。为此,首先将数据从长格式转换为宽格式(从上面发布的图像中,我假设您的数据是长格式)。然后使用ts()
函数创建一个ts()
对象,请参见下面的示例。
让我们生成一些示例ts数据
sales.xts_m <- ts(data.frame(AA = arima.sim(list(order=c(1,0),ar=.5),n=100,mean = 12),AB = arima.sim(list(order=c(1,AC = arima.sim(list(order=c(1,mean = 11),BA = arima.sim(list(order=c(1,mean = 10),BB = arima.sim(list(order=c(1,mean = 14)),start = c(2000,1),frequency = 12)
nts <- ncol(sales.xts_m) # number of time series
h <- 12 # forecast horizon
示例xreg
dummies_hd_m <- forecast::seasonaldummy(sales.xts_m[,1])
dummies_hd_m_future <- forecast::seasonaldummy(sales.xts_m[,1],h = h)
mylist <- list()
fc <- matrix(nrow = h,ncol = nts)
如果您需要保留模型--------------------
模型将出现在我的列表中,每个ts的点预报都以fc表示
for (i in 1:nts) {
mylist[[i]] <- auto.arima(sales.xts_m[,i],xreg=dummies_hd_m,biasadj = TRUE,max.p=7,max.q=7,seasonal= FALSE,test=c("kpss"),lambda = "auto",num.cores=15,stationary = TRUE )
fc[,i] <- forecast(mylist[[i]],h=h,xreg = dummies_hd_m_future)$mean
}
#ts names
colnames(fc) <- colnames(sales.xts_m)
如果您不需要保留模型--------------------
fc <- matrix(nrow = h,ncol = nts)
for (i in 1:nts) {
fc[,i] <- forecast(auto.arima(sales.xts_m[,seasonal=FALSE,stationary = TRUE ),xreg = dummies_hd_m_future)$mean
}
#ts names
colnames(fc) <- colnames(sales.xts_m)
如果要在项目中使用ML模型
devtools::install_github("Akai01/caretForecast")
library(caretForecast)
nts <- ncol(sales.xts_m) # mumber of time series
h <- 12 # forecast horizon
fc <- matrix(nrow = h,ncol = nts)
示例:支持带有线性内核的矢量机。您只需要更改caret_method参数即可使用其他模型,例如caret_method =“ ridge”或caret_method =“ rf”等。Ref:https://github.com/Akai01/caretForecast
for (i in 1:nts) {
fc[,i] <- forecast(ARml(sales.xts_m[,maxlag = 12,xreg = dummies_hd_m,caret_method = "svmLinear",seasonal = FALSE ),xreg = dummies_hd_m_future)$mean
}
colnames(fc) <- colnames(sales.xts_m)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。