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

问题描述 投票:0回答:1

我试图用下限和上限绘制图形。由于我正在组合2个预测模型,我不确定如何在矩阵中获得下限和上限的值。

基本上,我想获得与使用正常绘图函数时得到的相同的图,即预测上下范围的值。

这是我正在尝试的代码:

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行的矩阵,所有这些列都表示单个产品的数据。

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

r forecasting
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.