我正在尝试绘制具有上限和下限的图形。由于我要结合两个预测模型,因此我不确定如何在矩阵中获取上下限值。
基本上,我想获得与使用正常绘图功能(即具有上限和下限范围的预测值)时得到的图表相同的图形。
这是我正在尝试的代码:
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行组成的矩阵,所有这些列均表示单个产品的数据。
我知道必须以不同的方式定义上下矩阵。有人可以帮助我如何正确编码吗?
答案 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))