从预测函数中提取上限和下限

时间:2019-04-03 09:43:24

标签: r forecasting

我正在尝试绘制具有上限和下限的图形。由于我要结合两个预测模型,因此我不确定如何在矩阵中获取上下限值。

基本上,我想获得与使用正常绘图功能(即具有上限和下限范围的预测值)时得到的图表相同的图形。

这是我正在尝试的代码:

df <- Base_df[1:39, ] 
Test_df <- Base_df[40:45,]

fcast <- matrix(NA,nrow=6,ncol=ncol(df))
upper <- matrix(NA,nrow=6,ncol=ncol(df))
lower <- matrix(NA,nrow=6,ncol=ncol(df))

for(i in 1:ncol(df)){
  fcets <- forecast(ets(df[,i],ic='aicc', seasonal.periods=6, level =95))
  fcar <- forecast(arima(df[,i]),h=12/2, level =95)
    #combining the values from both the forecasts 
    fcast[,i] <- (0.5*fcets$mean + 0.5*fcar$mean)
    #To get the values of upper limit
    upper[,i] <- 0.5*fcets$upper+0.5*fcar$upper
    #To get the values of lower limit
    lower[,i]<- 0.5*fcets$lower+0.5*fcar$lower
    } 

for(i in 1:10){
  plot(df[,i], type="l", col ="blue", main = colnames(Test_df)[i])
  lines(fcast[,i], col='red')
  lines(upper[,i])
  lines(lower[,i])
}

错误:

Error in upper[, i] <- 0.5 * fc1$upper[, 1] + 0.5 * fc2$upper[, 1] : 
 number of items to replace is not a multiple of replacement length 

请注意,df是由10个库仑和39行组成的矩阵,所有这些列均表示单个产品的数据。

我知道必须以不同的方式定义上下矩阵。有人可以帮助我如何正确编码吗?

1 个答案:

答案 0 :(得分:0)

为什么不使用内置功能(fable

library(fable)
library(tsibble)
library(tsibbledata)
library(lubridate)
aus_retail %>%
  filter(
    State %in% c("New South Wales", "Victoria"),
    Industry == "Department stores"
  ) %>% 
  fable::model(
    ets = ETS(box_cox(Turnover, 0.3))
  ) %>%
  fable::forecast(level = 95) %>% 
  autoplot(filter(aus_retail, year(Month) > 2010))

enter image description here