Оценка прогнозируемости временных рядов


11

Предположим, у меня чуть более 20 000 месячных временных рядов, охватывающих период с января 2005 года по декабрь 2011 года. Каждый из них представляет глобальные данные о продажах для другого продукта. Что, если вместо вычисления прогнозов для каждого из них я хотел бы сосредоточиться только на небольшом количестве продуктов, которые «действительно имеют значение»?

Я мог бы ранжировать эти продукты по общему годовому доходу и урезать список с помощью классического Парето. Тем не менее, мне кажется, что, хотя они не вносят большой вклад в практический результат, некоторые продукты настолько легко предсказать, что их исключение будет плохим суждением. Продукт, который продавался по 50 долларов в месяц в течение последних 10 лет, может показаться не таким уж большим, но для создания прогнозов о будущих продажах требуется так мало усилий, что я с таким же успехом могу это сделать.

Допустим, я делю свои продукты на четыре категории: высокий доход / легко прогнозируемый - низкий доход / легко прогнозируемый - высокий доход / трудно прогнозируемый - низкий доход / трудно прогнозируемый.

Я думаю, что было бы разумно оставить позади только те временные ряды, которые относятся к четвертой группе. Но как именно я могу оценить «прогнозируемость»?

Коэффициент вариации кажется хорошей отправной точкой (я также помню, как видел какую-то статью об этом некоторое время назад). Но что, если мои временные ряды показывают сезонность / сдвиги уровней / эффекты календаря / сильные тренды?

Я полагаю, что я должен основывать свою оценку только на изменчивости случайного компонента, а не на «необработанных» данных. Или я что-то упустил?

Кто-нибудь сталкивался с подобной проблемой раньше? Как бы вы, ребята, пошли на это?

Как всегда, любая помощь очень ценится!

Ответы:


9

Вот вторая идея, основанная на ул.

Вы можете установить разложение stl для каждой серии, а затем сравнить стандартную ошибку оставшегося компонента со средним значением исходных данных, игнорируя любые неполные годы. Ряды, которые легко прогнозировать, должны иметь небольшое отношение se (остаток) к среднему значению (данные).

Причина, по которой я предлагаю игнорировать неполные годы, заключается в том, что в противном случае сезонность повлияет на среднее значение данных. В приведенном примере все серии имеют семь полных лет, так что это не проблема. Но если ряд продлится частично до 2012 года, я полагаю, что среднее значение рассчитывается только до конца 2011 года, чтобы избежать сезонного загрязнения среднего.

Эта идея предполагает, что среднее значение (данные) имеет смысл, то есть данные являются стационарными (не считая сезонности). Это, вероятно, не сработает для данных с сильными тенденциями или единичными корнями.

Это также предполагает, что хорошее соответствие stl приводит к хорошим прогнозам, но я не могу вспомнить пример, где это не было бы правдой, так что это, вероятно, нормальное предположение.


Привет, Роб, спасибо, что вернулся ко мне. Мне нравится ваша идея, поэтому я попробую и посмотрю, обеспечивает ли она желаемый уровень фильтрации. Еще одна вещь, есть ли какая-то конкретная причина для использования среднего (данных) над средним (остаток)? Боюсь, что некоторые из моих временных рядов могут иметь довольно сильную тенденцию. Разложенные серии STL, вместо этого, не должны. Кроме того, считаете ли вы, что подход, который мы излагали до сих пор для оценки прогнозируемости / выявления выбросов, достаточно хорош, чтобы быть реализованным в реальной деловой среде? Или это тоже "любительское"? Вы бы поступили как-то иначе?
Брудер

среднее (остаток) будет близко к нулю. Вы хотите сравнить шум с масштабом данных, поэтому среднее (данные) должно быть в порядке. Не уверен, как бороться с вашими тенденциями. Я бы тщательно протестировал подход на ряде данных, прежде чем верить результатам.
Роб Хиндман

8

Это довольно распространенная проблема в прогнозировании. Традиционное решение состоит в том, чтобы вычислять средние абсолютные процентные ошибки (MAPE) для каждого элемента. Чем ниже КАРТА, тем легче прогнозировать предмет.

Одна из проблем заключается в том, что многие серии содержат нулевые значения, а затем MAPE не определено.

yttT

Q=1T12t=13T|ytyt12|,
qt=(yty^t)/Qy^tyth

Ряды, которые легко прогнозировать, должны иметь низкие значения MASE. Здесь «легкий прогноз» интерпретируется относительно сезонного наивного прогноза. В некоторых случаях может иметь смысл использовать альтернативную базовую меру для масштабирования результатов.


Привет, Роб, спасибо за твой добрый ответ. Как всегда, ваш подход очень аккуратный, простой и разумный. Я уже оцениваю прогнозную добавленную стоимость ( FTV ) в сравнении с сезонной наивной моделью, поэтому ваша идея оценки прогнозируемости с использованием той же «базовой меры» звучит очень привлекательно. Единственная проблема заключается в том, что для расчета MASE мне нужно выбрать метод прогнозирования и запустить симуляции для каждого из моих 20000 временных рядов. Я надеялся, что смогу заранее определить ряды для прогнозирования, чтобы сэкономить время вычислений.
Брудер

По некоторым причинам я думал, что временные ряды с более низкой относительной изменчивостью (то есть CV) обязательно приведут к более легким и более точным прогнозам. Расчет прогнозов, а затем, и только потом, ошибок измерения, кажется, бросает вызов моей смелости. Я думаю, что я пытаюсь сказать, что я смотрю на MASE больше как меру точности прогноза, чем мера прогнозируемости. Но я могу ошибаться ... :)
Брудер

1
@Bruder: 2 мысли: 1. Вы можете посмотреть на простой наивный прогноз, а не на сезонный прогноз. Простой наивный прогноз просто использует предыдущее значение временного ряда и обнаружит сильный тренд (с задержкой в ​​1 период). 2. Разложение STL - хорошая идея. Если остатки очень малы по сравнению с сезонными и трендовыми компонентами, вы, вероятно, можете легко спрогнозировать ряд.
Зак

1
@Rob - как насчет разложения STL? Могу ли я получить двух зайцев одним выстрелом (т.е. определить выбросы и оценить прогнозируемость, следовательно, оценить «истинную» прогнозируемость)? Меня поражает, сколько всего я могу достичь, используя только STL и сезонную наивную модель. Но вы знаете, что происходит, когда все слишком хорошо, чтобы быть правдой ...
Брудер

1
ti

5

pn

Ω(xt)

Но, возможно, вы можете попытаться использовать меру MASE, предложенную Робом, чтобы сделать грубое разделение сетки на 20000 в нескольких подгруппах, а затем применить ForeCA к каждой в отдельности.


0

Этот ответ очень поздно, но для тех, кто все еще ищет подходящую меру прогнозируемости для временных рядов спроса на продукцию, я настоятельно рекомендую рассмотреть приблизительную энтропию .

Наличие повторяющихся паттернов колебаний во временных рядах делает его более предсказуемым, чем временные ряды, в которых такие паттерны отсутствуют. ApEn отражает вероятность того, что аналогичные схемы наблюдений не будут сопровождаться дополнительными аналогичными наблюдениями. [7] Временной ряд, содержащий много повторяющихся паттернов, имеет относительно маленький ApEn; менее предсказуемый процесс имеет более высокий ApEn.

Спрос на продукцию, как правило, имеет очень сильный сезонный компонент, что делает коэффициент вариации (CV) неуместным. ApEn (m, r) может правильно с этим справиться. В моем случае, поскольку мои данные имеют тенденцию к сильной еженедельной сезонности, я установил параметры m = 7 и r = 0,2 * std, как рекомендовано здесь .


u

uu
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.