Иллюстация работы функции plotFanChart()

Load data

ts<- read.csv("~/GitHub/forvision_data/example1_TSTS.csv")
fs <- read.csv("~/GitHub/forvision_data/example1_FTS.csv")
head(ts)
##   series_id   value timestamp
## 1        Y1 3103.96      1984
## 2        Y1 3360.27      1985
## 3        Y1 3807.63      1986
## 4        Y1 4387.88      1987
## 5        Y1 4936.99      1988
## 6        Y1 5379.75      1989
head(fs)
##   series_id method timestamp origin_timestamp forecast horizon     lo90
## 1        Y1      A      1989             1988  5406.43       1 5183.349
## 2        Y1      A      1990             1988  5875.96       2 5652.879
## 3        Y1      A      1991             1988  6345.48       3 6122.399
## 4        Y1      B      1989             1988  5473.87       1 5250.789
## 5        Y1      B      1990             1988  6010.43       2 5787.349
## 6        Y1      B      1991             1988  6546.63       3 6323.549
##       hi90
## 1 5629.511
## 2 6099.041
## 3 6568.561
## 4 5696.951
## 5 6233.511
## 6 6769.711

1. Если нет колонки timestamp_dbo’

plotFanChart(ts, fs, id = "Y1", m = "A", origin = 1988)

Error in plotFanChart(ts, fs, id = “Y1”, m = “A”, origin = 1988) : Check the column names of input data frame ts. The input data ts needed in the form of a data frame containing columns named ‘series_id’, value, and ‘timestamp_dbo’.

2. Наличие колонки timestamp_dbo

  • timestamp_dbo не в формате time object:
ts$timestamp_dbo  <- ts$timestamp
fs$timestamp_dbo <- fs$timestamp
plotFanChart(ts, fs, id = "Y1", m = "A", origin = 1988)

requires an appropriate time-based object

  • преобразование её в time object
library(zoo)
ts$timestamp_dbo <- as.yearmon(ts$timestamp)
fs$timestamp_dbo <- as.yearmon(fs$timestamp)
plotFanChart(ts, fs, id = "Y1", m = "A", origin = 1988)

3 Если много PIs (любые)

3.1 Cоздание FTS c многим PIs

library(magrittr)
library(dplyr)
fs %<>% mutate(lo98 = lo90 + 50, hi98 = hi90 + 50, lo50 = lo90-80, hi50 = hi90-80, lo60 = lo90+120, hi60 = hi90 + 120)
head(fs)
##   series_id method timestamp origin_timestamp forecast horizon     lo90
## 1        Y1      A      1989             1988  5406.43       1 5183.349
## 2        Y1      A      1990             1988  5875.96       2 5652.879
## 3        Y1      A      1991             1988  6345.48       3 6122.399
## 4        Y1      B      1989             1988  5473.87       1 5250.789
## 5        Y1      B      1990             1988  6010.43       2 5787.349
## 6        Y1      B      1991             1988  6546.63       3 6323.549
##       hi90 timestamp_dbo     lo98     hi98     lo50     hi50     lo60
## 1 5629.511      Jan 1989 5233.349 5679.511 5103.349 5549.511 5303.349
## 2 6099.041      Jan 1990 5702.879 6149.041 5572.879 6019.041 5772.879
## 3 6568.561      Jan 1991 6172.399 6618.561 6042.399 6488.561 6242.399
## 4 5696.951      Jan 1989 5300.789 5746.951 5170.789 5616.951 5370.789
## 5 6233.511      Jan 1990 5837.349 6283.511 5707.349 6153.511 5907.349
## 6 6769.711      Jan 1991 6373.549 6819.711 6243.549 6689.711 6443.549
##       hi60
## 1 5749.511
## 2 6219.041
## 3 6688.561
## 4 5816.951
## 5 6353.511
## 6 6889.711

3.2 FanChart для выбранных PIs:

  • For PIs = 90, 98
fs1 <- fs[, 1:11]
head(fs1)
##   series_id method timestamp origin_timestamp forecast horizon     lo90
## 1        Y1      A      1989             1988  5406.43       1 5183.349
## 2        Y1      A      1990             1988  5875.96       2 5652.879
## 3        Y1      A      1991             1988  6345.48       3 6122.399
## 4        Y1      B      1989             1988  5473.87       1 5250.789
## 5        Y1      B      1990             1988  6010.43       2 5787.349
## 6        Y1      B      1991             1988  6546.63       3 6323.549
##       hi90 timestamp_dbo     lo98     hi98
## 1 5629.511      Jan 1989 5233.349 5679.511
## 2 6099.041      Jan 1990 5702.879 6149.041
## 3 6568.561      Jan 1991 6172.399 6618.561
## 4 5696.951      Jan 1989 5300.789 5746.951
## 5 6233.511      Jan 1990 5837.349 6283.511
## 6 6769.711      Jan 1991 6373.549 6819.711
plotFanChart(ts, fs1, id = "Y1", m = "A", origin = 1988)
  • For PIs = 90, 98, 50
fs2 <- fs[, 1:13]
head(fs2)
##   series_id method timestamp origin_timestamp forecast horizon     lo90
## 1        Y1      A      1989             1988  5406.43       1 5183.349
## 2        Y1      A      1990             1988  5875.96       2 5652.879
## 3        Y1      A      1991             1988  6345.48       3 6122.399
## 4        Y1      B      1989             1988  5473.87       1 5250.789
## 5        Y1      B      1990             1988  6010.43       2 5787.349
## 6        Y1      B      1991             1988  6546.63       3 6323.549
##       hi90 timestamp_dbo     lo98     hi98     lo50     hi50
## 1 5629.511      Jan 1989 5233.349 5679.511 5103.349 5549.511
## 2 6099.041      Jan 1990 5702.879 6149.041 5572.879 6019.041
## 3 6568.561      Jan 1991 6172.399 6618.561 6042.399 6488.561
## 4 5696.951      Jan 1989 5300.789 5746.951 5170.789 5616.951
## 5 6233.511      Jan 1990 5837.349 6283.511 5707.349 6153.511
## 6 6769.711      Jan 1991 6373.549 6819.711 6243.549 6689.711
plotFanChart(ts, fs2, id = "Y1", m = "A", origin = 1988)
  • и так далее, то есть мы можем выбрать любые PIs