Я работаю со следующими наборами данных, содержащими почасовые данные о ценах за 1 год:
- Обучение (данные с 00:00 01.01.2014 до 23:00 31.12.2014)
- Тест (данные с 00:00 01.01.2015 по 23:00 31.12.2015)
Я хочу использовать набор обучающих данных для соответствия модели и выполнения почасовое прогнозирование цен на сутки вперед на 2015 год с обновлением набора обучающих данных для включения новых доступных почасовых данных о ценах на каждый день. Наконец, я хочу сравнить прогнозы с фактическими значениями в моем тестовом наборе.
Для начала я хочу использовать метод snaive
(Seasonal Naive) из пакета forecast
в R, чтобы установить эталон. .
Поскольку определение моей проблемы - прогнозирование цен на сутки вперед, я хочу выполнять прогнозы в следующей последовательности:
- Обучите модель на всем наборе обучающих данных (содержащих почасовые информация о ценах с 00:00 01.01.2014 до 23:00 31.12.2014)
- Используйте модель для одношагового прогноза на следующие 24 часа (т.е. цены на 2015-01 -01 00: 00-23: 00)
- Сохранение прогнозов в матрице
Predictions
- Обновите обучающий набор, включив в него 24 фактические почасовые значения цен 2015-01-01 00: 00-23: 00
- Переобучить модель на этом новом наборе обучающих данных (на этот раз с почасовой информацией о ценах с 00:00 01.01.2014 до 01.01.2015 23 : 00)
- Используйте новую модель для выполнения одноэтапного прогноза на следующие 24 часа (т. Е. цены на 02.01.2015 00: 00-23: 00)
- Сохранение прогнозов в матрице
Predictions
- [...]
Повторяйте вышеуказанное до тех пор, пока все прогнозы до 2015-12-31 00: 00-23: 00 не будут завершены и сохранены в матрице Predictions
Измерьте точность прогноза по сравнению с данными испытаний .
Я предполагаю, что в этом случае будет работать a for l oop, однако я с треском проваливаю попытки получить рабочий l oop, который выполняет желаемую последовательность операции.
Любая помощь в создании рабочего l oop будет принята с благодарностью!
Последующий вопрос будет заключаться в том, является ли al oop наиболее эффективным способом достижения моих желаемых результатов. результаты?
Спасибо! BalysLTU
РЕДАКТИРОВАТЬ: Я поделился наборами данных в папке Google Диска здесь .
То, что я пытаюсь сделать, будет примерно таким:
# Reading/cleaning data #
df.elspot.prices.2014 <- as.data.frame(
read_excel(paste0(dirDataPrices, "elspot-prices_2014_hourly_eur.xlsx"), skip = 2)
)
df.elspot.prices.2015 <- as.data.frame(
read_excel(paste0(dirDataPrices, "elspot-prices_2015_hourly_eur.xlsx"), skip = 2)
# Training models and updating datasets #
df.elspot.prices.test <- rbind(df.elspot.prices.2014, df.elspot.prices.2015[0,])
msts.elspot.prices.test <- msts(df.elspot.prices.test$Price, seasonal.periods = c(24, 168), ts.frequency = 8760, start = 2014)
df.elspot.predictions.2015 <- as.data.frame(meanf(msts.elspot.prices.test, h = 24)$mean)
df.elspot.prices.test <- rbind(df.elspot.prices.2014, df.elspot.prices.2015[1:24,])
msts.elspot.prices.test <- msts(df.elspot.prices.test$Price, seasonal.periods = c(24, 168), ts.frequency = 8760, start = 2014)
df.elspot.predictions.2015 <- as.data.frame(meanf(msts.elspot.prices.test, h = 24)$mean)
df.elspot.prices.test <- rbind(df.elspot.prices.2014, df.elspot.prices.2015[1:48,])
msts.elspot.prices.test <- msts(df.elspot.prices.test$Price, seasonal.periods = c(24, 168), ts.frequency = 8760, start = 2014)
df.elspot.predictions.2015 <- as.data.frame(meanf(msts.elspot.prices.test, h = 24)$mean)
...
df.elspot.prices.test <- rbind(df.elspot.prices.2014, df.elspot.prices.2015[1:87636,])
msts.elspot.prices.test <- msts(df.elspot.prices.test$Price, seasonal.periods = c(24, 168), ts.frequency = 8760, start = 2014)
df.elspot.predictions.2015 <- as.data.frame(meanf(msts.elspot.prices.test, h = 24)$mean)