residual1 <- function(path,i,j){
  df <- read_xlsx(path,sheet = i)
  a <- df %>% group_by(一级行业,业扩类型,`申请/接电`) %>% do(tail(.,n=j))
  b <- a %>% group_by(一级行业,业扩类型,`申请/接电`) %>%
    reframe(
      `申请/接电` = `申请/接电`[1],
      `业扩类型` = `业扩类型`[1],
      `年月` = format(`年月`[j], "%Y-%m"),
      `arima删减前` = abs(1 - sum(`arima拟合/预测容量`)/sum(`真实容量`)),
      `prophet删减前` = abs(1 - sum(`prophet删减前`)/sum(`真实容量`))
    )
}

b1_original <- map_dfr(c(1:12),~(residual1("D:\\电网\\0806预测误差\\ARIMA滚动预测拟合1个月(1).xlsx",.x,1)))

b1_processed <- map_dfr(c(1:12),~(residual1("D:\\电网\\0806预测误差\\ARIMA滚动预测拟合1个月(剔除异常点).xlsx",.x,1)))

colnames(b1_processed)[5:6] <- c("arima删减后","prophet删减后")

arima1 <- merge(b1_original,b1_processed,c("一级行业","业扩类型","申请/接电","年月"))

b3_original <- map_dfr(c(1:12),~(residual1("D:\\电网\\0806预测误差\\ARIMA滚动预测拟合3个月(1).xlsx",.x,3)))

b3_processed <- map_dfr(c(1:12),~(residual1("D:\\电网\\0806预测误差\\ARIMA滚动预测拟合3个月(剔除异常点).xlsx",.x,3)))

colnames(b3_processed)[5:6] <- c("arima删减后","prophet删减后")

arima3 <- merge(b3_original,b3_processed,by=c("一级行业","业扩类型","申请/接电","年月"))
echart <- function(x1, x2, data){
  p <- data %>% 
    group_by(`业扩类型`) %>% 
    e_charts(`年月`, timeline = TRUE) %>% 
    e_line(`lstm删减前`) %>% 
    e_line(`lstm删减后`) %>% 
    e_line(`arima删减前`) %>%
    e_line(`arima删减后`) %>%
    e_line(`prophet删减前`) %>%
    e_line(`prophet删减后`) %>%
    #e_line(sGARCH) %>%
    e_legend(right = 0, show = T) %>%  # 设置图例位置
    e_tooltip(trigger = "axis") %>%    # 设置鼠标悬浮提示
    e_title(paste(x1, x2))
  p
}

短期(不同月份的一个月预测效果)

详细版

d <- merge(lstm_1,arima1,by=c("一级行业","业扩类型","申请/接电","年月"))
ii <- 0
for(i in unique(d$一级行业)){
  for(j in unique(d$`申请/接电`)){
    x1 <- paste(j,"1 month")
    pic_temp <- paste0('pic.', ii)
    temp <- echart(i,x1,filter(d,`一级行业` == i&`申请/接电` == j))
    assign(pic_temp, temp)
    ii <- ii+1
  }
}
e_arrange(pic.0, pic.1, pic.2, pic.3, cols = 1, rows = 4)

均值版

不区分业扩类型及行业

 d %>% group_by(年月) %>% reframe(
  `年月` = `年月`[1],
  `arima删减前` = mean(`arima删减前`),
  `arima删减后` = mean(`arima删减后`),
  `lstm删减前` = mean(`lstm删减前`),
  `lstm删减后` = mean(`lstm删减后`),
  `prophet删减前` = mean(`prophet删减前`),
  `prophet删减后` = mean(`prophet删减后`)
  
) %>% 
    e_charts(`年月`) %>% 
    e_line(`lstm删减前`) %>% 
    e_line(`lstm删减后`) %>% 
    e_line(`arima删减前`) %>%
    e_line(`arima删减后`) %>%
    e_line(`prophet删减前`) %>%
    e_line(`prophet删减后`) %>%
    #e_line(sGARCH) %>%
    e_legend(right = 0, show = T) %>%  # 设置图例位置
    e_tooltip(trigger = "axis") %>%    # 设置鼠标悬浮提示
    e_title("一个月中各模型的预测均值")

中期(不同月份的最近三个月预测效果)

详细版

d <- merge(lstm_3,arima3,by=c("一级行业","业扩类型","申请/接电","年月"))
ii <- 0
for(i in unique(d$一级行业)){
  for(j in unique(d$`申请/接电`)){
    x1 <- paste(j,"3 month")
    pic_temp <- paste0('pic.', ii)
    temp <- echart(i,x1,filter(d,`一级行业` == i&`申请/接电` == j))
    assign(pic_temp, temp)
  }
}
e_arrange(pic.0, pic.1, pic.2, pic.3, cols = 1, rows = 4)

均值版

 d %>% group_by(年月) %>% reframe(
  `年月` = `年月`[1],
  `arima删减前` = mean(`arima删减前`),
  `arima删减后` = mean(`arima删减后`),
  `lstm删减前` = mean(`lstm删减前`),
  `lstm删减后` = mean(`lstm删减后`),
  `prophet删减前` = mean(`prophet删减前`),
  `prophet删减后` = mean(`prophet删减后`)
) %>% 
    e_charts(`年月`) %>% 
    e_line(`lstm删减前`) %>% 
    e_line(`lstm删减后`) %>% 
    e_line(`arima删减前`) %>%
    e_line(`arima删减后`) %>%
    e_line(`prophet删减前`) %>%
    e_line(`prophet删减后`) %>%
    #e_line(sGARCH) %>%
    e_legend(right = 0, show = T) %>%  # 设置图例位置
    e_tooltip(trigger = "axis") %>%    # 设置鼠标悬浮提示
    e_title("三个月中各模型的预测均值")