我正在尝试使用auto.arima和数据框中单位的输出来预测多个时间序列。
我有这个样本数据集:
Name <- c(rep("Tom",24),
rep("Jake",12),
rep("Jill",12))
Product <- c(rep("Orange",12),rep("Apples",12),
rep("Orange",12),rep("Apples",12))
Quarter <- c(rep(c("2013-03-31","2013-06-30","2013-09-30","2013-12-31",
"2014-03-31","2014-06-30","2014-09-30","2014-12-31",
"2015-03-31","2015-06-30","2015-09-30","2015-12-31"),4))
Units <- c(1200,1500,1800,2600,1300,1500,1700,2600,1300,1700,1900,2700,300,400,800,900,
250,400,600,700,200,300,0,0,100,250,500,600,90,200,400,450,50,0,0,0,1200,0,0,0,
1500,1700,1800,2600,1600,1900,2000,3000)
data <- cbind(Name,Product,Quarter,Units)
data <- as.data.frame(data)
data$Name_Product <- paste(data$Name,data$Product)
data <- select(data,Quarter,Units,Name_Product)
data <- spread(data,Name_Product,Units)
data2 <- ts(data[,-1], frequency=4, start=2013)
我正在尝试使用以下脚本按名称和产品预测上面的批处理数据:
h <- 12
ns <- ncol(data)
arimaforecast <- matrix(NA, nrow=h, ncol=ns)
for (i in 1:ns){
arimaforecast[,i] <- forecast(auto.arima(data2[,i]), h=h,)$mean}
我的问题是我一直收到错误&#34;错误&#39; [。默认&#39;(data2 ,, i):下标超出范围&#34;并且我无法创建类似于使用Rob Hyndman的批量预测方法中的forecast()函数但使用auto.arima函数的预测
我不知道从哪里开始或者我使用的是正确的方法。感谢任何帮助,谢谢!
答案 0 :(得分:1)
更改代码的这一行:
ns <- ncol(data)
为:
ns <- ncol(data2)
您的循环在原始data.frame
中的5列中循环,而不是从新时间序列矩阵中的4列循环。