Оценка точности прогнозов для несезонных методов
В науке о данных обучающая выборка — это набор данных, используемый для выявления возможных зависимостей. Тестовая выборка — это набор данных, используемый для проверки силы этих зависимостей. При разделении данных на две части обычно большую долю отводят под обучение, а меньшую — под тестирование.
Для создания обучающей и тестовой выборок можно использовать функцию subset(), которая возвращает подмножество временного ряда. Необязательные аргументы start и end задают диапазон с помощью индексных значений.
> # x — числовой вектор или временной ряд
> # Выбор наблюдений с 101 по 500
> train <- subset(x, start = 101, end = 500, ...)
> # Выбор первых 500 наблюдений
> train <- subset(x, end = 500, ...)
Как вы видели в видео, функция accuracy() вычисляет различные показатели точности прогнозов на основе прогнозных и фактических значений. Она достаточно умна, чтобы самостоятельно найти нужные наблюдения, даже если вы передаёте ей больше данных, чем охватывает прогноз.
> # f — объект класса "forecast"
> # x — числовой вектор или временной ряд
> accuracy(f, x, ...)
Среди показателей точности присутствует корень из среднеквадратичной ошибки (RMSE) — квадратный корень из среднеквадратичной ошибки (MSE). Минимизация RMSE, которая соответствует повышению точности, равносильна минимизации MSE.
Заранее загруженный временной ряд gold содержит ежедневные цены на золото за 1108 дней. В этом упражнении вы используете первые 1000 дней как обучающую выборку и построите прогнозы для оставшихся 108 дней. Прогнозы будут сравниваться с фактическими значениями с помощью простых функций прогнозирования: naive(), с которой вы уже работали в этой главе, и meanf(), возвращающей прогнозы, равные среднему всех наблюдений. Для обеих функций потребуется задать параметр h, указывающий количество прогнозируемых значений.
Это упражнение является частью курса
Прогнозирование в R
Инструкции к упражнению
- С помощью
subset()создайте обучающую выборку дляgold, включающую первые 1000 наблюдений. Присвойте её переменнойtrain. - Вычислите прогнозы для тестовой выборки, содержащей оставшиеся данные, с помощью
naive()и сохраните результат вnaive_fc. Задайте значениеhсоответствующим образом. - Теперь вычислите прогнозы для той же тестовой выборки с помощью
meanf()и сохраните результат вmean_fc. Задайте значениеhсоответствующим образом. - Сравните показатели точности двух методов с помощью функции
accuracy(). - На основе полученных результатов сохраните прогнозы с более высокой точностью в переменную
bestforecasts.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Create the training data as train
train <- subset(___, end = ___)
# Compute naive forecasts and save to naive_fc
naive_fc <- naive(___, h = ___)
# Compute mean forecasts and save to mean_fc
mean_fc <- meanf(___, h = ___)
# Use accuracy() to compute RMSE statistics
accuracy(___, gold)
___(___, gold)
# Assign one of the two forecasts as bestforecasts
bestforecasts <- ___