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("三个月中各模型的预测均值")