1

複数の時系列を交差検証し、すべての結果を 1 つのプロットにプロットしようとしています。単一の時系列ケースを使用して何が機能しているかを見てみましょう。

シングルTSケース

5 年間のシミュレートされた月次時系列の場合、次の方法を使用して予測パフォーマンスを相互検証できます。

library(prophet)
library(dplyr)
library(purrr)

## Dataset creation
ds <- seq(as.Date("2014-01-01"), as.Date("2018-12-31"), by = "month")
y <- sample(60)
df <- data.frame(ds, y)
head(df)

m <- prophet(df, seasonality.mode = 'multiplicative')
future <- make_future_dataframe(m, periods = 60)
fcst <- predict(m, future)

df.cv <- cross_validation(m, initial = 730, horizon = 365, period = 180, units = 'days')
plot_cross_validation_metric(df.cv, metric = 'mape')

最後の行では、次のようなプロットが得られます。

ここに画像の説明を入力

複数の時系列を持つ複雑なケース、

時系列が 4 つあるとします (数千など、それ以上の場合もあります)。mape 値を示す同様の折れ線グラフを取得しようとしています。

私がここでやっていることは、これです。

library(prophet)
library(dplyr)
library(purrr)

## Dataset creation
id1 <- rep(12, 60)
ds1 <- seq(as.Date("2014-01-01"), as.Date("2018-12-31"), by = "month")
value1 <- sample(60)

id2 <- rep(132, 48)
ds2 <- seq(as.Date("2015-01-01"), as.Date("2018-12-31"), by = "month")
value2 <- sample(48)

id3 <- rep(210, 72)
ds3 <- seq(as.Date("2013-01-01"), as.Date("2018-12-31"), by = "month")
value3 <- sample(72)

id <- c(id1, id2, id3)
ds <- c(ds1, ds2, ds3)
y <- c(value1, value2, value3)

df <- data.frame(id, ds, y)
head(df)

# preparations
l_df <- df %>% split(.$id)

m_list <- map(l_df, prophet) # prophet call
future_list <- map(m_list, make_future_dataframe, periods = 1) # makes future obs
forecast_list <- map2(m_list, future_list, predict)

df.cv <- cross_validation(m_list, initial = 720, period = 30, horizon = 365, units = 'days')

これは私にエラーを与えます、

> df.cv <- cross_validation(m_list, initial = 720, period = 30, horizon = 365, units = 'days')
Error in generate_cutoffs(df, horizon.dt, initial.dt, period.dt) : 
  Less data than horizon after initial window. Make horizon or initial shorter.
In addition: Warning messages:
1: In max(df$ds) : no non-missing arguments to max; returning -Inf
2: In min(df$ds) : no non-missing arguments to min; returning Inf
3: In max(df$ds) : no non-missing arguments to max; returning -Inf
4: In min(df$ds) : no non-missing arguments to min; returning Inf

入力のさまざまな組み合わせを試しましたが、何も機能しませんでした。したがって、すべてのモデルを相互検証し、そこから単一の図をプロットする方法を知りたいです。それを行う方法はありますか?

4

0 に答える 0