Мы используем STL (R реализация) для прогнозирования данных временных рядов.
Каждый день мы запускаем ежедневные прогнозы. Мы хотели бы сравнить прогнозные значения с реальными значениями и определить среднее отклонение. Например, мы запустили прогноз на завтра и получили прогнозные баллы, мы хотели бы сравнить эти прогнозные баллы с реальными данными, которые мы получим завтра. Мне известно, что прогнозные значения и реальные данные могут не совпадать в большинстве случаев, и это одна из причин, по которой мы хотели бы отслеживать, насколько точны мы каждый день.
Сейчас мы пытаемся определить, каков наилучший подход к решению этой проблемы? любые указатели помощи будут оценены.
Я посмотрел на вопрос измерения точности прогноза , но, похоже, он связан со сравнением моделей, а не с расчетом точности с реальными значениями.
Я посмотрел на реализацию функции точности в R , но перепутал два вопроса:
1) Будет ли это работать на реальных данных по сравнению с прогнозными данными, потому что большая часть учебника говорит как «тестовые данные» против «прогнозных данных»
2) Кажется, что из-за точности функция является массивом значений, а не% отклонения.
Ответы:
Существует много разных способов измерения точности прогноза, и
accuracy()
функция из пакета прогноза для R выводит несколько из них. Из вашего комментария о «% отклонения» кажется, что вы хотите использовать Среднее абсолютное процентное отклонение, что является одним из показателей, предоставляемыхaccuracy()
. Наиболее распространенные меры точности прогноза обсуждаются здесь . Вы можете подумать о том, является ли MAPE наиболее подходящей мерой для вашей проблемы, или же одна из других мер лучше.accuracy()
Функция делает работу на реальных данных. «Тестовые данные» - это те данные, которые не использовались для построения прогнозов. Иногда они доступны, но не используются при вычислении прогнозов (классическое разделение данных на обучающие и тестовые наборы). В других ситуациях все доступные данные используются для расчета прогнозов, и тогда вам нужно подождать, пока в будущем появятся некоторые наблюдения, которые можно использовать в качестве тестовых данных.Так что, если
f
вектор прогнозов иx
вектор наблюдений, соответствующих тем же временам, тобудет делать то, что вы хотите.
источник
источник
Я делал это в R, вот мой код для моих данных как для выборочных, так и для выборочных данных:
Надеюсь это немного поможет. если вы хотите, чтобы мой полный код я использовал для запуска этого, пожалуйста, спросите, так как это очень простой
источник
Краткий ответ: чтобы оценить качество ваших прогнозов, используйте точно такой же показатель, который вы использовали при обучении (подборе) вашей модели.
Длинный ответ:
Чтобы выбрать показатель точности ваших прогнозов, вам прежде всего необходимо знать, как вы интерпретируете свои прогнозы. Другими словами, что вы на самом деле даете в качестве «прогноза»? Это среднее значение? Медиана? Наиболее вероятное значение? Ответ на этот вопрос будет однозначно определять меру точности прогноза. Если вы прогнозируете среднее значение, вы должны использовать среднеквадратичное отклонение в качестве меры точности прогноза. Если вы прогнозируете медиану, вы должны использовать среднее абсолютное отклонение в качестве меры точности.
Я немного уточню этот момент. Давайте предположим, что вы делаете прогноз / прогноз на завтра. Предположим также, что для любого значения, которое вы можете наблюдать завтра, у вас есть соответствующая вероятность для наблюдения. Например, вы знаете, что вы можете наблюдать 1 с вероятностью 0,03, 2 с вероятностью 0,07, 3 с вероятностью 0,11 и так далее. Итак, у вас есть распределение вероятностей по разным значениям. Имея это распределение, вы можете рассчитать различные свойства и предоставить их в качестве «прогнозов». Вы можете рассчитать среднее значение и дать его в качестве прогноза на завтра. В качестве альтернативы вы можете использовать медиану в качестве прогноза. Вы также можете найти наиболее вероятное значение и дать его в качестве прогноза на завтра.
Если вы используете среднее значение в качестве прогноза, тогда вопрос «как измерить точность моего прогноза» должен быть заменен на «какова мера точности среднего», а ответ - «среднеквадратичное отклонение между реальные ценности и прогноз ». Если вы используете медиану в качестве прогноза, вы должны использовать среднее абсолютное отклонение.
Возможно, вы не знаете, используете ли вы медиану или среднее значение или что-то еще. Чтобы узнать, что вы на самом деле используете в качестве прогнозов, вы должны знать, какую меру вы пытаетесь минимизировать на тренинге. Если вы попытаетесь найти параметры модели, которые минимизируют среднеквадратичное отклонение между прогнозами и целевыми значениями из обучающих данных, тогда ваши прогнозы должны рассматриваться как среднее. Если вы минимизируете абсолютные отклонения, то вы тренируете свою модель для обеспечения медианы и так далее.
ADDED
Я хотел бы подчеркнуть одну вещь. Как я уже упоминал выше, важно сохранять одинаковую меру точности при «подгонке» и при «прогнозировании». В дополнение к этому я хотел бы сказать, что вы абсолютно свободны в выборе ваших мер. Нет никаких «лучших» или «худших» мер. Мера должна определяться тем, как вы (или ваш клиент) используете свои прогнозы. Например, может быть очень важно (для вас или вашего клиента) иметь точное совпадение, и, если у вас его нет, оно не играет никакой роли, если разница между действительными и прогнозируемыми значениями велика или мала. В других случаях эта разница играет роль. Разница 1 лучше, чем разница 2. В некоторых случаях разница 2 в 2 раза хуже, чем разница 1. В других случаях разница, равная 2, в 100 раз хуже, чем разница, равная 1. Вы также можете представить себе экзотические случаи, когда вам нужно сгенерировать значение, отличное от наблюдений. Таким образом, показатель качества генерируемых вами чисел может быть любым, в зависимости от того, что вам нужно. Что важно, так это использовать одну и ту же меру при обучении (подгонке) и оценке прогнозов.
источник