Этот репозиторий предназначен для прогнозирования энергопотребления в Германии.
Основано и вдохновлено:
Источник данных: СМАРД
Поместите все загруженные файлы в:
/example/dataset # there is already used dataset included if you pull, but you could update
Проверьте файл прогноза.Rmd, чтобы узнать, как можно запустить этот код в обновленной версии SMARD-Data.
Используемые библиотеки:
# Probably needed
# Load Packages
# library(fhswf)
# library(tsibbledata)
# library(broom)
# library(readr)
# library(datasets)
# library(timeDate)
# library(qlcal)
# library(corrplot)
# library(mgcv)
# library(MEFM)
# library(TTR)
packages <- c(
"devtools",
"ggplot2",
"dplyr",
"tsibble",
"fable",
"fabletools",
"feasts",
"distributional",
"lubridate",
"tidyr",
"forecast",
"zoo",
"scales",
"fable.prophet"
)
install.packages(packages)
library(devtools)
library(ggplot2)
library(dplyr)
library(tsibble)
library(fable)
library(fabletools)
library(feasts)
library(distributional)
library(lubridate)
library(tidyr)
library(forecast)
library(zoo)
library(scales)
library(fable.prophet)
Попробуйте для начала поработать в папке example/.
# Define datapaths
power_consum_path <- "dataset\stunde_2015_2024\Realisierter_Stromverbrauch_201501010000_202407090000_Stunde.csv"
power_consum_smard_prediction_path <- "dataset\propgnose_vom_smard\Prognostizierter_Stromverbrauch_202401010000_202407090000_Stunde.csv"
# Load Smard Prediction
power_consum_smard_prediction_loaded <- load_power_consum(path=power_consum_smard_prediction_path)
raw_smard_pred <- power_consum_smard_prediction_loaded$raw_data
cleaned_smard_pred <- power_consum_smard_prediction_loaded$cleaned_data
cleaned_smard_pred <- cleaned_smard_pred |>
mutate(.model = "SMARD")
names(cleaned_smard_pred)[names(cleaned_smard_pred) == "PowerConsum"] <- ".mean"
# Load PowerConsum Data
power_consum_loaded <- load_power_consum(path=power_consum_path)
raw_power_consum <- power_consum_loaded$raw_data
cleaned_power_consum <- power_consum_loaded$cleaned_data
# Generate more features
cleaned_power_consum$localName[is.na(cleaned_power_consum$localName)] = "Working-Day"
cleaned_power_consum$MeanLastWeek <- rollapply(cleaned_power_consum$PowerConsum, width = 24*8, FUN = function(x) mean(x[1:(24*8-25)]), align = "right", fill = NA)
cleaned_power_consum$MeanLastTwoDays <- rollapply(cleaned_power_consum$PowerConsum, width = 24*3, FUN = function(x) mean(x[1:(24*3-25)]), align = "right", fill = NA)
cleaned_power_consum$MaxLastOneDay <- rollapply(cleaned_power_consum$PowerConsum, width = 24*2, FUN = function(x) max(x[1:(24*2-25)]), align = "right", fill = NA)
cleaned_power_consum$MinLastOneDay <- rollapply(cleaned_power_consum$PowerConsum, width = 24*2, FUN = function(x) min(x[1:(24*2-25)]), align = "right", fill = NA)
Следующие функции были созданы на основе набора данных и API Holiday:
Индекс | Имя столбца | Описание |
---|---|---|
1 | ДатаОт | Для проверки DateIndex (аналогично, но необработано) |
2 | Потребляемая мощность | Потребляемая мощность в МВт |
3 | Датаиндекс | Временная метка (гггг-мм-дд чч:мм:сс) |
4 | Будний день | Пн, Ди, Ми, До, Пт, Сб, Итак (дни недели на немецком языке) |
5 | Дата | Дата (гггг-мм-дд) |
6 | Год | Год гггг |
7 | Неделя | Номер недели 0–53 |
8 | Час | Номер часа 0-24 |
9 | Месяц | Номер месяца 1–12 |
10 | локальное имя | Название праздника для отметки времени |
11 | Рабочий день | 1/0 Если рабочий день (Werktag), то 1 |
12 | Мо | 1/0 Если понедельник, то 1 |
13 | Ди | 1/0 Если вторник, то 1 |
14 | Ми | 1/0 Если среда, то 1 |
15 | Делать | 1/0 Если четверг, то 1 |
16 | Пт | 1/0 Если пятница, то 1 |
17 | суббота | 1/0 Если суббота, то 1 |
18 | Так | 1/0 Если воскресенье, то 1 (не требуется, если используются понедельник-суббота) |
19 | Праздничный день | 1/0 Если праздник, то 1 |
20 | Рабочий ДеньПраздникВыходные | Если это праздник, выходной или рабочий день (для участков — чар.) |
21 | ПраздникИРаботаДень | 1/0 Если праздник приходится на рабочий день, то 1 |
22 | LastDayWasNotWorkDay | 1/0 Если последний день не был рабочим, то 1 |
23 | LastDayWasNotWorkDayAndNowWorkDay | 1/0 Если прошлый день не был рабочим, а сейчас рабочий, то 1 |
24 | СледующийДеньIsNotWorkDayAndNowWorkDay | 1/0 Если следующий день не рабочий, а теперь рабочий, то 1 |
25 | LastDayWasHolidayAndNotWeekend | 1/0 Если последний день был праздником, а не выходным, то 1 |
26 | СледующийДеньПраздничныйИНеВыходные | 1/0 Если следующий день праздничный, а не выходной, то 1 |
27 | Название праздника | похоже на localName (Название праздника) |
28 | КонецГода | 1/0 Если это конец года (52 или 53 неделя) |
29 | ПерваяНеделяГода | 1/0 Если это начало года (1-я неделя) |
30 | ПраздникРасширенный | 1/0 отложенного отпуска (через 6 часов до следующего дня) |
31 | ПраздникСглаженный | HolidayExtend + sin(2*pi(Час)+1)/24) |
32 | Среднее значение на прошлой неделе | Среднее энергопотребление за последнюю неделю (смена: 24*8-25) |
33 | Среднее значениеLastTwoDays | Среднее энергопотребление за последние два дня (сдвиг: 24*3-25) |
34 | MaxLastOneDay | Максимальное энергопотребление за последний день (смена: 24*2-25) |
35 | MinLastOneDay | Минимальное энергопотребление за последний день (смена: 24*2-25) |
В этом исследовании представлен набор данных о потреблении электроэнергии в Германии от SMARD за 2015–2024 годы.
На рис. 1 показан необработанный набор данных с отсутствующими значениями (красный), повторяющимися временными метками (темно-красный) и потреблением энергии с течением времени (серый), почасовое разрешение. Имея одно пропущенное значение и один дубликат каждый год, было легко очистить набор данных. В целом почти чистый комплект. После очистки набора данных есть правдоподобные наблюдения по энергопотреблению:
Существует простой способ заполнить пробелы, взяв последнее наблюдение (возможно, поскольку разрешение достаточно велико и пропущенных значений всего несколько). Первое значение сохранялось для дубликатов.
Рис. 1. Потребление электроэнергии.
local_name_colors <- c(
"Christi Himmelfahrt" = palette()[2],
"Erster Weihnachtstag" = palette()[2],
"Karfreitag" = palette()[2],
"Neujahr" = palette()[2],
"Ostermontag" = palette()[2],
"Pfingstmontag" = palette()[2],
"Reformationstag" = palette()[2],
"Tag der Arbeit" = palette()[2],
"Tag der Deutschen Einheit" = palette()[2],
"Zweiter Weihnachtstag" = palette()[2],
"Regulärer Tag" = palette()[1]
)
week_colors <- c(
"Mo" = palette()[1],
"Di" = palette()[1],
"Mi" = palette()[1],
"Do" = palette()[1],
"Fr" = palette()[1],
"Sa" = palette()[2],
"So" = palette()[2]
)
working_colors <- c("1" = "#2E9FDF", "0" = "#FC4E07")
whw_colors <- c(
"FeiertagnKein Wochenende" = "black",
"Kein FeiertagnKein Wochenende" = "red",
"Kein FeiertagnWochenende" = "orange",
"FeiertagnWochenende" = "blue"
)
p <- cleaned_power_consum |>
gg_tsdisplay(PowerConsum, plot_type = "partial", lag = 100)
ggsave(
"plots/power_consum_acf_pacf.png",
plot = p,
width = 5.5,
height = 3.7,
dpi = 600
)
plot_calculated_features(
cleaned_power_consum = cleaned_power_consum,
file_name = "plots/MinLastOneDay.png",
x = "MinLastOneDay",
y = "PowerConsum",
x_label = "Minimaler Stromverbrauch vom letzten Tag [MW]",
y_label = "Stromverbrauch [MW]"
)
plot_calculated_features(
cleaned_power_consum = cleaned_power_consum,
file_name = "plots/MaxLastOneDay.png",
x = "MaxLastOneDay",
y = "PowerConsum",
x_label = "Maximaler Stromverbrauch vom letzten Tag [MW]",
y_label = "Stromverbrauch [MW]"
)
plot_calculated_features(
cleaned_power_consum = cleaned_power_consum,
file_name = "plots/MeanLastWeek.png",
x = "MeanLastWeek",
y = "PowerConsum",
x_label = "Durchschnittlicher Stromverbrauch der letzten 7 Tage [MW]",
y_label = "Stromverbrauch [MW]"
)
plot_calculated_features(
cleaned_power_consum = cleaned_power_consum,
file_name = "plots/MeanLastTwoDays.png",
x = "MeanLastTwoDays",
y = "PowerConsum",
x_label = "Durchschnittlicher Stromverbrauch der letzten 2 Tage [MW]",
y_label = "Stromverbrauch [MW]"
)
plot_histogram_by_group(
cleaned_power_consum,
group_name = "WorkdayHolidayWeekend",
file_name = "plots\workday_holiday_weekend_histogram.png",
colors = whw_colors,
x="PowerConsum",
x_label = "Stromverbrauch [MW]",
y_label = "Häufigkeit",
name_0 = "Wochenende oder Feiertage",
name_1 = "Werktag"
)
plot_histogram_by_group(
cleaned_power_consum,
group_name = "WorkDay",
file_name = "plots\workday_histogram.png",
colors = working_colors,
x="PowerConsum",
x_label = "Stromverbrauch [MW]",
y_label = "Häufigkeit",
name_0 = "Wochenende oder Feiertage",
name_1 = "Werktag"
)
plot_histogram_by_group(
cleaned_power_consum,
group_name = "Holiday",
file_name = "plots\holiday_histogram.png",
colors = working_colors,
x="PowerConsum",
x_label = "Stromverbrauch [MW]",
y_label = "Häufigkeit",
name_0 = "Werktag oder Wochenende",
name_1 = "Feiertag"
)
plot_histogram_by_group(
cleaned_power_consum,
group_name = "HolidayAndWorkDay",
file_name = "plots\holiday_workday_histogram.png",
colors = working_colors,
x="PowerConsum",
x_label = "Stromverbrauch [MW]",
y_label = "Häufigkeit",
name_0 = "Wochenende oder Werktag",
name_1 = "Feiertag am Werktag"
)
plot_by_group(
cleaned_power_consum,
group_name = "HolidayName",
file_name = "plots\holiday_boxplot.png",
colors = local_name_colors,
title = "Übersicht der einzelnen Feiertage",
y="PowerConsum",
y_label="Stromverbrauch [MW]",
x_label="Jahre"
)
plot_by_group(
cleaned_power_consum,
group_name = "Weekday",
file_name = "plots\weekday_boxplot.png",
colors = week_colors,
title = "Übersicht der einzelnen Wochentage",
y = "PowerConsum",
y_label="Stromverbrauch [MW]",
x_label="Jahre"
)
plot_by_group(
cleaned_power_consum,
group_name = "WorkDay",
file_name = "plots\workday_boxplot.png",
colors = working_colors,
title = "Übersicht, ob Feiertag (FALSE) oder Werktag (TRUE)",
y = "PowerConsum",
y_label="Stromverbrauch [MW]",
x_label="Jahre"
)
plot_by_column(
df = cleaned_power_consum,
x = "Hour",
y = "PowerConsum",
x_label = "Stunden",
y_label = "Stromverbrauch [MW]",
file_name = "plots\hour_boxplot.png",
title = "Übersicht der einzelnen Stunden"
)
plot_by_column(
df = cleaned_power_consum,
x = "Month",
y = "PowerConsum",
x_label = "Monate",
y_label = "Stromverbrauch [MW]",
file_name = "plots\month_boxplot.png",
title = "Übersicht der einzelnen Monate"
)
plot_by_column(
df = cleaned_power_consum,
x = "Week",
y = "PowerConsum",
x_label = "Woche",
y_label = "Stromverbrauch [MW]",
file_name = "plots\week_boxplot.png",
title = "Übersicht der einzelnen Wochen"
)
plot_by_column(
df = cleaned_power_consum,
x = "Year",
y = "PowerConsum",
x_label = "Jahr",
y_label = "Stromverbrauch [MW]",
file_name = "plots\year_boxplot.png",
title = "Übersicht der einzelnen Jahre"
)
plot_year_month_week_day(
df=cleaned_power_consum,
date_column="DateIndex",
y="PowerConsum",
from_year=2015,
to_year=2024,
from_week=0,
to_week=53,
year_for_week=2018,
from_day=1,
to_day=30,
month_for_day=4,
year_for_day=2018,
from_month=1,
to_month=12,
year_for_month=2018,
holiday="Holiday",
day_of_week = "Weekday"
)
В следующих разделах данные будут представлены все более подробно. Мы начнем здесь с ежегодного представления.
На рисунке 2 показано годовое представление за 2015–2024 годы. Здесь мы можем заметить, что в начале года наблюдается увеличение энергопотребления, а в конце года - снижение (Рождество, Новый год). В целом выглядит как улыбка или бантик.
Рисунок 2. Потребление электроэнергии, каждый год, как отдельный аспект
Попробуем объединить все годы и разбить их на недели. Диаграммы на рисунке 3 объединяют все годы. Мы можем рассмотреть закономерность более подробно. Начало и конец года обозначены красным цветом и показывают уменьшение по сравнению с обычной «формой улыбки». Рисунок 3. Сводные данные о потреблении электроэнергии за неделю.
Давайте более подробно рассмотрим на примере 2018 года. На рисунке 4 показано ежемесячное представление 2018 года. Здесь мы можем более подробно рассмотреть конец года. Около 24 декабря наблюдается снижение энергопотребления. Также следует отметить выходные и праздники (красные). Снижение на все выходные и на все праздники.
Рисунок 4. Потребление электроэнергии каждый месяц как отдельный аспект.
Мы могли бы пойти еще дальше и проверить почасовое представление данных. На рис. 5 показана агрегированная коробчатая диаграмма для каждого часа. Также наблюдается уменьшение ночного времени (21:00-06:00) и увеличение дневного/рабочего времени (06:00-21:00). Также выкройка, которую необходимо включить в модель.
Рисунок 5. Совокупные почасовые данные о энергопотреблении.
Давайте поговорим о буднях. Как и предполагалось, в выходные энергопотребление уменьшится. «Дурхшнитт» — это среднее. На рисунке 6 показаны все будние дни (агрегированные) за разные годы. В выходные дни наблюдается снижение мощности примерно на 10 000 МВт.
Рисунок 6. Потребляемая мощность в зависимости от дня недели.
На рисунке 8 показан эффект праздника. «Дурхшнитт» — это среднее энергопотребление за годы. Потребление электроэнергии в «Рабочие дни» (темно-серый) значительно увеличивается по сравнению с праздничными (красный). Мы могли бы предположить, что праздники действуют как выходные для потребления энергии».
Рисунок 6. Потребляемая мощность «эффект отпуска»
На рисунке 7 показано различное поведение в разные дни. Есть 4 категории. «Feiertag Kein Wochenende» означает праздник, а не выходные. «Feiertag Wochenende» означает праздник и выходные дни. «Kein Feiertag Kein Wochenende» означает, что это обычный рабочий день, а «Kein Feiertag Wochenende» означает, что это просто выходные. Аналогичные распределения мы можем наблюдать и для нерегулярных рабочих дней, как предполагалось.
Рис. 7. Сравнение энергопотребления «Различные эффекты»
Запаздывающие значения, такие как MeanLastTwoDays, MeanLastWeek, MaxLastOneDay и MinLastOneDay, являются сгенерированными объектами.
Аналогично обсуждаемому в DOI: 10.1109/TPWRS.2011.2162082 – Краткосрочное прогнозирование нагрузки на основе полупараметрической аддитивной модели.
Цифры 8-11 (красным цветом обозначены нерабочие дни) представляют значения с задержкой относительно фактического энергопотребления.
Существует небольшая корреляция между этими сгенерированными функциями.
# Check Correlation
cor <- cor(cleaned_power_consum[sapply(cleaned_power_consum, is.numeric)], method = c("pearson", "kendall", "spearman"), use = "complete.obs")
Особенность | Корреляция с PowerConsum |
---|---|
ПраздникСглаженный | -0,556194 |
Среднее значение на прошлой неделе | 0,389044 |
Среднее значениеLastTwoDays | 0,201253 |
MaxLastOneDay | 0,320193 |
MinLastOneDay | 0,348583 |
Рис. 8. Энергопотребление — MeanLastTwoDays
Рис. 9. Энергопотребление — MeanLastWeek
Рис. 10. Энергопотребление — MaxLastOneDay
Рис. 11. Энергопотребление — MinLastOneDay
Существует сложная сезонность. Для почасового разрешения существует годовая, еженедельная и ежедневная сезонность. Что необходимо отслеживать по модели. Решение здесь описано в главе 12.1 «Прогнозирование: принципы и практика». Комплексная сезонность: использовать термины Фурье для представления и объединения с помощью cos() и sin() сложной сезонности.
Мы можем взглянуть на графики ACF и PACF небольшими глазами: здесь есть несколько значительных пиков, но это всего лишь представление 96 значений с запаздыванием. Если мы возьмем около 9000 наблюдений с отставанием за год, то возникнет сложная сезонность. Вот почему проще использовать член Фурье. Также не удалось просто найти компоненты PDQ и pdq по
ARIMA(...
stepwise=FALSE,
greedy=FALSE,
approx=FALSE)
сам. Кроме того, время обучения резко увеличивается без членов Фурье.
Рис. 12. Энергопотребление — ACF PACF График необработанного энергопотребления
Лучшее сочетание функций, найденное в этой работе:
Для сравнения моделей мы используем метрики MAE и MAPE. SMARD — это модель Bundesnetzagentur со страницы SMARD. Модель Prophet также была опробована, показала себя неплохо, но недостаточно хорошо.
Прогнозируемые значения SMARD достигли MAPE 3,6%. <- НЕ В ЭТОМ ИЗУЧЕНИИ.
Данные обучения:
Лучшая модель, найденная на данный момент: LHM + DHR (модель линейной гармоники + динамическая гармоническая регрессия)
Идея состоит в том, чтобы объединить линейную модель с моделью ARIMA. Потому что модели ARIMA было сложно работать с фиктивными переменными для праздников. Вот и выручила ансамблевая модель.
train_power_consum <- cleaned_power_consum |>
filter(year(DateIndex) > 2020 & (year(DateIndex) < 2024))
generate_models(model_name = "model/mean_naive_drift",
train_power_consum = train_power_consum)
train_power_consum_v5 <- train_power_consum |>
mutate(HolidaySmoothed = Holiday + sin(2 * pi * (as.numeric(Hour)+1) / 24))
holiday_effect_model <- lm(
PowerConsum ~
HolidaySmoothed,
data = train_power_consum_v5
)
saveRDS(holiday_effect_model, file = "ensemble_model/version_5/holiday_effect_2021_2023.rds")
train_power_consum_v5$Residuals <- residuals(holiday_effect_model)
fit <- train_power_consum_v5 |>
model(
ARIMA = ARIMA(Residuals ~
PDQ(0,0,0)
+ pdq(d=0)
+ MeanLastWeek
+ WorkDay
+ EndOfTheYear # new
+ FirstWeekOfTheYear # new
+ MeanLastTwoDays
+ MaxLastOneDay
+ MinLastOneDay
+ fourier(period = "day", K = 6)
+ fourier(period = "week", K = 7)
+ fourier(period = "year", K = 3)
)
)
saveRDS(fit, file = "ensemble_model/version_5/arima_2021_2023.rds")
Мы могли визуализировать эффект и то, как работает модель. На рисунке 13 показана идея этой модели. Прежде всего мы подгоняем модель LHM и вычисляем остатки. Обучите модель DHR по остаткам и просуммируйте их. Это своего рода зеркало на LHM и возвращает значения наверх.
Для модели LHM мы используем здесь простой подход: синусоидальную кривую, которая повторяется каждые 24 часа и уменьшается или увеличивается в праздничные или рабочие дни.
Прогнозируя LHM на новых данных, мы можем спрогнозировать остатки для новых данных. Остатки + LHM смещают значения обратно в «правильное» положение.
Рисунок 13. Представление модели LHM + DHR.
ensembled_fc <- load_ensembled_models(
days_to_forecast = 40,
months_to_forecast = 6,
year_to_forecast = 2024,
starting_month = 1,
real_data = cleaned_power_consum,
smard_fc = cleaned_smard_pred,
model_path = "ensemble_model"
)
all_forecasts_ensembled <- ensembled_fc$all_forecasts
raw_fc_ensembled <- ensembled_fc$raw_forecasts
fc <- load_all_model_results(
days_to_forecast = 40,
months_to_forecast = 6,
year_to_forecast = 2024,
starting_month = 1,
smard_fc = cleaned_smard_pred,
real_data = cleaned_power_consum
)
all_forecasts <- fc$combined_forecasts
raw_fc <- fc$raw_forecasts
metric_results <- calculate_metrics(fc_data = all_forecasts, fc_data_ensembled=all_forecasts_ensembled)
# Plot best Model for single Models
name_of_best_model_for_single_model <- plot_forecast(
all_forecasts = all_forecasts,
metric_results = metric_results,
cleaned_power_consum = cleaned_power_consum,
raw_fc = raw_fc,
month_to_plot = 1,
days_to_plot = 40
)
# Plot best Model for ensembled Models
name_of_best_model_ensembled <- plot_forecast_ensembled(
all_forecasts = all_forecasts_ensembled,
metric_results = metric_results,
cleaned_power_consum = cleaned_power_consum,
month_to_plot = 1,
days_to_plot = 40
)
# Residuals Compared with SMARD
plot_compare_with_smard(
all_forecasts = all_forecasts_ensembled,
name_of_best_model = name_of_best_model_ensembled
)
# LHM DHM representation
plot_representation_of_lhm_dhm_components(path_dhm = "ensemble_model/version_5/arima_2021_2023.rds",
path_lhm = "ensemble_model/version_5/holiday_effect_2021_2023.rds",
from_month = 1,
to_month = 1,
raw_fc_ensembled = raw_fc_ensembled)
Твердый балл MAPE 3,8% для версии_5 (модель LHM + DHR).
Давайте посмотрим глубже, если бы мы использовали только модель ARIMA (arima_14). На рисунке 14 представлены результаты для этой модели. Мы можем видеть праздники (оранжевый), выходные (красный) и обычный день (синий). Имеются значительные выбросы для праздников, хотя для модели ARIMA существовала фиктивная переменная, которая не могла правильно отследить праздники.
Рисунок 14. Прогноз и фактические значения ARIMA (DHR, arima_14) в виде единой модели.
С другой стороны, модель LHM + DHR показывает лучшие результаты в праздничные дни. Рисунок 15 представляет это.
Рисунок 15. Прогноз и фактические значения LHM + DHR, ансамблевая модель
На рисунке 16 представлен прогноз на январь 2024 года. Он выглядит обоснованным.
Рисунок 16. Прогноз и фактические значения LHM + DHR на январь 2024 г.
Также остатки модели по сравнению с моделью SMARD выглядят нормально. Есть несколько всплесков, которые могут быть значительными и которые можно лучше подготовить с помощью моделирования. Но в целом хороший результат.
Рисунок 17 Остатки LHM + DHR за январь – июль 2024 г.
Рисунок 18 Остатки LHM + DHR за январь – июль 2024 г.
Индекс | Название модели | RMSE | МАПЭ | МАЭ | Ансамбль |
---|---|---|---|---|---|
2 | Реальные наблюдения | 0,000 | 0,000000 | 0,000 | истинный |
3 | СМАРД | 2480,693 | 3.602140 | 1869.466 | ЛОЖЬ |
4 | СМАРД | 2480,693 | 3.602140 | 1869,466 | истинный |
5 | версия_5 | 2626,807 | 3,816012 | 1937.670 | истинный |
6 | версия_0 | 2613.258 | 3,846888 | 1946.314 | истинный |
7 | версия_7 | 2770,359 | 4.107272 | 2076.045 | истинный |
8 | версия_8 | 2775.441 | 4,146788 | 2091.153 | истинный |
9 | версия_9 | 2887.179 | 4.177841 | 2100.381 | истинный |
10 | версия_6 | 2906.242 | 4.216517 | 2142.092 | истинный |
11 | arima_14_2021_2023.rds | 3208,735 | 4,389492 | 2207.395 | ЛОЖЬ |
12 | arima_18_2021_2023.rds | 3208,735 | 4,389492 | 2207.395 | ЛОЖЬ |
13 | версия_4 | 2875,929 | 4.535388 | 2255,645 | истинный |
14 | версия_2 | 2905.990 | 4.580770 | 2279,624 | истинный |
15 | arima_9_2021_2023.rds | 3267.160 | 4.611857 | 2302.918 | ЛОЖЬ |
16 | arima_2_2021_2023.rds | 3251,390 | 4.614028 | 2301.447 | ЛОЖЬ |
17 | arima_4_2021_2023.rds | 3251,390 | 4.614028 | 2301.447 | ЛОЖЬ |
18 | arima_5_2021_2023.rds | 3251,390 | 4.614028 | 2301.447 | ЛОЖЬ |
19 | arima_13_2021_2023.rds | 3283,745 | 4,619636 | 2307.415 | ЛОЖЬ |
20 | arima_10_2021_2023.rds | 3265,913 | 4.625508 | 2314.395 | ЛОЖЬ |
21 | arima_0_2021_2023.rds | 3269.009 | 4,645944 | 2317.138 | ЛОЖЬ |
22 | arima_17_2021_2023.rds | 3269.009 | 4,645944 | 2317.138 | ЛОЖЬ |
23 | arima_16_2021_2023.rds | 3298,902 | 4,673116 | 2334,857 | ЛОЖЬ |
24 | arima_1_2021_2023.rds | 3312.429 | 4,696342 | 2340.193 | ЛОЖЬ |
24 | Prophet_0_2021_2023.rds | 3044,849 | 4.711527 | 2435.572 | ЛОЖЬ |
25 | arima_8_2021_2023.rds | 3332.217 | 4,716612 | 2358.085 | ЛОЖЬ |
26 | arima_11_2021_2023.rds | 3358.020 | 4,758970 | 2388,791 | ЛОЖЬ |
27 | arima_12_2021_2023.rds | 3430.191 | 5.022772 | 2495.067 | ЛОЖЬ |
28 | arima_7_2021_2023.rds | 3475,671 | 5.049287 | 2510.903 | ЛОЖЬ |
29 | версия_3 | 3546,729 | 5.064654 | 2570.530 | истинный |
30 | arima_15_2021_2023.rds | 3734,584 | 5.165147 | 2606,661 | ЛОЖЬ |
31 | arima_6_2021_2023.rds | 3748,583 | 5,375326 | 2723,837 | ЛОЖЬ |
32 | версия_1 | 4495,568 | 6,483477 | 3229,647 | истинный |
33 | arima_3_2021_2023.rds | 4558,982 | 6,953247 | 3453,387 | ЛОЖЬ |
34 | tslm_0_2021_2023.rds | 6760,994 | 11.189119 | 5694,949 | ЛОЖЬ |
35 | среднее_2021_2023.rds | 9489.303 | 16.406032 | 8101.476 | ЛОЖЬ |
36 | naive_2021_2023.rds | 14699.338 | 20,797370 | 12130.587 | ЛОЖЬ |
37 | дрифт_2021_2023.rds | 14763,692 | 20.917883 | 12200.002 | ЛОЖЬ |
ПРИМЕЧАНИЕ:
Проверьте example/ensemble_model_2022_forecast или example/ensemble_model_2023_forecast.
Мы могли бы включить больше факторов, таких как: