Преимущества новых функций plotFanChart() и plotFixedOrigin():

  • Колонку timestamp не надо преобразовать. Эти функции сейчас работают для любой timestamp в формате: date, time, numeric, потом сделаю и для character. Это очень удобно работать с данными вида M3 other data (timestamp просто числа: 1,2,3,4,…)

  • Добавление опции use.plotly позволяет выводить plotly график с инерактивом

1. Новые M3 данные

Я переделал M3 данные. Сейчас колонка timestamp в всех фреймах в формате Date по iso 8601:

  • Для yearly data: 1975-01-01, 1976-01-01, 1977-01-01,…

  • Для quarterly data: 1984-01-01, 1984-04-01, 1984-07-01,…

  • Для monthly data: 1984-01-01, 1984-02-01, 1984-03-01,…

все эти: Jan-1991, 1984 Q1,… в формате yearmon, yearqrt то есть они уже были обработаны с каким пакетами,… с таким данным не будем использовать.

2. plotFixedOrigin:

2.1 load data:

library(tidyverse)
ts <- read_csv("~/GitHub/forvision_data/M3_yearly_TSTS.csv")
fs <- read_csv("~/GitHub/forvision_data/M3_yearly_FTS.csv")
head(ts)
## # A tibble: 6 x 4
##   series_id category value timestamp 
##   <chr>     <chr>    <dbl> <date>    
## 1 Y1        MICRO     941. 1975-01-01
## 2 Y1        MICRO    1085. 1976-01-01
## 3 Y1        MICRO    1245. 1977-01-01
## 4 Y1        MICRO    1445. 1978-01-01
## 5 Y1        MICRO    1683. 1979-01-01
## 6 Y1        MICRO    2038. 1980-01-01
head(fs)
## # A tibble: 6 x 7
##   series_id category method forecast horizon timestamp  origin_timestamp
##   <chr>     <chr>    <chr>     <dbl>   <int> <date>     <date>          
## 1 Y1        MICRO    NAIVE2    4937.       1 1989-01-01 1988-01-01      
## 2 Y1        MICRO    NAIVE2    4937.       2 1990-01-01 1988-01-01      
## 3 Y1        MICRO    NAIVE2    4937.       3 1991-01-01 1988-01-01      
## 4 Y1        MICRO    NAIVE2    4937.       4 1992-01-01 1988-01-01      
## 5 Y1        MICRO    NAIVE2    4937.       5 1993-01-01 1988-01-01      
## 6 Y1        MICRO    NAIVE2    4937.       6 1994-01-01 1988-01-01

2.2 plot

  • Указываем только аргуметы ts и id то функция строит график для выбранного ряда:
library(forvision)
plotFixedOrigin(ts = ts, id = "Y1")

  • Указываем аргумент use.plotly то функция строит plotly график с инерактивом:
plotFixedOrigin(ts = ts, id = "Y1", use.plotly = T)
  • Указываем ещё аргуметы fs, origin, method то функция строит график для выбранного ряда c forecasts выбранных методов:
plotFixedOrigin(ts = ts, fs = fs, id = "Y1", origin = "1988-01-01", m = "HOLT")

  • более 1 method:
plotFixedOrigin(ts = ts, fs = fs, id = "Y1", origin = "1988-01-01", m = c("HOLT", "DAMPEN", "WINTER" , "COMB S-H-D"))

  • Если колонка timestamp не в Date(time) по iso 8601, а просто числа как в M3-other data:

(ешё не подготовил M3-other data поэтому пробавать использовать yearly data)

# subset
ts1 <- subset(ts, series_id == "Y1")
fs1 <- subset(fs, series_id == "Y1")
# создать timestamp в виде чисел
ts1$timestamp <- 1:length(ts1$timestamp)
fs1$timestamp <- rep(15:20, 22)
fs1$origin_timestamp <- 14
head(ts1)
## # A tibble: 6 x 4
##   series_id category value timestamp
##   <chr>     <chr>    <dbl>     <int>
## 1 Y1        MICRO     941.         1
## 2 Y1        MICRO    1085.         2
## 3 Y1        MICRO    1245.         3
## 4 Y1        MICRO    1445.         4
## 5 Y1        MICRO    1683.         5
## 6 Y1        MICRO    2038.         6
head(fs1)
## # A tibble: 6 x 7
##   series_id category method forecast horizon timestamp origin_timestamp
##   <chr>     <chr>    <chr>     <dbl>   <int>     <int>            <dbl>
## 1 Y1        MICRO    NAIVE2    4937.       1        15               14
## 2 Y1        MICRO    NAIVE2    4937.       2        16               14
## 3 Y1        MICRO    NAIVE2    4937.       3        17               14
## 4 Y1        MICRO    NAIVE2    4937.       4        18               14
## 5 Y1        MICRO    NAIVE2    4937.       5        19               14
## 6 Y1        MICRO    NAIVE2    4937.       6        20               14
  • plot:
library(forvision)
plotFixedOrigin(ts = ts1, id = "Y1")

  • plotly == TRUE:
plotFixedOrigin(ts = ts1, id = "Y1", use.plotly = T)
  • origin = “14” или origin = 14 не отличаются:
plotFixedOrigin(ts = ts1, id = "Y1", fs = fs1, origin = "14", m = c("HOLT", "DAMPEN", "WINTER" , "COMB S-H-D"))

plotFixedOrigin(ts = ts1, id = "Y1", fs = fs1, origin = 14, m = c("HOLT", "DAMPEN", "WINTER" , "COMB S-H-D"))

3. plotFanchart:

  • load data:
ts <- read.csv("https://raw.githubusercontent.com/forvis/forvision_data/master/example1_TSTS.csv")
fs <- read.csv("https://raw.githubusercontent.com/forvis/forvision_data/master/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