Прогнозный пакет R HoltWinters - избежание перегрузки данных

Я использую прогнозный пакет HoltWinters в R для создания прогнозов на основе данных о месячном объеме вызовов.

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

В недавнем примере, в котором изменение шага в середине устанавливает альфа на 0,94, бета на 0 и гамму на 0, что создает странный прогноз.

Month   Data
1   7082
2   6407
3   5479
4   5480
5   5896
6   6038
7   5686
8   6126
9   6280
10  6893
11  6028
12  5496
13  3569
14  3383
15  3718
16  3351
17  3340
18  3559
19  3722
20  3201
21  3494
22  2810
23  2611
24  2471
25  7756
26  6922
27  7593
28  6716
29  7278
30  7071

Это сценарий R, который я использовал

scandata <-read_csv("525-gash.csv");
pages <-scandata[,2];
myts <-ts(pages , start=c(2015, 1), frequency = 12)
myforecast <- HoltWinters (myts, seasonal ="additive", 
          optim.start = c(alpha = 0.2, beta = 0.1, gamma = 0.1));
myholt = predict(myforecast, 12 , prediction.interval = FALSE);
plot(myforecast,myholt);

Для сравнения, если я установлю параметры экспоненциального сглаживания на стандартные принятые значения - альфа как 0,2, бета как 0,1 и гамма как 0,1, я получу гораздо более привлекательный прогноз.

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

Я пытался установить пределы для автоматической подгонки так, чтобы альфа составляла от 0,1 до 0,5, гамма от 0,1 до 0,3 и гамма от 0,1 до 0,3.

https://stat.ethz.ch/R-manual/R-devel/library/stats/html/HoltWinters.html

Похоже, это должно быть возможно, установив

optim.control = list() 

функции, но я не смог найти способ успешно установить ограничения на альфа, бета и гамма, чтобы заставить это работать.

Кто-нибудь знает как это сделать?

1 ответ

Для многопараметрической оптимизации, HoltWinters использует алгоритм L-BFGS-B. Можно установить lower а также upper ограничения для всех параметров путем настройки оригинала HoltWinters функция.

Редактировать функцию:

fix(HoltWinters)

изменив строку 66 из:

в

Закройте окно и сохраните изменения (это повлияет только на этот сеанс). Запустите код, как вы делали раньше:

myforecast <- HoltWinters (myts, seasonal ="additive", 
      optim.start = c(alpha = 0.2, beta = 0.1, gamma = 0.1))
Другие вопросы по тегам